LLM (Large Language Model) 및 사용 후기

LLM을 직접 띄워보니, 대답을 잘하는 모델과 제품에 넣기 쉬운 모델은 같은 기준으로 고를 수 없었어요. 2023년 4월에는 LLaMA·Alpaca·Vicuna를 실행해보고 GPT-3.5 API와 비교했습니다. 이 글은 그때의 사용 기록에 모델의 원리와 비교할 때 주의할 점을 보완한 글입니다.

모델명, 가격, 라이선스와 실행 용량은 2023년 당시 기준입니다. 현재 모델의 성능 순위나 배포 사양으로 읽으면 안 됩니다. 당시 프롬프트 전체와 실행 옵션은 남아 있지 않아 정량 벤치마크로 재현할 수는 없습니다.

LLM은 무엇을 학습할까?

이 글에서 다루는 GPT 계열 모델은 앞에 주어진 토큰을 바탕으로 다음 토큰의 확률을 학습합니다. 토큰은 단어 전체일 수도, 단어의 일부일 수도 있어요. 이 과정을 많은 텍스트에 반복하면서 문장 구조, 표현 방식, 지식에 관한 패턴을 학습합니다.

다만 자연스러운 다음 문장을 만드는 능력이 사실 확인을 대신하지는 않습니다. 질문에 맞는 문체로 유창하게 답하더라도, 근거가 없는 내용을 만들어낼 수 있어요. 모델을 평가할 때는 문장의 완성도와 내용의 정확도를 따로 봐야 합니다.

Transformer가 바꾼 것

기존 RNN은 시퀀스를 순차적으로 처리합니다. Transformer는 어텐션을 이용해 토큰 사이의 관계를 계산하고, 학습할 때 여러 위치의 계산을 병렬화하기 쉬운 구조를 사용해요. 원 논문은 인코더와 디코더를 함께 쓰지만 GPT는 디코더 계열 구조를 사용합니다. 생성 단계에서는 다음 토큰을 차례로 만들기 때문에 문장 전체가 한 번에 생성되는 것은 아닙니다. Transformer 원 논문

대화 품질 향상에는 구조뿐 아니라 데이터와 모델 규모의 확대, 지시를 따르는 예제로 학습하는 instruction tuning, 사람의 피드백을 반영하는 학습도 기여했습니다. 그래서 기본 언어 모델과 대화용으로 조정한 모델을 같은 프롬프트로 비교하면 모델 크기 외의 차이도 섞입니다. ChatGPT의 학습 방식

당시 비교한 모델의 관계

모델출발점과 목적결과를 읽을 때의 주의점
LLaMA 1세대Meta가 학습한 기본 언어 모델. 7B·13B·33B·65BGPT-3를 파인튜닝한 모델이 아님. 대화용 조정 여부를 구분해야 함
Alpaca 7BLLaMA 7B에 지시 수행 예제를 추가 학습제한된 평가 결과를 모든 작업의 동등한 성능으로 확대하면 안 됨
Vicuna 13BLLaMA에 대화 데이터를 추가 학습초기 GPT-4 평가와 실제 제품 요구의 차이를 고려해야 함
GPT-3.5-turboOpenAI가 API로 제공한 대화 모델모델을 직접 운영하는 비용과 API 이용 비용은 비교 단위가 다름

LLaMA 논문은 7B부터 65B까지의 모델을 공개했습니다. 파라미터 수가 작다고 모든 작업에서 성능이 낮은 것은 아니에요. 학습 데이터와 학습량, 평가 과제가 함께 영향을 줍니다. LLaMA 원 논문

LLaMA 1세대 모델 비교 자료 당시 참고한 LLaMA 자료

Alpaca는 text-davinci-003으로 만든 약 5만 2천 개의 지시 수행 예제로 LLaMA 7B를 조정한 연구입니다. 연구진의 예비 평가에서 비슷한 결과를 보였다는 것이지, 모든 질문에 같은 품질로 답한다는 뜻은 아닙니다. 당시 공개된 프로젝트는 학술 연구용이며 상업적 사용을 허용하지 않았습니다. Stanford의 공개 글과 평가 한계

Alpaca 예비 평가 비교 연구진의 제한된 평가에서 얻은 비교 결과

Vicuna의 “ChatGPT 품질의 90% 이상”이라는 표현도 분모를 확인해야 합니다. 연구진이 구성한 80개 질문에 대해 GPT-4가 응답을 비교한 예비 평가였어요. 사실 정확도 90%, 업무 성공률 90% 또는 모든 언어에서의 성능을 의미하지 않습니다. 이 글에서 사용한 초기 LLaMA 기반 Vicuna 역시 비상업적 연구용이었습니다. Vicuna 공개 평가와 한계

