기타

기타/Huggingface

모델 레이어 수정

허깅페이스 transformers 라이브러리로 불러온 모델에 대해 약간의 수정이 필요한 경우가 있습니다. 저 같은 경우에는 diffusers의 controlnet의 조건부 이미지 입력값을 더 키워서 다양한 조건을 한번에 입력받게끔 테스트를 진행하고 있는데요. 간단하게 in_channels를 수정하면 될 줄 알았는데 모델 레이어 전체를 바꿔야만 에러 없이 돌아가는 걸 확인하여 까먹지 않고자 정리해봅니다.정리 중에 생각해보니까 in_channels만 수정한다고 weight가 생기지는 않을테니 당연한 내용이었네요. 간단하게 파라미터만 수정하는 경우아래와 같이 컨트롤넷을 정의하고 조건부 이미지 입력값만 변경해보겠습니다.controlnet = ControlNetModel()controlnet.controlnet_..

기타/Git

[Git] Git Author 변경하기 및 레포지토리마다 다르게 변경하기

Github 작업을 진행하다보면 커밋 로그를 작성하는 Author를 변경해야 할 필요성을 느낄 때가 있습니다. 일반적으로는 커밋을 올리는 로컬 컴퓨터의 사용자 정보가 Author로 잡히게 되어서 나의 깃헙 계정 등으로 변경하고 싶을 때가 생기는데요. 어떻게 변경할 수 있는지에 대해 간단하게 정리하고자 합니다. Git Author 변경하기 Author는 간단하게 변경이 가능합니다 git config에서 user.name과 user.email을 변경하면 되는데요. 전역적으로 변경하는 방법에 대해 먼저 정리해보도록 하겠습니다. —-global 옵션을 추가하여 다음과 같은 명령어를 커맨드창에서 실행하면 됩니다. git config --global user.name 변경하고싶은이름 git config --glob..

기타/Huggingface

[datasets] Dataset cache

HuggingFace의 datasets 라이브러리를 사용하여 데이터셋을 저장하고 사용하다보면 이상하게 디렉토리의 저장 용량이 점점 커지는 경우를 보실 수 있습니다. 이러한 이유는 데이터셋에 캐시 파일이 남아있기 때문입니다. 위의 사진처럼 cache-*.arrow 파일로 캐시가 떨어지게 되는데요. 여러가지 처리를 테스트하다보면 너무 많은 캐시가 쌓일 때가 있어서 가끔씩 지워줘야합니다. 직접 손으로 삭제해도 되지만, 코드 상에서도 간단하게 삭제할 수 있습니다. 데이터셋 객체에 대해 .cleanup_cache_files() 메서드를 사용하여 제거하시면 됩니다. dataset.cleanup_cache_files() 캐시를 비활성화하거나, 로드부터 메모리를 다 쓰는 방법 등은 공식 페이지에서 추가로 확인할 수 있..

기타

Tensorflow, Keras to TFJS 컨버팅

Tensorflow 2 TFJS 자바스크립트에서 텐서플로우 모델을 사용하기 위해서는 TensorflowJS 에 맞는 형태로 Tensorflow 모델을 변형해야 합니다. TFJS는 tfjs-react-native등 웹 뿐만 아니라 react-native에서도 사용 가능한 라이브러리라는 장점이 있습니다. 자세한 내용은 위 tensorflow/tfjs-converter 페이지에서 확인할 수 있습니다. 저는 몇 가지 예시를 간략하게 정리해두고자 합니다. Abstract Tensorflow 모델은 보통 .h5로 저장되는 형식과 .pb가 안에 있는 디렉토리 형식으로 저장이 됩니다. .h5 파일의 경우 Keras 모델이라고 이해하시면 됩니다. 즉 model.fit() summary() 등의 메서드가 가능한 케라스 모..

기타/Airflow

[Airflow] Airflow Executor 변경을 통한 Task 병렬화

에어플로우에서는 간단하게 파이프라인을 병렬 구조로 구현할 수 있습니다. 예시로 병렬 파이프라인을 하나 만들어 보도록 하겠습니다. t1 >> [t2, t3] t2 >> t4 t3 >> t5 task의 간단한 연결 만으로도 파이프라인 구조를 병렬로 구현하는 것을 확인할 수 있습니다. 다만 구조 자체는 병렬이지만, 어떠한 변경 없이는 이 task들은 하기 이미지처럼 순차적으로 처리가 됩니다. 이미지를 보시면 extract\_1, extract\_2가 병렬로 실행되어야 할 것 같지만, 1이 끝난 후 처리가 시작되는 것을 확인할 수 있습니다. savedb\_1은 extract\_2가 끝나야 실행됩니다. 이 현상이 발생하는 이유는 Executor의 설정 때문입니다. Executor는 작업 방법을 정하는 역할을 하는..

