AI 63

[논문 리뷰] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2)

실험 및 결과 GLUE (General Language Understanding Evaluation) Dataset Training Details batch size: 32 epoch: 3 learning rate: [5e-5, 4e-5, 3e-5, 2e-5] 중 Dev 데이터 셋에서 가장 성능이 좋은 것으로 선택 BERT_LARGE에서 fine-tuning을 진행할 때, 작은 데이터 셋으로 학습하는 경우 불안정한 경우가 확인되어, 몇 차례 random restart 후 Dev 데이터 셋 기준 가장 성능이 좋은 모델로 선택 Result BERT_BASE와 BERT_LARGE 모두 이전 SOTA 모델이었던 OpenAI GPT를 평균 정확도 측면에서 4.5%와 7.0% 능가하는 결과를 보여주었다. 또한, 각..

AI/논문 리뷰 2023.10.03

[논문 리뷰] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (1)

기존 연구 한계 ELMo의 한계 ELMo는 사전 학습된 language representation을 downstream task에 옮길 때 feature-based 방식을 사용한다. 이 방식은 task에 특화된 모델 구조가 필요하다는 특징이 있다. 또한, 토큰의 contextual representation을 단순히 left-to-right과 right-to-left representation을 concat하는 방식으로 구하는 shallow bidirectional 구조를 갖는다. 2개의 unidirectional 모델을 합쳐 하나의 shallow bidirectional 구조를 만듦으로써 (1) 비용이 2배로 증가하고, (2) Question Answering task에서 right-to-left 모델..

AI/논문 리뷰 2023.10.01

[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

TOKENIZERS_PARALLELISM=(true | false) 경고 메세지는 무슨 뜻일까?

huggingface의 transformers 라이브러리를 사용하다보면 이런 경고 메세지를 본 적이 있을 것이다. The current process just got forked. Disabling parallelism to avoid deadlocks... To disable this warning, please explicitly set TOKENIZERS_PARALLELISM=(true | false) 대부분의 경고 메세지가 그렇듯, 프로그램은 문제 없이 실행되지만 어느 부분에서 이 경고 메세지가 뜨고 어떤 문제에 대한 경고인지 궁금해졌다. 아래 내용들은 이 경고 메세지에 관한 자세한 탐구이므로 경고 메세지를 없애기 위한 해결책만을 원한다면 마지막 결론 부분만 읽으면 된다. 경고 메세지가 뜨는 조건..

AI/PyTorch 2023.07.21

[PyTorch 에러 해결] CUDA out of memory (feat. 주피터 노트북)

실행 환경 OS: Ubuntu 18.04.5 PyTorch 버전: 2.0.1 CUDA 버전: 11.0 문제 상황 모델 크기가 23GB인 LLM을 GPU 메모리에 로드하던 중, CUDA out of memory 에러가 발생했다. GPU 메모리 크기가 32GB인데다, 주피터 노트북 파일에서 테스트 했을 때 문제 없이 실행되었기 때문에 코드 구현 상에 메모리 누수가 있는지 확인했으나, 별다른 문제를 찾지 못했다. 문제 해결 nvidia-smi 명령어로 GPU의 상태를 확인해 본 결과, 파이썬 스크립트를 동작시키지 않은 상황에서 GPU 메모리가 23GB가 할당되어 있는 것을 확인할 수 있었다. 알고보니 주피터 노트북 파일을 실행시켰을 때 GPU 메모리에 올라갔던 모델을 해제하지 않아서 메모리가 반환되지 않고 있..

AI/Trouble Shooting 2023.07.06

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

[논문 리뷰] Attention is All You Need

논문이 다루는 Task Task: Machine Translation WMT 2014 English-to-German translation task input: tokenize된 영어 문장 input_size: (batch size, source_max_length) output: 독일어 token의 probability sequence output_size: (batch size, target_max_length, vocab_size) WMT 2014 English-to-French Translation task input: tokenize된 영어 문장 input_size: (batch size, source_max_length) output: 프랑스어 token의 probability sequence..

AI/논문 리뷰 2023.06.12