Vicuna의 초기 GPT-4 기반 평가 모델 선택의 참고 자료이며 범용 정확도를 뜻하지 않는 초기 평가

직접 사용한 환경과 느낌

환경은 CPU 80-core, RAM 320GB, T4 GPU 4개, Python 3.10이었습니다. 아래 용량은 당시 메모한 실행 기록입니다. 체크포인트 형식, 양자화, CPU offload, 문맥 길이와 GPU별 배치가 명확하지 않아 최소 요구 사양으로 사용할 수는 없어요.

모델당시 기록한 용량사용하면서 느낀 점
LLaMA 7B·Alpaca 7B디스크 약 30GB, GPU 메모리 약 4GB 기록비교적 부담 없이 실험했지만 한국어 글쓰기·코드 생성은 원하는 수준에 못 미쳤음
Vicuna 13B디스크 약 40GB, GPU 메모리 약 28GB 또는 CPU 메모리 약 60GB 기록앞의 두 모델보다 대화와 한국어 이해가 나았고 생산성 작업도 더 쓸 만했음
GPT-3.5-turbo외부 API 사용모델 서버를 구축하지 않아도 돼 연동이 가장 편했음

예를 들어 7B 파라미터를 각각 2바이트로 저장하면 가중치만 약 14GB입니다. 여기에 연산 중간값과 KV cache 같은 메모리가 추가돼요. 따라서 위의 “GPU 4GB”를 비양자화 모델 전체가 그 메모리에 올라간다는 뜻으로 해석해서는 안 됩니다. 디스크에 저장된 파일 크기, GPU 점유량, 전체 RAM 사용량도 서로 다른 값입니다.

당시 살펴본 LLaMA·Alpaca 실행 구현은 REST API로 쓰려면 별도 서버 코드가 필요했습니다. 이는 모델 자체가 API를 지원할 수 없다는 뜻이 아니라 사용했던 실행 도구의 범위였어요. Vicuna는 상대적으로 답변이 나았지만 장황하게 이어지는 응답도 있었습니다.

Vicuna가 장황하게 답변한 당시 화면 2023년 사용 중 기록한 응답 예시. 한 응답만으로 전체 성능을 판단할 수는 없음

GPT-3.5-turbo는 API가 있어 제품과 연결하기 편했습니다. 출시 당시 가격은 1,000토큰당 $0.002였어요. 이 값은 현재 요금이 아닌 당시 비용 기록입니다. 2023년 API 출시 발표

제품에 넣을 때는 무엇을 더 확인해야 할까?

그때는 답변이 얼마나 그럴듯한지에 먼저 눈이 갔습니다. 이 사용 기록에서 제품 선택 기준을 도출한다면, 아래처럼 같은 업무와 같은 성공 조건으로 비교하는 편이 좋겠습니다. 다음 항목은 당시 측정 결과가 아니라 후기를 보완하기 위한 평가 방법입니다.

확인할 것비교 방법실패했을 때 드는 비용
업무 정확도실제 입력과 기대 결과를 정하고 누락·오답을 따로 기록사람이 고치는 시간, 잘못된 후속 처리
한국어 지시 준수같은 정보로 한국어·영어 지시를 주고 형식과 의미를 비교번역·후처리의 복잡도
반복 사용의 안정성동일 과제를 여러 번 실행하고 실패 유형을 기록재시도 비용, 사용자의 불신
응답 지연첫 응답까지의 시간과 전체 완료 시간을 구분사용자가 기다리거나 이탈하는 시간
운영 부담동시 요청, 요청 실패, 대화 이력 관리까지 포함GPU 운영 또는 API·저장 비용

“이전 대화를 기억하게 만들기”도 모델의 답변 능력과 별도 문제예요. 당시 Chat Completions 방식에서는 애플리케이션이 필요한 이전 메시지를 다음 요청에 담아야 했습니다. 이력을 무한히 넣을 수 없으므로 어떤 정보를 남길지 정해야 하고, 이 선택은 비용과 답변 품질에 영향을 줍니다. 당시 API의 메시지 인터페이스 설명

제 당시 결론은 빠르게 연동해보는 데에는 GPT-3.5 API가 편했고, 직접 모델을 실행하며 가능성을 살펴보는 데에는 Vicuna가 인상적이었다는 것입니다. 다만 이 경험만으로 특정 모델의 제품 적합성을 확정할 수는 없어요. 모델 이름이나 공개 점수보다, 내가 맡기려는 작업에서 허용할 수 없는 실패를 먼저 정하는 것이 더 좋은 출발점입니다.