Deep Learning 29

LLM : Foundation Model

시작시작하기 전에글을 마무리하고 처음으로 돌아와보니 처음 계획보다 매우 긴 글이 됐습니다. 그래서 몇 편으로 나누어서 올려보려고 합니다.ChatGPT를 시작으로 Generative AI, Large Language Model(LLM)에 대한 열기가 엄청납니다. 수개월 전까지만해도 Generative, Language Model 같은 표현은 AI 계에 몸담고 있는 사람들만이 쓰는 것 같았는데 말이죠. 이제는 주위에서 이런 표현을 듣는 일이 어렵지만은 않습니다.더 놀라운 사실은 이런 표현들이 말에서 그치지 않고 일상 생활에서 직접 쓰는 단계가 시작됐다는 점입니다. 몇달 전만 해도 개인 컴퓨터에서 Image-to-Text 모델을 돌려본다거나, LLaMA 같은 Language Model을 직접 돌려본다는 것은 ..

Deep Learning 2023.04.12

머신 러닝 + 자연어 처리

오늘은 특정한 기술이나 알리고즘이 아니라 머신 러닝을 사용해서 자연어처리 문제를 푸는 일반적인 과정에 대해서 이야기를 해보려고합니다. 다르게 말하면, 자연어처리 문제를 어떻게 일반적인 머신 러닝 문제 형태로 바꾸느냐에 대한 이야기입니다. 머신 러닝 문제 형태? 머신 러닝 문제 형태라는 것이 무엇일까요? 우리가 흔히 머신 러닝이라고 부르는 것은 실제로는 다양한 알고리즘의 집합니다. 대표적인 머신 러닝 알고리즘들은 아래와 같은 분류에 속합니다 (이 외에 다른 분류도 있습니다). Clustering Regression Classification Clustering은 비슷한 데이터들끼리 분류하고 모으는 작업입니다. 예를 들어 쇼핑몰의 고객 데이터를 주고, 고객들을 몇가지 부류로 나누는 작업이 있을 수 있습니다...

Deep Learning 2022.03.26

Transformer로 한국어 품사 태거 만들기

한국어 품사 태거를 만들어 봅시다 품사 태거(Part-of-Speech Tagger)는 NLP에서 기본이 되는 태스크이고, 그 때문에 NLP를 배울 때 많이 만들어보는 기능이기도 합니다. 품사 태거가 NLP에서 나름 인기있는 이유는 몇가지가 있을 겁니다. 다른 NLP Task의 입력 또는 전처리 역할을 합니다. 요즘은 트렌드가 언어학적인 요소를 많이 배제하는 추세지만 전통적으로 파싱, 번역 등의 NLP 파이프라인에 많이 쓰였습니다. 한국어에서 BPE와 같은 통계적인 Tokenizer를 대신하는 방법으로 쓰이기도 합니다. 한국어의 특성상 통계적인 Subword보다는 형태소 단위를 토근으로 쓸 때 성능이 더 좋긴 경우들이 있습니다. (참조: 한국어 토큰의 단위는 뭐가 좋을까?) 품사 태깅은 Sequentia..

Deep Learning 2021.06.13

Pytorch로 훈련 이어서하기 (checkpoint)

모델을 훈련시키는데 오랜 시간이 걸리다보면 여러가지 이유로 처음에 생각했던 Epoch만큼 훈련을 시키지 못하고 중간에 끝나는 경우가 있습니다. 누군가 실수로 Ctrl+C를 눌러버린다거나, 모종의 이유로 훈련 프로세스가 죽어버린다거나, 아니면 GPU를 다른 곳에 쓰기 위해서 눈물을 머금고 중간에 멈추는 경우도 있습니다. 이럴 때 유용한 방법이 중간 중간 모델을 저장해두고 나중에 그 시점부터 훈련을 이어서 하는 것입니다. 오늘은 중간중간 모델을 저장하는 방법과 나중에 이어서 훈련을 시작하는 방법을 알아보겠습니다. import torch import torch.nn as nn import torch.optim as optim import argparse class MyModel(nn.Module): def _..

Deep Learning 2021.06.09

Logit, Sigmoid, Softmax

