AI/기타 10

[Mojo] Mojo와 Python 모델 학습 속도 비교하기 (1)

이전 포스팅까지 Mojo의 기본적인 내용들을 살펴보았으니, 이번 포스팅에서는 본격적으로 Mojo를 활용하여 모델 학습을 진행하기 이전에 Mojo 개발 환경을 구축하는 방법과 순수 파이썬으로 실행한 학습 시간과 해당 코드를 Mojo로 그대로 가져와 실행한 학습 시간 차이를 비교해보자. 실습 환경 OS: Windows 10 GPU: NVIDIA GeForce RTX 3060 Ti Mojo 버전: v0.3.0 Python 버전: v3.10.12 Mojo 개발 환경 구축 현재 Mojo는 Windows 운영체제를 지원하지 않기 때문에 WSL을 통해 우분투 환경에서 Mojo를 실행해야 한다. Modular: AI development starts here The worlds fastest unified AI exe..

AI/기타 2023.09.30

[Mojo] 모듈과 패키지

이번 포스팅에서는 Mojo로 작성한 코드를 모듈과 패키지로 만드는 방법에 대해 알아보자. Mojo 모듈 Mojo 모듈은 다른 파일에서 import하여 사용할 수 있는 단일 소스 파일이다. 예를 들어, 아래와 같이 구조체를 정의하는 모듈을 만들 수 있다. # mymodule.mojo struct MyPair: var first: Int var second: Int fn __init__(inout self, first: Int, second: Int): self.first = first self.second = second fn dump(self): print(self.first, self.second) mymodule의 MyPair 구조체를 import하기 위해서는 아래와 같이 코드를 작성한다. # mai..

AI/기타 2023.09.24

[Mojo] Mojo 기초 문법

Mojo는 파이썬의 문법과 동적인 특징을 그대로 사용할 수 있기 때문에 파이썬 패키지에서 코드를 가져와 실행할 수 있다. 그러나 Mojo는 파이썬에 단순히 syntax sugar(코드를 읽거나 작성하기 편하도록 디자인 된 문법)를 추가한 언어가 아닌, 파이썬과 비교했을 때 시스템 프로그래밍 기능, 타입 검사, 메모리 안전성, 차세대 컴파일러 기술 측면에서 한층 발전한 언어라고 소개하고 있다. Mojo는 아직 개발이 진행중인 언어이기 때문에 아직 모든 파이썬의 기능을 지원하지는 않지만, 대부분의 기능을 지원한다. 따라서 Mojo의 문법은 파이썬의 문법과 닮은 부분이 매우 많다. 이번 포스팅에서는 파이썬과 동일한 Mojo의 문법을 제외하고, Mojo 고유의 문법에 대해서 알아보자. 이 포스트는 Mojo v0..

AI/기타 2023.09.22

[Mojo] Mojo 설치 및 실행

Mojo 🔥: Programming language for all of AI Mojo combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models. www.modular.com 며칠 전 Mojo가 공식 출시되었다. Mojo는 파이썬의 느린 실행 속도를 개선하기 위해 제작한 언어로, 기존에 파이썬으로 작성되어 있던 딥러닝 코드들을 Mojo로 옮겨 실행하면 얼마나 빨라질지 궁금해졌다. 이번 포스팅에서는 Mojo를 설치하고 실행하는 방법에 대해 알아보자. Mojo SDK Mojo SDK는 Mojo의 기본 라이브러리..

AI/기타 2023.09.14

Huggingface Trainer compute_metrics 파헤치기

Huggingface trainer로 모델을 학습시킬 때 학습중인 모델의 성능을 평가하기 위해서 반드시 필요한 compute_metrics는 어떤 방식으로 동작하고, 어떻게 구현해야 하는지 알아보자. compute_metrics는 transformers 라이브러리의 Trainer 클래스의 객체를 생성할 때, 매개변수로 입력 받는다. trainer = Trainer( model=model, args=args, train_dataset=train_dataset, eval_dataset=valid_dataset, compute_metrics=compute_metrics ) Huggingface의 trainer에 익숙하지 않다면, 아래 글을 읽는 것을 추천한다. HuggingFace Trainer로 모델 학습 ..

AI/기타 2023.06.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

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

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

AI/기타 2023.05.12

Huggingface의 Transformer 라이브러리에서 pre-trained된 모델 활용하기

Transfer Learning은 많은 양의 데이터로 사전 훈련된 모델을 가져와 새로운 태스크를 학습시키는 기술이다. Hugging Face의 Transformers 라이브러리는 다양한 사전 훈련된 모델을 제공하며, 이러한 모델을 fine tuning하여 새로운 태스크를 수행할 수 있다. 이번 포스팅에서는 Hugging Face의 Transformers 라이브러리를 사용하여 Transfer Learning을 수행하는 방법에 대해 알아보자. 1. Downstream Task에 알맞게 pre-trained된 모델 수정 from_pretrained() 메서드를 사용하여 사전 훈련된 모델과 토크나이저를 불러올 수 있다. Downstream Task를 수행하기 위해서는 pre-trained 모델의 출력 차원을 조..

AI/기타 2023.04.21

HuggingFace Trainer로 모델 학습 및 평가하기

HuggingFace Trainer는 PyTorch와 같은 딥러닝 프레임워크에서 모델을 학습하기 위한 편리한 인터페이스를 제공하는 파이썬 라이브러리이다. Trainer 클래스와 TrainingArguments 클래스는 Trainer를 사용하여 모델을 학습시키기 위한 설정과 제어를 담당하는 중요한 클래스들이다. 이 두 클래스를 통해 모델 학습의 다양한 설정을 조정하고, 학습 과정을 관리할 수 있다. Trainer 클래스 Trainer 클래스는 모델의 학습을 관리하고 제어하는 클래스로, transformers 라이브러리에서 제공되는 핵심 클래스 중 하나이다. Trainer 클래스를 사용하면 모델 학습에 필요한 다양한 기능들을 활용할 수 있다. 주요 속성 model: 학습할 모델 객체. PyTorch와 같은 ..

AI/기타 2023.04.18

WandB(Weights & Biases)로 하이퍼 파라미터 튜닝하기

모델의 성능을 개선하기 위해 다양한 하이퍼 파라미터를 조정하고, 여러 번의 실험을 반복하며 모델의 동작을 이해하는 것은 필수적이다. 이를 위해 Weights & Biases(WandB)라는 도구를 사용하면 효과적으로 모델 실험을 관리하고 하이퍼 파라미터 튜닝을 할 수 있다. 이번 글에서 WandB에 대한 간략한 소개와, PyTorch 프레임워크에서 WandB Sweep을 사용하는 방법에 대해 알아보자. WandB(Weights & Biases)란? WandB(Weights & Biases)는 머신러닝 실험 관리를 위한 오픈소스 도구로, 실험의 결과와 메트릭을 추적하고 시각화하는 기능을 제공한다. 또한, 하이퍼파라미터 튜닝을 위한 Sweep 기능을 제공하여 자동화된 하이퍼파라미터 검색을 수행할 수 있다. ..

AI/기타 2023.04.18