이력서 내용을 토대로 자기소개서 내용을 생성하기 위해서는 한국어 학습 데이터가 충분한 대규모 언어 모델 (LLM) 도입이 필요하다.
1차 해결 시도
당장 사용할 수 있는 LLM인 OpenAI의 gpt-3.5-turbo를 이용할 수 있도록 API Key를 발급하였다.
그리고, 해당 API에 접근 가능 여부를 확인하기 위해 fetch() 함수를 실행하는 Javascript 예시 코드를 작성하였다.
이후 Python 개발 환경에서 Langchain을 이용하여 API에 요청하는 코드를 작성할 예정이다.
Dedicated가 아닌 Serverless 모드로 잠깐 사용할 수 있는 메뉴가 있어 예시 수준의 질문을 입력해 보았다.
한국어 데이터의 학습이 부족해서 결과는 당장 사용할 수 있는 수준이 아니었다.
3차 해결 시도
파라미터 수 7B 이상의 대용량 모델을 로컬에서 실행하기 위해 PyTorch, transformers를 이용한 예시 코드를 작성하였다.
languagemodel.py
import torch
from transformers import BertTokenizer
def load_language_model():
path_prefix = "/data/models/"
model_parts = [
f"{path_prefix}model-1.safetensors",
f"{path_prefix}model-2.safetensors",
f"{path_prefix}model-3.safetensors",
f"{path_prefix}model-4.safetensors",
f"{path_prefix}model-5.safetensors",
]
models = [torch.load(part) for part in model_parts]
return models
if __name__ == "__main__":
models = load_language_model()
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
text = "I love machine learning, what about you?"
inputs = tokenizer(text, return_tensors="pt")
outputs = models[0](**inputs)
print(outputs)
이를 Docker 컨테이너에서 실행하자 다음과 같은 오류가 표시되었다.
root@817ec7546bb8:/data/app/core# python languagemodel.py
Traceback (most recent call last):
File "/data/app/core/languagemodel.py", line 19, in <module>
models = load_language_model()
File "/data/app/core/languagemodel.py", line 13, in load_language_model
models = [torch.load(part) for part in model_parts]
File "/usr/local/lib/python3.12/site-packages/torch/serialization.py", line 1040, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/usr/local/lib/python3.12/site-packages/torch/serialization.py", line 1258, in _legacy_load
magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: Memo value not found at index 43
PyTorch의 러닝 커브를 고려하여 로컬에서 LLM을 호스팅하기 위한 시도는 중단하기로 했다.
결론
Hugging Face에서 찾은 오픈 소스 LLM을 직접 호스팅하기에는 PyTorch 사용법도 익혀야 하고, 적지 않은 비용이 발생한다.
지금 당장은 Langchain을 이용하여 OpenAI의 gpt-3.5-turbo 모델을 이용하기로 결정하였다.
문제 상황
이력서 내용을 토대로 자기소개서 내용을 생성하기 위해서는 한국어 학습 데이터가 충분한 대규모 언어 모델 (LLM) 도입이 필요하다.
1차 해결 시도
당장 사용할 수 있는 LLM인 OpenAI의
gpt-3.5-turbo
를 이용할 수 있도록 API Key를 발급하였다. 그리고, 해당 API에 접근 가능 여부를 확인하기 위해 fetch() 함수를 실행하는 Javascript 예시 코드를 작성하였다. 이후 Python 개발 환경에서 Langchain을 이용하여 API에 요청하는 코드를 작성할 예정이다.Code
Result
1차 해결 이후 문제
https://platform.openai.com/tokenizer
2차 해결 시도
LLM 정보
참고 영상
SageMaker 요금 정보
낯선 AWS 서비스 이용을 시작하기 이전에 먼저 요금 확인을 해 보았다.
https://aws.amazon.com/ko/sagemaker/pricing/
Studio에서 Jupyter Notebook을 실행할 예정이며, 프리 티어에서는 다음과 같이 이용 가능한 것으로 확인되었다.
ml.t2 medium 인스턴스 또는 ml.t3.medium 인스턴스 250시간
ml.t3.medium 인스턴스의 스펙은 다음과 같다. RAM 4GB 미만으로 요구하는 작은 모델만 가동해야겠다 생각했다. 아쉽게도 이전에 생각해 둔 KoSOLAR-10.7B-v0.2 모델은 이용할 수 없었다. (시간당 요금 기준 리전 = 서울)
AWS SageMaker의 Jumpstarts 목록에 있던 다음 모델을 확인해 보았다.
TinyLlama/TinyLlama-1.1B-Chat-v1.0
Dedicated가 아닌 Serverless 모드로 잠깐 사용할 수 있는 메뉴가 있어 예시 수준의 질문을 입력해 보았다. 한국어 데이터의 학습이 부족해서 결과는 당장 사용할 수 있는 수준이 아니었다.
3차 해결 시도
파라미터 수 7B 이상의 대용량 모델을 로컬에서 실행하기 위해 PyTorch, transformers를 이용한 예시 코드를 작성하였다.
languagemodel.py
이를 Docker 컨테이너에서 실행하자 다음과 같은 오류가 표시되었다.
PyTorch의 러닝 커브를 고려하여 로컬에서 LLM을 호스팅하기 위한 시도는 중단하기로 했다.
결론
Hugging Face에서 찾은 오픈 소스 LLM을 직접 호스팅하기에는 PyTorch 사용법도 익혀야 하고, 적지 않은 비용이 발생한다. 지금 당장은 Langchain을 이용하여 OpenAI의
gpt-3.5-turbo
모델을 이용하기로 결정하였다.