Llama 2 출시 및 Hugging Face 통합

Meta가 상업적 용도로 사용 가능한 최첨단 오픈 액세스 대규모 언어 모델(LLM) 제품군인 Llama 2를 출시했습니다. 이번 출시는 커뮤니티에 폐쇄형 소스 챗봇에 대한 고성능 오픈 대안을 제공하는 사전 학습 및 미세 조정된 모델을 제공합니다.

Llama 2 모델 사양 및 개선 사항

Llama 2는 7B에서 70B 파라미터에 이르는 모델 제품군(구체적으로 7B, 13B, 70B)으로 구성됩니다. 이 모델들은 기존 Llama 1 시리즈에 비해 몇 가지 기술적 개선 사항을 도입했습니다:

  • 학습 데이터 증가: 사전 학습된 모델은 Llama 1보다 40% 더 많은 토큰으로 학습되었습니다.
  • 확장된 컨텍스트 윈도우: 컨텍스트 길이가 4k 토큰으로 증가했습니다.
  • 최적화된 추론: 70B 모델은 더 빠른 추론을 가능하게 하는 grouped-query attention을 활용합니다.

Llama 2-Chat: 대화 최적화

Llama 2-Chat 모델은 기본 모델의 미세 조정 버전으로, 인간 피드백 기반 강화 학습(RLHF)을 사용하여 대화 애플리케이션에 맞게 특별히 최적화되었습니다. 인간 평가에 따르면, Llama 2-Chat 모델은 ChatGPT에 필적하는 성능을 달성하며 다양한 안전성 및 유용성 벤치마크에서 대부분의 다른 오픈 모델보다 뛰어난 성능을 보입니다.

Hugging Face 통합 및 배포

Hugging Face는 배포와 미세 조정을 용이하게 하기 위해 Llama 2를 자사 생태계에 통합했습니다. 사용 가능한 통합 기능은 다음과 같습니다:

  • Transformers Library: 4.31 버전부터 전체 지원이 시작되어 사용자가 safetensors, bitsandbytes를 통한 4비트 양자화, 그리고 Parameter-Efficient Fine-Tuning (PEFT)을 활용할 수 있습니다.
  • Text Generation Inference (TGI): 연속 배칭(continuous batching), 토큰 스트리밍, 다중 GPU 설정을 위한 텐서 병렬 처리를 지원하는 프로덕션 준비 완료 컨테이너입니다.
  • Inference Endpoints: 권장 하드웨어 구성이 포함된 관리형 배포 옵션:
    • 7B 모델: 1x Nvidia A10G (GPU medium).
    • 13B 모델: 1x Nvidia A100 (GPU xlarge).
    • 70B 모델: bitsandbytes 양자화를 사용하는 2x Nvidia A100 (GPU 2xlarge) 또는 4x Nvidia A100 (GPU 4xlarge).

PEFT 및 QLoRA를 이용한 효율적인 미세 조정

Llama 2는 QLoRA와 trl 라이브러리의 SFTTrainer를 사용하여 소비자급 하드웨어에서 미세 조정할 수 있습니다. 예를 들어, 7B 변형은 Google Colab에서 사용 가능한 단일 NVIDIA T4 GPU (16GB)에서 지시어 미세 조정(instruction-tuned)이 가능합니다. 이 프로세스를 통해 사용자는 LoRA 가중치를 모델 가중치에 병합하고 TGI 또는 Inference Endpoints를 통한 프로덕션 배포를 위해 safetensor 가중치로 저장할 수 있습니다.

Llama 2-Chat을 위한 프롬프팅 프레임워크

Llama 2-Chat는 학습 절차와의 일관성을 유지하기 위해 특정 프롬프트 템플릿을 요구합니다. 이 템플릿은 특수 토큰을 사용하여 시스템 지침과 사용자 메시지를 구분합니다:

첫 번째 턴 템플릿: `[INST] <> {{ system_prompt }} <>

{{ user_message }} [/INST]`

다중 턴 대화 템플릿: `[INST] <> {{ system_prompt }} <>

{{ user_msg_1 }} [/INST] {{ model_answer_1 }} [INST] {{ user_msg_2 }} [/INST]`

Llama 2는 오픈 액세스 모델이므로 사용자가 system_prompt를 완전히 제어할 수 있어, 폐쇄형 소스 API에서 발견되는 제한 없이 어시스턴트의 성격과 행동을 정의할 수 있습니다. 이 기능은 다양한 프롬프트가 모델의 행동과 안전성에 미치는 영향을 연구하는 연구자들에게 특히 유용합니다.

Sources