분류 전체보기 109

conda 가상환경에서 pip 분리하기

프로젝트를 진행할 때 패키지의 버전을 독립적으로 관리하기 위해 conda 가상환경을 생성해 본 적이 있을 것이다. 새로운 가상환경을 통해 환경을 분리하면 local에서 전역으로 설치된 패키지들은 이 가상환경 내부에서 사용할 수 없어야 한다고 생각할 것이다. (적어도 나는 그렇게 생각했다...) 그러나, 새롭게 생성한 가상환경에서 pip list 명령어를 통해 설치된 패키지를 확인해 보면 local에서 pip로 설치한 패키지를 모두 확인할 수 있다. > conda create -n myenv > conda activate myenv > pip list # 전역에 설치된 패키지가 모두 표시된다. 그로 인해, 현재 가상환경에서 패키지를 설치하지 않아도 전역에 설치된 패키지가 자동으로 실행된다. 또한, cond..

AI/Trouble Shooting 2023.05.22

개체 간 관계 추출(Relation Extraction) 대회 회고

대회 개요 관계 추출 (Relation Extraction) task는 문장 내의 Subject와 Object로 표시된 두 객체간의 관계를 예측하는 task이다. sentence: 오라클(구 썬 마이크로시스템즈)에서 제공하는 자바 가상 머신 말고도 각 운영 체제 개발사가 제공하는 자바 가상 머신 및 오픈소스로 개발된 구형 버전의 온전한 자바 VM도 있으며, GNU의 GCJ나 아파치 소프트웨어 재단(ASF: Apache Software Foundation)의 하모니(Harmony)와 같은 아직은 완전하지 않지만 지속적인 오픈 소스 자바 가상 머신도 존재한다. subject_entity: 썬 마이크로시스템즈 object_entity: 오라클 relation: 단체:별칭 (org:alternate_names)..

프로젝트 회고 2023.05.21

HuggingFace Hub에 모델 업로드

문장 내 개체간 관계 추출 모델을 만들면서 TAPT(Task Adaptive Pretraining)를 적용시킨 모델을 팀원들에게 공유하고자 Hugging Face Hub에 모델을 업로드했다. 이번에 얻은 경험을 통해 Git을 활용하여 Hugging Face Hub에 모델을 업로드하는 방법을 포스팅해보려고 한다. 사전 준비 1. 패키지 설치 pip install transformers huggingface에서 제공하는 API를 활용할 수 있는 라이브러리인 transformers 패키지를 설치한다. sudo apt-get install git-lfs # Linux OS인 경우 brew install git-lfs # Mac OS인 경우 모델의 크기가 상당히 크기 때문에 대용량 파일을 git repo에 올릴 ..

AI/기타 2023.05.18

GitHub 협업 가이드 - 브랜치 전략

Git Flow 기본 브랜치로 main, hotfix, release, develop, feature 브랜치가 존재한다. 중심이 되는 브랜치는 main과 develop 브랜치이다. main 브랜치 언제든지 배포할 수 있는 코드가 존재하는 브랜치 배포용 브랜치이므로 main 브랜치에 직접 commit해서는 안된다. develop, release, hotfix 브랜치에서만 main 브랜치에 merge할 수 있다. develop 브랜치 개발이 진행된 코드를 관리하는 브랜치 develop 브랜치에서 여러 개발자가 작업을 하게 될 경우, conflict가 자주 발생할 수 있으므로, 실제 개발 작업은 feature 브랜치에서 이루어진 후, develop 브랜치로 merge하는 방식으로 진행된다. feature 브랜..

GitHub 2023.05.17

argparse, omegaconf로 실험 환경 구성하기

