Upgrade to Pro — share decks privately, control downloads, hide ads and more …

소주 만들기: 언어 모델을 이용한 데이터 증류

소주 만들기: 언어 모델을 이용한 데이터 증류

소주 만들기: 언어 모델을 이용한 데이터 증류

이 발표 자료에서는 훈련 데이터의 다양성을 확보하기 위해 인터넷에서 수집된 데이터를 Gemma 언어모델을 이용하여 정제하는 아이디어와 방법을 소개합니다.

2024년 4월 17일부터 19일까지 진행된 OpenACC - NVIDIA-HPE 해커톤에서 작업한 내용으로, 2024년 7월 27일 Google I/O Extended Incheon에서 발표한 덱입니다.

Brewing Soju: Data Distillation Using Language Models

This presentation introduces ideas and methods for refining data collected from the internet using the Gemma language model to ensure diversity in training data.

The content was developed during the OpenACC - NVIDIA-HPE Hackathon held from April 17 to 19, 2024, and was presented at Google I/O Extended Incheon on July 27, 2024 too.

Jeongkyu Shin

August 06, 2024
Tweet

More Decks by Jeongkyu Shin

Other Decks in Technology

Transcript

  1. • Lablup Inc. : Make AI Accessible – 오픈소스 머신러닝

    클러스터 플랫폼: Backend.AI 개발 – https://www.backend.ai • Google Developer Expert – ML / DL GDE – Google Cloud Champion Innovator – Google for Startup Accelerator Mentor • 오픈소스 – 텍스트큐브 개발자 / 모더레이터 (20년!) • 물리학 / 뇌과학 – 통계물리학 박사 (복잡계 시스템 및 계산뇌과학 분야) – (전) 한양대학교 ERICA 겸임교수 (소프트웨어학부) 안녕하세요! 2
  2. 3

  3. • 오픈소스, 인공 신경망, 계산 – 누구와, 무엇을, 어떻게 –

    오픈소스를 하며 만난 사람들과 – 인공신경망 기반의 사회/기술 변화를 – 엄청난 양의 계산 최적화로 유도하자 • 2015년 lablup 창업 • Backend.AI: 엔터프라이즈 AI용 올인원 인프라스트럭처 플랫폼 래블업 4
  4. 86% Statistic Caption : Make AI Accessible Courtesy of NeurIPS

    2015 Paper "Hidden Technical Debt in Machine Learning Systems" (D. Sculley et al.) 5
  5. 6

  6. Backend.AI 기반 AI 스택 MLOps Infrastructure Application Datacenter Power Cooling

    Location Backbone Network GPU / Accelerators Interconnect Network High-speed Storage Compute Nodes Backend.AI Core as "AI Infra OS" Backend.AI FastTrack as "MLOps" Backend.AI Reservoir Backend.AI GenAI Desktop GenAI Apps NVIDIA NIM End-user Services On-premise & Cloud Backend.AI Forklift Computing API & Libs Workload manager Monitoring Policy & Admin Kubernetes Slurm KubeFlow MLFlow LSF CUDA + NCCL GDS Talkativot Sokovan Orchestrator vs. vs. 7 Backend.AI Finetun.ing Backend.AI Model Player
  7. 8

  8. 9

  9. 모델이 커지면 어느 시점부터 등장 대표적 창발현상: in-context learning 모델이

    맥락을 제공받아, 원래 훈련하지 않은 작업을 수행할 수 있게 되는 능력 창발현상 14
  10. • GPT-3 (OpenAI, 2020) – 창발 현상의 발견: 모델이 커지면

    뭔가가 더 나온다. – 가르치지 않은 태스크를 처리하는 능력 • LaMDA (Google, 2021) – 인 컨텍스트 러닝 기반 페르소나를 줄 수 있는 모델 • Pathways (Google, 2022) – 크기를 키워가면서 어떤 크기에서 어떤 현상이 창발되는지 추적 • ChatGPT (OpenAI, 2022) – RLHF 기반의 튜닝을 통한 일반 언어 모델의 가능성 서비스 • GPT-4 (OpenAI, 2023) – µ-parameterization의 최초 거대 언어 모델 훈련 적용 • Claude Sonnet (Anthropic, 2023) – 모델 기능 모듈 발화 과정을 대규모로 첫 추적 (2024) 스케일 전쟁 15
  11. • 단위 연산 자원당 비용 감소 – 5년마다 1/10으로 감소

    중 – 그 속도를 넘어서는 상황은 어떻게? • 돈으로 해결되었다… – AI: 규모의 투자가 다른 모든 요소를 압도 – 빅테크들의 경쟁 ✓ Meta: H100 35만대 ✓ Microsoft: 2024년까지 180만대 – 국가들의 경쟁 ✓ 미국, 중국, 일본, EU, 한국… 문제: 연산 자원의 부족 16
  12. • 토큰이 부족하다! – 데이터가 말랐음. “AI companies running out

    of training data after burning throught entire Internet” • 대안: 합성 데이터 생성 – 데이터를 LLM으로 생성해서 만들자! ✓ 예: Gemma 2 스몰모델: 큰 모델에서 생성된 데이터로 훈련 – Student – Teacher 모델 (Google, 2017) ✓ 큰 모델을 만들어 임의의 데이터를 넣고, 그에 대한 출력값으로 데이터셋 생성 ✓ 훨씬 작은 모델들의 앙상블을 만들고, 앙상블을 훈련시켜 가장 좋은 모델 선택 그럼 무엇이 문제인가? [1] https://futurism.com/the-byte/ai-training-data-shortage [2] https://www.wsj.com/tech/ai/ai-training-data-synthetic-openai-anthropic-9230f8d8 [3] https://www.tortoisemedia.com/2024/04/03/the-world-wide-web-is-not-enough-ai-systems-running-out-of-training-data/ 17
  13. • 문제: 모델 열화 – 모델에서 만들어진 데이터로 모델을 훈련하면

    성능 열화가 일어남 ✓ 테드 창의 언급: “인터넷의 열화 된 압축본” • 맞는 말은 아니지만 생각해볼 여지가 있음 ✓ 우로보로스 문제 (a.k.a. Model collapse): 모델에서 생성된 데이터의 경직성 / 오류가 재훈련을 통해 누적됨[1] • 임시 해결책: 훨씬 더 크고 성능이 좋은 모델을 사용해서 데이터 품질을 개선 – NeMoTron 4 (NVIDIA, 2024년 6월): 340B – Llama 3.1 (Meta, 2024년 7월): 405B – 두 모델 모두 "데이터 생성 활용” 을 주 용도로 내세움 ✓ 서비스하긴 너무 크니까… • 하지만 이걸로 충분한가? 그럼 무엇이 문제인가? [1] ” AI produces gibberish when trained on too much AI-generated data” https://www.nature.com/articles/d41586-024-02355-z 18
  14. • 형식 – 일반 텍스트 데이터 – 질문 / 답변

    텍스트 데이터 – 비논리적 텍스트 데이터 (훈련용) • 일반 텍스트 데이터 – 태깅 없는 데이터를 어떻게 훈련에 쓰나요? -> 문장 데이터의 구조만으로도 훈련이 됨 • 언어 모델의 훈련 – “문장”이 어떻게 만들어지는지 이해하는 것 – “문맥”에 맞거나 안 맞는 표현 / 형식 / 단어에 대해 학습하는 것 말뭉치 19
  15. • 자연어 처리에서 텍스트를 작은 단위로 나눈 것 • 단어,

    문장 부호, 특수 문자 등 • 더 작게는 유니코드 자소 및 바이트 단위 • 언어 모델은 토큰을 기본 단위로 처리하고 이해 • 토크나이제이션(Tokenization) 과정을 통해 텍스트를 토큰으로 분할 그런데 토큰이 뭐야? 20
  16. 문장을 원하는 단위로 쪼개는 전처리 도구 • 토큰: 텍스트를 벡터화한

    단위 • 의미론적 단위로 쪼갠 후 인덱스에 대응 • 자주 보는 토큰: 형태소 토크나이저? 21
  17. • 합성 데이터는 다양성을 충분히 반영하지 못하고 인터넷 상의 인간

    데이터는 거의 다 사용했다면 • 우리도 데이터 계의 셰일가스를 채굴할 때가 된 것이 아닐까? 뭔가 좋은 방법이 없을까? 22
  18. Soju Maker: Data distillation through Gemma Application Kyujin Cho (Lablup

    Inc.) Sergey Leksikov (Lablup Inc.) Joongi Kim (Lablup Inc.) Jeongkyu Shin (Lablup Inc.) Ryu Hyongon (NVIDIA) Ruoqian Guo (NVIDIA) 23
  19. 한 일 • 동기 – LLM을 학습하려면 고품질의 잘 구조화된

    데이터가 필요함 – 현재 인터넷 아카이브에 기반한 한국어 말뭉치에는 광고, 스팸, 전화번호와 같은 가비지 정보가 많이 포함됨 • 알고리즘 및 모델 – Gemma의 강력한 한국어 토큰화기를 원용하여 한국어 데이터 정제 모델로 사용해 보자 • 목표 – TensorRT-LLM과 Backend.AI 통합 및 성능 평가 – vLLM과 같은 대안을 통한 성능 평가 – 생성된 최종 데이터 평가 24
  20. • Google의 개방형 LLM/VLM 모델 • 로컬 서버 및 Google

    클라우드를 통해 사용 가능 • 두 가지 크기 옵션 – 2B, 7B (Gemma 1): 6조개의 토큰으로 훈련 – 9B, 27B (Gemma 2): 8조 / 13조 토큰으로 훈련 • 세 가지 모델 유형 – Gemma, PaliGemma (VLM), RecurrentGemma (Non-transformer architecture) • 지원 프레임워크 – JAX, Keras, TensorFlow, PyTorch Gemma 25
  21. • Gemini 와 토크나이저를 공유 – 어휘 사이즈: 250k ✓

    Gemini보다는 작지만 동일 토큰 / 인덱스 사용 – 한국어 지원 개선 ✓ 늘어난 토큰의 상당 부분이 한국어에 할당됨 • 미세 조정에 완전 개방 – 체크포인트, 웨이트 및 트레이닝 도구 모두 지원 – 어떤 목적으로도 사용할 수 있음 Gemma의 장점 26
  22. • 샌드박스 생존 게임 – 다들 아시죠? • 래블업 초창기의

    유일한 복지였음… • 특징 – 포션을 제조해서 스탯 펌핑 가능 – 포션을 제조하기 위한 증류기가 있음 – 아이템 및 자원을 수집하기 위한 깔때기 (호퍼) 가 있음 – 그리고 라마도 살고 있습니다. 마인크래프트를 아십니까? 27
  23. • 온 국민의 영양간식한국의 전통적인 증류주 – 쌀, 보리, 고구마

    또는 타피오카 전분으로 만듦 – 무색 투명하고 강한 맛이 남 – 13세기 원나라로부터 증류기술 도입 후 만들어낸 술 • 제조법 – 당화: 물과 원료를 섞어 끓이고 엿기름이나 효소 첨가 – 발효: 알코올 발효 진행 – 증류: 발효액을 증류기에 넣고 가열 – 여과: 불순물 제거 • 과다 섭취 시 건강에 해로울 수 있음 소주 28
  24. 소주 제조기 • 필요한 것 – LLM 학습에는 고품질의 잘

    구조화된 데이터가 필요 • 인터넷 데이터 – Internet Archive: 인터넷 전체를 크롤링하고 보존하고자 하는 목표의 프로젝트 ✓ 무엇인지 가리지 않음. 접근이 가능하고 별도로 막지 않은 대부분의 사이트를 크롤링 • 인터넷 데이터의 문제 – 인터넷 아카이브에는 광고, 스팸, 전화번호와 같은 쓰레기 정보가 많이 포함되어 있음 • 해결책? – Gemma 는 안정적인 한국어 토크나이저 및 한국어 처리가 가능함 – 그럼 이걸 한국어 데이터의 정제 모델로 사용해 보자! 30
  25. Original finetuning dataset "Soju" for finetuning "Hopper" GPUs Data distiller

    (Backend.AI + TRT-LLM) Finetuned model zero-shot prompt for filtering Base model (LLaMa 2) Gemma-2B/7B Backend.AI FastTrack Pipeline 이것이 빅 픽처 31
  26. Base model (LLaMa 2) "Hopper" GPUs Data distiller (Backend.AI +

    TRT-LLM) HPLT's Korean internet archive corpus Well, it was.. 💩 $#@! Finetuned model...?? zero-shot prompt for filtering Gemma-2B/7B Backend.AI FastTrack Pipeline 최..소한 이건 되겠지? 32
  27. • 고급 데이터 정제 기술을 사용하여 • 원시 말뭉치를 정제하여

    • LLM 학습의 효율성과 효과를 높이자! • 모델 셋업 – 128 Gemma 2B 모델들 / 40 Gemma 7B 모델들 – 8대의 H100 GPU 사용 – TensorRT-LLM + Gemma 를 FastTrack 에 얹어 돌림 한국어 데이터셋 품질 개선하기 濁酒 燒酒 33
  28. • 고급 데이터 정제 기술을 사용하여 • 원시 말뭉치를 정제하여

    • LLM 학습의 효율성과 효과를 높이자! • 데이터 증류 – 출처: Internet Archive의 open-korean-instruction dataset / HPLT – Awesome-Korean-Dataset 소스로도 테스트 – Few-shot learning (오른쪽에 프롬프트) 한국어 데이터셋 품질 개선하기 {{text}} --- The above content consists of a conversation with text following <usr> and <bot>. Also, codes are replaced with <bcode> tag. Please modify this Korean content according to the following rules: * The meaning of the content should remain the same. * It should sound natural. * No part of the content should be omitted. * If the question following <usr> is in an interrogative form, it should maintain that interrogative form. If it is a declarative sentence rather than an interrogative one, it should remain a declarative sentence. * The <usr> and <bot> tags should be preserved as is. * The <bcode> tag should be preserved as is. * Spelling and grammar should be corrected properly. * Emoticons or special characters, if present, should be preserved as is. * Proper nouns or technical terms should be translated appropriately or used as is from the original text. * The roles of <usr> and <bot> should be clearly distinguished. 34
  29. • 속도 올리기 – 토큰 생성 속도를 어마어마하게 올려야 함

    ✓ 챗봇이 아니니까… ✓ 100기가 정도를 처리한다고 생각해봅시다 – TensorRT-LLM / vLLM 최적화 ✓ 공개 서버 그대로로는 성능이 안나옴 • 문제 – (TRT-LLM 컴파일이 안되어서 고생) – (TensorRT-LLM 이 Triton Inference Server 알파버전에 안 붙어서 고생…) – 엄청난 양을 돌리니까 어쩐지 느리다 – TensorRT-LLM 의 성능 문제가 있는 것으로 보이는데? 문제 35
  30. • 프로파일링 – Nsight profiling log 찍어서 모든 인스 트럭션의

    실행 타이밍 추적 – 각 CUDA 커널 실행에 대한 memset 오버헤드가 높은 것을 발견 – 양자화, 기본 모델 옵션 등 다양한 최적화를 조정하여 속도와 성능 균형 맞추기 – Triton Inference Server로 TRT-LLM 백엔드를 호스팅하며 위에서 구한 최적화된 구성 테스트 – (삽질) 문제 해결하기: Deep dive 36
  31. • 배치: 큰 차이를 만드는 요소 – TensorRT-LLM엔 in-flight batching이

    없다 ✓ 모델 인퍼런스 도구의 역할이 아니라고 보는듯 ✓ TRT-LLM을 서빙하는 ‘솔루션’의 역할 ✓ Triton IS 의 알파 버전에 기능 구현 및 테스트 ✓ + ‘medusa’ 켜기 – vLLM은? ✓ 자체 모델 인퍼런스 서버 + 모델 호스트의 기능이 모두 존재해서 문제가 없음 ✓ ‘무조건 다 돌아야 한다’는 오픈소스적 철학의 영향인듯 문제 해결하기: 인퍼런스 시간 감소 0 100 200 300 400 vLLM Python API TRT-LLM Python API vLLM on Triton TRT-LLM on Triton seconds End-to-end Inference Time (Gemma-7B-it, n = 256, max input size 4096, max output size 4096, batch size 8) 37
  32. • 성능과 속도, 비용의 균형 – 2B보다는 7B (이후 9B)

    – 배치 크기가 큰 영향 • 데이터 품질 비교 – 예시 • 결과물 – 정리 후공개를! – (포스트프로세싱 삽질…) 결과: 성능 뽑기 38
  33. • 데이터 부족과 합성 데이터의 부자연스러움 문제 해결 – 데이터

    부족과 합성 데이터의 인위성을 극복하기 위한 방법 제안 • 대용량 데이터의 로컬 처리를 위한 최적화 – 방대한 데이터 세트의 로컬 처리를 최적화하는 기법 • 언어 모델의 방대한 적용 가능성 – 챗봇만 만들라는 법 있냐 – 언어 모델의 무한한 잠재적 활용 가능성 탐구 소주 제조기: Gemma를 한국어 데이터 증류기로 사용하기 39
  34. • 네트는 광대한데 – 쓰레기가 대부분이다 – 셰일 가스를 캘려면

    우선 가스가 있는 곳이어야… • 인터넷 아카이브 데이터 – 온갖 메뉴들과 의미없는 데이터들 산재 – 사전 필터링의 중요성 – 적당히 긴 컨텍스트의 텍스트가 필요한데 별로 없다 – 예전 데이터가 대부분 • LLM으로 저품질 데이터를 증류할 때 – 증류해서 고품질로 만들면 그 데이터에선 다양성 문제가 사라지는가? 문제점들 40