기타/Airflow

[Airflow] Airflow PostgreSQL DB 변경(For LocalExecutor)

Airflow의 메타데이터를 관리하는 DB는 기본적으로 sqlite로 설치가 되어 있습니다. 다만 에어플로우는 테스트 환경에서만 sqlite를 사용하고, 실 운영시에는 다른 DB를 사용하기를 권장하고 있습니다. 또한 에어플로우의 Defalut Executor는 Sequential Executor입니다. 이를 Local Executor 등으로 변경하기 위해서는 sqlite 외의 DB를 사용해야만 하기 때문에, 에어플로우를 사용하고자 한다면 sqlite를 변경하는 것이 좋다고 판단됩니다. 따라서 이번 게시물에서는 에어플로우에서 기존 DB인 sqlite를 postgresql로 변경하는 방법에 대해 알아보고자 합니다. 환경 테스트한 환경은 다음과 같습니다. OS : Ubuntu 18.04 DB : Postgre..

기타/Airflow

[Airflow] Airflow Slack Message 알림

패키지 설치 Airflow 작업 결과를 슬랙으로 받아보도록 하겠습니다. 우선 에어플로우가 설치된 가상환경에서 해당 패키지를 설치합니다. pip install slack_sdk 슬랙에서 APP 생성 https://api.slack.com/ 에 접속하면 앱을 생성할 수 있습니다. 앱 이름은 나중에 변경할 수 있습니다. 사용하고자 하는 워크스페이스를 설정한 후 앱을 생성합니다. 앱을 생성한 후 설정 페이지에서 좌측 중단 Feature - OAuth & Permissions를 클릭합니다. 중단 Scopes에서 chat:write 옵션을 추가합니다. 앱은 해당 옵션을 통해 메세지를 보낼 권한을 얻을 수 있습니다. 이후에는 상단의 OAuth Tokens for Your Workspace에서 Install to Wo..

기타/Airflow

[Airflow] Airflow 기본 사용 방법

데이터 수집 및 적재, 데이터 분석 등을 파이프라인으로 구현해주는 에어플로우 사용 방법에 대해 정리해보도록 하겠습니다. 설치 우선 에어플로우 설치를 진행합니다. M1, M2를 사용하는 맥북의 경우 아래 방식으로 설치를 진행합니다. https://airflow.apache.org/docs/apache-airflow/stable/installation/index.html pip install apache-airflow # MAC # 환경에 맞춰 파라미터 변경 # AIRFLOW_VERSION은 latest 가능 pip install "apache-airflow[celery]==2.4.0" --constraint "" # 예시 pip install "apache-airflow[celery]==2.4.0" --c..

기타/Airflow

[Airflow] Airflow 실행, 생성, Kill 코드

앞으로 에어플로우에 대해서 4가지 정도의 게시물을 게시할 예정입니다. 다 예전에 작성했던 건데, 노션에만 있기는 좀 아까워서 이참에 블로그로 정리하려고 합니다. 이 게시물에서는 에어플로우를 사용할 때 자주 사용했던 명령어를 까먹지 않기위해 정리해두려고 합니다. # create admin role airflow users create --username admin --firstname FIRST_NAME --lastname LAST_NAME --role Admin --email admin@example.org # pkill pkill -f airflow # nohup nohup airflow webserver -p 8080 > /dev/null & nohup airflow scheduler > /dev/n..

기타

클래스 상속, super() __init()

한 클래스 내에서 다른 클래스의 코드를 사용해야 할 때, 중복으로 코딩을 할 필요 없이 해당 클래스를 상속받을 수 있는 방법으로 클래스 상속이라는 방법이 있습니다. 예시를 들어보겠습니다. 파이토치를 사용하고 있는 중에 Convolution Layer와 BatchNorm Layer, Activation Function을 연결한 하나의 블록을 만들고자 합니다. 다만 저는 어떤 곳에서는 Conv1D, 다른 곳에서는 Conv2D 또는 Conv3D를 사용해야만 합니다. 이를 각각 구현했다면 3개의 블록을 구현한 각각의 클래스에 중복되는 코드들이 존재하게 될 것입니다. 이를 상속을 통해 빠르게 구현해보도록 하겠습니다. 실습에서 보여드릴 코드는 파이토치 공식 구현 코드인데 사용자 정의 함수가 하나 있어서 미리 선언해..

새우까앙
'기타' 카테고리의 글 목록