ML 프로젝트에서 다양한 실험을 진행하다 보면 다양한 하이퍼 파라미터들과 여러 설정값을 수정해야 하는 일이 자주 발생한다. 그럴 때마다 코드를 직접 수정하게 되면 수정해야 할 부분을 찾아야 하는 일도 번거롭고, 제대로 값을 수정하지 못하고 실험이 진행되는 일이 빈번하다. 따라서 이번 포스팅에서는 configuration을 적절하게 관리하는 방법에 대해서 알아보자. argparse argparse를 이용하면 CLI에서 argument의 값을 입력받을 수 있다. CLI에서 입력받은 argument 값을 사용하기 위해서는 코드를 다음과 같이 구성해야 한다. parser 객체 생성 입력받을 argument 선언 argument 파싱 아래는 예시 코드이다. import argparse def get_args():..

AI/기타 2023.05.12

[PyTorch 에러 해결] Bert 모델 token embedding layer 차원 오류

실행 환경 OS : Linux PyTorch : 2.0.0 version 첫번째 에러 RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with TORCH_USE_CUDA_DSA to enable device-side assertions. 에러 메시지에서 확인할 수 있듯이, stacktrace의 내용만으로는 어디에서 에러가 발생했는지 ..

AI/Trouble Shooting 2023.05.11

[논문 리뷰] Effective Approaches to Attention-based Neural Machine Translation

논문이 다루는 Task Task: Neural Machine Translation Input: English 또는 German 문장 (batch_size, max_len) Output: German 또는 English 문장 (batch_size, max_len) 기존 연구 한계 Hard Alignment를 이용한 NMT 모델링 Hard Alignment에 대한 labeling이 별도로 필요했다. Alignment를 예측 하는 모델, target를 생성하는 모델을 별도로 학습시켜야 했다. Sequence to Sequence learning with neural networks (Sutskever et al. 2014) Encoder와 Decoder 간에 병목 현상이 발생한다. 제안 방법론 Global A..

AI/논문 리뷰 2023.05.05

ChatGPT Prompt Engineering for Developers 정리 [3]

스탠퍼드 대학교의 Andrew Ng 교수님이 강의하신 ChatGPT Prompt Engineering for Developers 강의를 듣고 정리한 글입니다. 단순히 강의 내용을 번역한것이 아니라 내용을 이해한 뒤 정리하였고, 제 개인적인 생각은 +) 표시 뒤에 덧붙였습니다. 해당 글은 ChatGPT Prompt Engineering for Developers의 마지막 강의인 Conclusion까지 듣고 정리한 글입니다. 훌륭한 강의이므로 아래 링크에서 직접 들어보시는 것을 추천드립니다. ChatGPT Prompt Engineering for Developers What you’ll learn in this course In ChatGPT Prompt Engineering for Developers, y..

ChatGPT Prompt Engineering for Developers 정리 [2]

스탠퍼드 대학교의 Andrew Ng 교수님이 강의하신 ChatGPT Prompt Engineering for Developers 강의를 듣고 정리한 글입니다. 단순히 강의 내용을 번역한것이 아니라 내용을 이해한 뒤 정리하였고, 제 개인적인 생각은 +) 표시 뒤에 덧붙였습니다. 해당 글은 Iterative, Summarizing, Inferring까지의 내용을 담고 있으며, 이후 내용은 추후에 포스팅할 예정입니다. 훌륭한 강의이므로 아래 링크에서 직접 들어보시는 것을 추천드립니다. ChatGPT Prompt Engineering for Developers What you’ll learn in this course In ChatGPT Prompt Engineering for Developers, you wi..

ChatGPT Prompt Engineering for Developers 정리 [1]

스탠퍼드 대학교의 Andrew Ng 교수님이 강의하신 ChatGPT Prompt Engineering for Developers 강의를 듣고 정리한 글입니다. 단순히 강의 내용을 번역한것이 아니라 내용을 이해한 뒤 정리하였고, 제 개인적인 생각은 +) 표시 뒤에 덧붙였습니다. 해당 글은 Introduction과 Guidelines까지의 내용을 담고 있으며, 이후 내용은 추후에 포스팅할 예정입니다. 훌륭한 강의이므로 아래 링크에서 직접 들어보시는 것을 추천드립니다. ChatGPT Prompt Engineering for Developers What you’ll learn in this course In ChatGPT Prompt Engineering for Developers, you will learn ..