Logit, Sigmoid, Softmax 오늘은 Logit, Sigmoid, Softamx에 대해서 알아보려고 합니다. 코드와 함께 Logit, Sigmoid, Softmax의 차이와 활용처를 알아보겠습니다. import torch import torch.nn as nn x = torch.rand(8, 256) print(x) linear_layer = nn.Linear(256, 5) tensor([[0.8509, 0.5229, 0.0945, ..., 0.0343, 0.9828, 0.8862], [0.2340, 0.6683, 0.6794, ..., 0.0669, 0.7153, 0.4655], [0.8962, 0.0695, 0.5760, ..., 0.9555, 0.3334, 0.7940], ..., [0..

Deep Learning 2021.05.30

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리 아름다운별지구에오신여러분을환영합니다 딥러닝도 좀 배웠고, 자연어처리도 좀 배웠고, pytorch도 좀 배웠는데 막상 뭔가를 만들어 보려면 막막할 수 있습니다. 오늘은 pytorch를 이용해서 한국어 띄어쓰기 모듈을 바닥부터 만들어보고, 이 과정에서 실제로 어떻게 간단하 자연어처리기를 개발하는지 살펴보려고 합니다. "아름다운별지구에오신여러분을환영합니다"를 입력으로 주면 "아름다운 별 지구에 오신 여러분을 환영합니다"로 바꿔주는 것이 오늘의 목표입니다. 딥러닝과 Pytorch에 대해서 기본적인 부분을 습득하고 있다고 가정하겠습니다. 특히 Pytorch에 대한 사용법은 설명하지 않으니 참고 부탁드립니다. 문제 정의, 발상의 전환 머신러닝 문제를 풀 때..

Deep Learning 2021.05.26

인공지능, 머신러닝, 딥러닝

인공지능, 머신러닝, 딥러닝 이제는 인공지능, 머신러닝, 딥러닝이라는 표현을 일상 생활에서 듣는 것이 그렇게 어색한 일이 아닙니다. 인공지능이야 예전부터도 소설이나 영화에서도 곧 잘 듵을 수 있었지만, 머신러닝, 딥러닝 같은 용어는 전공 서적에서나 볼 수 있었는데 말이죠. 이 세가지는 비슷하게 들리고 실제로 많은 경우에 혼용해서 사용하기도 합니다. 오늘은 이 세가지가 어떻게 다른지 한번 이야기해보려고 합니다. 인공지능 인공지능은 말그대로 사람의 지능을 흉내내기 위해서 인공적으로 만들어낸 것들입니다. 실제 사람은 아닌데 사람이 할 수 있는 일을 비슷하게 한다면 넓은 범위로 인공지능이라고 할 수 있습니다. 음성인식(사람이 받아쓰기 하는 것을 흉내낸 인공지능), 얼굴인식(사람이 얼굴을 식별하는 것을 횽내낸 인..

Deep Learning 2021.05.05

Tensorflow가 GPU를 지원하는지 알아보자

Tensorflow를 설치해서 사용하다보면 현재 설치된 환경이 GPU를 제대로 지원하는지 아닌지 궁금할 때가 있습니다. 요즘은 설치가 많이 편해지기는 했지만, 리눅스 버전, GPU driver 버전, TF 버전, Cuda 버전 등 모두 맞추기가 쉽지 않았으니까요. TF를 설치를 해도 나도 모르게 CPU 버전으로 돌아가는 경우가 왕왕 있습니다. (GPU Tensroflow는 Docker를 이용하는 것을 추천합니다. Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자) 현재 환경이 GPU를 지원하는지 어떻게 알 수 있을까요? 구글링을 해보면 TF 1.x 시절부터해서 여러가지 방법이 나옵니다. 현재 TF 2.x 기준으로 가장 간략한 방법은 다음 코드를 실행해보는 것입니다. import ten..

Deep Learning 2020.06.24

Tensorflow Custom Layer

Tensorflow Custom Training에서는 keras의 Model 클래스를 이용해서 Custom Model을 만들고 훈련시키는 법을 알아보았습니다. 이번에는 tf.keras.layers.Layer를 사용해서 Custom Layer를 만드는 법을 알아보겠습니다. Tensorflow Custom Training에서 만들었던 예시를 사용해서 이야기를 이어가보겠습니다. tf.keras.Sequential을 쓰지 않고 직접 Model의 동작을 구성하기 위해서 Custom Model을 사용한다면, Custom Layer는 Model 내에서 특정 Layer의 동작을 직접 구성하기 위해서 사용합니다. 예를 들어 새로운 Dropout 알고리즘을 생각해냈다고 가정해보겠습니다. MyDropout이라는 Layer를..

Deep Learning 2020.06.12

Tensorflow Callback 사용하기

1. Callback 이란? 모델을 훈련시키는 일은 대체적으로 오랜 시간이 걸립니다. 짧게는 몇분에 끝나기도 하지만 보통은 몇 시간에서 몇 일이 걸리기도 합니다. Tensorflow가 기본적인 Log를 출력해주기는 하지만 훈련이 끝날 때까지 기도하고 있기에는 너무나 불안한 일입니다. 그래서 Tensorflow는 모델을 훈련시키는 동안 어떤 이벤트들이 발생하면 개발자가 원하는 동작을 수행할 수 있는 방법을 제공하고 있습니다. 개발자가 원하는 동작을 Callback이라고 부릅니다. Callback 자체는 새로운 개념은 아닙니다. Event-driven 개발 방식에서 쓰이고요. GUI 개발을 해보신 분들은 익숙하실 겁니다. 기본 방식은 이렇습니다. Tensorflow가 미리 이벤트들을 정의합니다. 이벤트는 개..

Deep Learning 2020.06.04