Hugging Face 가이드: 코드 없이 LLaMA 2 챗봇 훈련하기

Hugging Face는 머신러닝 엔지니어링 배경을 갖지 않은 개인이 LLaMA 2 베이스 모델을 미세 조정하고 공유 가능한 챗 애플리케이션으로 배포할 수 있도록 하는 노코드 워크플로를 도입했습니다. 이 과정은 Spaces, AutoTrain, ChatUI이라는 통합 도구 모음을 활용하여 Large Language Model(LLM) 맞춤화에 대한 접근을 민주화합니다.

노코드 LLM 툴체인

Hugging Face는 LLM의 훈련 및 배포와 관련된 기술적 장벽을 제거하기 위해 세 가지 주요 서비스를 활용합니다:

  • Spaces: 웹 호스팅 ML 데모 및 앱을 구축하고 배포하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 서비스입니다. Gradio, Streamlit, Docker 컨테이너를 지원합니다.
  • AutoTrain: NLP, 컴퓨터 비전, 음성, 표형 데이터 등 다양한 분야에서 최첨단 ML 모델을 훈련하기 위해 설계된 노코드 도구입니다. LLM의 미세 조정을 특별히 지원합니다.
  • ChatUI: 오픈소스 사용자 인터페이스이며, HuggingChat을 구동하는 동일한 인터페이스로, 사용자가 오픈소스 LLM과 상호작용할 수 있게 합니다.

단계별 구현 워크플로

맞춤형 챗봇을 만드는 과정은 환경 설정, 모델 훈련, 애플리케이션 배포라는 세 가지 주요 단계로 나뉩니다.

1. AutoTrain 스페이스를 통한 환경 설정

시작하려면 사용자는 새로운 스페이스를 만들고 AutoTrain Docker 템플릿을 선택합니다. 주요 구성 요구 사항은 다음과 같습니다:

  • 하드웨어: 무료 CPU 기본 옵션이면 AutoTrain 앱 자체를 실행하기에 충분합니다. 실제 모델 훈련은 별도의 컴퓨팅 리소스에서 이루어지기 때문입니다.
  • 인증: 애플리케이션이 훈련된 모델을 사용자의 Hub 계정에 저장할 수 있도록 스페이스 시크릿에 Hugging Face 쓰기 액세스 토큰(HF_TOKEN)을 추가해야 합니다.

2. LLaMA 2 모델 미세 조정

AutoTrain 스페이스가 활성화되면 사용자는 GUI를 통해 훈련 작업을 구성할 수 있습니다:

  • 모델 선택: 사용자는 목록에서 모델을 선택하거나 모델 카드 이름을 제공할 수 있습니다. 예를 들어, Meta Llama 2 7b 기초 모델을 사용할 수 있습니다(Llama 2는 메타의 승인이 필요한 게이트 모델임을 유의하세요).
  • 컴퓨팅 리소스: 7b 모델을 훈련하려면 일반적으로 'A10G Large' GPU가 필요합니다. 더 큰 모델은 모델 전체를 수용할 수 있는 충분한 메모리를 가진 GPU가 필요합니다.
  • 훈련 데이터: 데이터는 CSV 형식으로 업로드해야 합니다. 이 가이드는 예시로 Alpaca instruction tuning 데이터셋을 사용합니다.
  • 최적화: AutoTrain은 성능에 최소한의 영향을 주면서 메모리 사용량과 훈련 비용을 줄이기 위해 정밀도(FP16), 양자화(Int4/8), 매개변수 효율적 미세 조정(PEFT)에 대한 기본 설정을 제공합니다.

3. 챗 애플리케이션 배포

모델이 훈련되어 Hugging Face Hub에 저장된 후, 두 번째 스페이스를 사용하여 배포됩니다:

  • 템플릿: 사용자는 ChatUI Docker 템플릿을 선택합니다.
  • 하드웨어: 7b 모델을 실행하기에는 A10G Small GPU가 충분합니다.
  • 구성: MODEL_NAME 변수는 Hub에서 훈련된 모델의 이름으로 설정해야 합니다. 사용자는 채팅 로그를 저장하기 위해 선택적으로 MONGODB_URL을 제공할 수도 있으며, 그렇지 않으면 로컬 데이터베이스가 자동으로 생성됩니다.
  • 추론 튜닝: 사용자는 온도, top-p, 생성된 최대 토큰과 같은 매개변수를 조정하여 모델 응답의 특성을 수정할 수 있습니다.

Sources