소개 | 설치 | 시작하기 | 문서 | 커뮤니티 | 라이센스 | 토치튠 인용
중요한
2024년 9월 25일 업데이트: torchtune은 Llama 3.2 11B Vision , Llama 3.2 3B 및 Llama 3.2 1B 모델을 지원합니다! 여기에 있는 설치 지침을 따라 시험해 본 다음 여기에서 텍스트 구성을 실행하거나 여기에서 비전 구성을 실행하세요.
torchtune은 LLM을 쉽게 작성하고 미세 조정하고 실험할 수 있는 PyTorch 라이브러리입니다.
토치튠은 다음을 제공합니다:
Llama, Gemma, Mistral, Phi 및 Qwen 모델 계열의 인기 있는 LLM을 PyTorch로 구현
전체 미세 조정, LoRA, QLoRA, DPO, PPO, QAT, 지식 증류 등을 위한 해킹 가능한 교육 레시피
최신 PyTorch API를 통한 즉시 사용 가능한 메모리 효율성, 성능 개선 및 확장
교육, 평가, 양자화 또는 추론 레시피를 쉽게 구성하기 위한 YAML 구성
널리 사용되는 다양한 데이터 세트 형식 및 프롬프트 템플릿에 대한 기본 지원
torchtune은 현재 다음 모델을 지원합니다.
모델 | 크기 |
---|---|
Llama3.2-비전 | 11B [모델, 구성] |
라마3.2 | 1B, 3B [모델, 구성] |
라마3.1 | 8B, 70B, 405B [모델, 구성] |
라마3 | 8B, 70B [모델, 구성] |
라마2 | 7B, 13B, 70B [모델, 구성] |
코드-라마2 | 7B, 13B, 70B [모델, 구성] |
미스트랄 | 7B [모델, 구성] |
아체 | 2B, 7B [모델, 구성] |
마이크로소프트 Phi3 | 미니 [모델, 구성] |
Qwen2 | 0.5B, 1.5B, 7B [모델, 구성] |
우리는 항상 새로운 모델을 추가하고 있지만, torchtune에서 보고 싶은 새로운 모델이 있으면 언제든지 문제를 제출해 주세요.
torchtune은 하나 이상의 장치에 대한 훈련을 위해 다음과 같은 미세 조정 레시피를 제공합니다.
미세 조정 방법 | 장치 | 레시피 | 예시 구성 |
---|---|---|---|
전체 미세 조정 | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B 단일 장치 라마 3.1 70B 배포 |
LoRA 미세 조정 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0.5B 단일 장치 젬마 7B 배포 |
QLoRA 미세 조정 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini 단일 장치 라마 3.1 405B 배포 |
DoRA/QDoRA 미세 조정 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA 단일 장치 Llama3 8B DoRA 배포 |
양자화 인식 훈련 | 4-8 | qat_distributed | 라마3 8B QAT |
직접 선호도 최적화 | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B 단일 장치 Llama2 7B 배포됨 |
근접 정책 최적화 | 1 | ppo_full_finetune_single_device | 미스트랄 7B |
지식 증류 | 1 | Knowledge_distillation_single_device | Qwen2 1.5B -> 0.5B |
위 구성은 시작하기 위한 예시일 뿐입니다. 위의 모델이 여기에 나열되지 않은 경우에도 해당 모델을 계속 지원할 가능성이 높습니다. 지원되는 항목이 있는지 확실하지 않은 경우 리포지토리에서 문제를 열어보세요.
다음은 다양한 Llama 3.1 모델에 대한 메모리 요구 사항 및 훈련 속도의 예입니다.
메모
쉽게 비교할 수 있도록 배치 크기 2(그라디언트 누적 없음), 시퀀스 길이 2048로 압축된 데이터 세트 및 토치 컴파일이 활성화된 경우 아래의 모든 숫자가 제공됩니다.
다른 하드웨어나 다른 모델에서 실행하는 데 관심이 있다면 여기에서 메모리 최적화에 대한 문서를 확인하여 적합한 설정을 찾으세요.
모델 | 미세 조정 방법 | 실행 가능 | GPU당 최대 메모리 | 토큰/초 * |
---|---|---|---|---|
라마 3.1 8B | 완전한 미세 조정 | 1x4090 | 18.9GiB | 1650년 |
라마 3.1 8B | 완전한 미세 조정 | 1x A6000 | 37.4GiB | 2579 |
라마 3.1 8B | 로라 | 1x4090 | 16.2GiB | 3083 |
라마 3.1 8B | 로라 | 1x A6000 | 30.3GiB | 4699 |
라마 3.1 8B | QLoRA | 1x4090 | 7.4GiB | 2413 |
라마 3.1 70B | 완전한 미세 조정 | A100 8개 | 13.9GiB ** | 1568년 |
라마 3.1 70B | 로라 | A100 8개 | 27.6GiB | 3497 |
라마 3.1 405B | QLoRA | A100 8개 | 44.8GB | 653 |
*= 전체 훈련 에포크 1회 동안 측정됨
**= 융합 최적화 프로그램과 함께 CPU 오프로드를 사용합니다.
torchtune은 최신 안정 PyTorch 릴리스와 미리보기 Nightly 버전으로 테스트되었습니다. torchtune은 멀티모달 LLM을 미세 조정하기 위해 torchvision을 활용하고 최신 양자화 기술을 위해 torchao를 활용합니다. 이것도 설치해야합니다.
# 안정적인 PyTorch, torchvision, torchao 안정적인 릴리스 설치spip 토치 torchvision torchao 설치 pip로 토치튠 설치
# PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # 전체 옵션은 cpu/cu118/cu121/cu124pip install입니다. --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
또한 소스에서 Torchtune 설치를 포함한 자세한 내용은 설치 설명서를 확인하실 수 있습니다.
패키지가 올바르게 설치되었는지 확인하려면 다음 명령을 실행할 수 있습니다.
조정 --도움말
그러면 다음 출력이 표시됩니다.
사용법: tune [-h] {ls,cp,download,run,validate} ... torchtune CLI에 오신 것을 환영합니다!옵션: -h, --help 이 도움말 메시지를 표시하고 종료합니다...
torchtune을 시작하려면 첫 번째 Finetune 튜토리얼을 참조하세요. 엔드투엔드 워크플로 튜토리얼에서는 Llama 모델을 사용하여 추론을 평가, 수량화 및 실행하는 방법을 보여줍니다. 이 섹션의 나머지 부분에서는 Llama3.1의 이러한 단계에 대한 간략한 개요를 제공합니다.
공식 Llama 모델 가중치에 액세스하려면 공식 meta-llama
저장소의 지침을 따르세요. 액세스를 확인하면 다음 명령을 실행하여 가중치를 로컬 머신에 다운로드할 수 있습니다. 그러면 토크나이저 모델과 책임감 있는 사용 가이드도 다운로드됩니다.
Llama3.1을 다운로드하려면 다음을 실행하세요.
조정 다운로드 Meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "original/consolidated.00.pth" --hf-token
팁
액세스를 검증하려면 환경 변수 HF_TOKEN
설정하거나 명령에 --hf-token
전달하세요. https://huggingface.co/settings/tokens에서 토큰을 찾을 수 있습니다.
다음 명령을 사용하여 단일 GPU에서 LoRA가 포함된 Llama3.1 8B를 미세 조정할 수 있습니다.
조정 실행 lora_finetune_single_device --config llama3_1/8B_lora_single_device
분산 교육을 위해 tune CLI는 torchrun과 통합됩니다. 두 개의 GPU에서 Llama3.1 8B의 전체 미세 조정을 실행하려면:
조정 실행 --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
팁
레시피 사양 앞에 torchrun 명령을 배치해야 합니다. 이후의 모든 CLI 인수는 구성을 재정의하고 분산 교육에 영향을 주지 않습니다.
구성을 수정하는 방법에는 두 가지가 있습니다.
구성 재정의
명령줄에서 구성 필드를 직접 덮어쓸 수 있습니다.
조정 실행 lora_finetune_single_device --config llama2/7B_lora_single_device 배치_크기=8 활성화_활성화_체크포인트=참 max_steps_per_epoch=128
로컬 복사본 업데이트
구성을 로컬 디렉터리에 복사하고 내용을 직접 수정할 수도 있습니다.
조정 cp llama3_1/8B_full ./my_custom_config.yaml ./my_custom_config.yaml에 복사됨
그런 다음 tune run
명령을 로컬 파일로 지정하여 사용자 지정 레시피를 실행할 수 있습니다.
조정 실행 full_finetune_distributed --config ./my_custom_config.yaml
가능한 모든 CLI 명령과 옵션에 대해서는 tune --help
확인하세요. 구성 사용 및 업데이트에 대한 자세한 내용은 구성 심층 분석을 살펴보세요.
torchtune은 지시 스타일, 채팅 스타일, 기본 설정 데이터 세트 등을 포함한 다양한 데이터 세트에 대한 미세 조정을 지원합니다. 이러한 구성요소를 적용하여 사용자 정의 데이터 세트를 미세 조정하는 방법에 대해 자세히 알아보려면 API 문서와 함께 제공된 링크를 확인하세요.
torchtune은 생태계의 인기 도구 및 라이브러리와의 통합에 중점을 둡니다. 다음은 몇 가지 예일 뿐이며 더 많은 개발이 진행 중입니다.
모델 가중치에 액세스하기 위한 Hugging Face Hub
학습된 모델을 평가하기 위한 EleutherAI의 LM Eval Harness
훈련 및 평가 데이터 세트에 액세스하기 위한 Hugging Face 데이터 세트
분산 훈련을 위한 PyTorch FSDP2
정밀도가 낮은 dtype과 훈련 후 양자화 기술을 위한 torchao
측정항목 및 체크포인트를 기록하고 훈련 진행 상황을 추적하기 위한 가중치 및 편향
로깅을 위한 또 다른 옵션인 혜성
미세 조정된 모델을 사용한 온디바이스 추론을 위한 ExecuTorch
단일 장치 레시피를 위한 낮은 메모리 최적화 프로그램을 위한 비트와바이트
Hugging Face 생태계의 torchtune 모델을 통한 지속적인 미세 조정 또는 추론을 위한 PEFT
우리는 커뮤니티와 훌륭한 사용자들의 기여를 진심으로 소중히 여깁니다. 우리는 이 섹션을 사용하여 이러한 기여 중 일부를 언급할 것입니다. 당신도 도움을 주고 싶다면 CONTRIBUTING 가이드를 참조하세요.
@SalmanMohammadi는 PPO를 사용하여 RLHF(인간 피드백으로부터의 강화 학습) 미세 조정을 위한 포괄적인 엔드투엔드 레시피를 추가해 횃불조정에 참여했습니다.
Qwen2 모델, 토크나이저 및 레시피 통합을 torchtune에 추가해 주신 @fyabc
레시피 변경, 모델의 수치 검증 및 레시피 정확성을 포함하여 Gemma 2B 모델을 torchtune에 추가해 주신 @solitude-alive
정확성 검사와 함께 레시피 및 구성을 포함하여 torchtune에 DPO(Direct Preference Optimization)를 추가한 @yechenzhi
이 저장소의 Llama2 코드는 원본 Llama2 코드에서 영감을 받았습니다.
우리는 훌륭한 협력자가 되어주고 torchtune 내에서 이러한 통합 중 일부를 우리와 함께 작업한 EleutherAI, Hugging Face 및 Weights & Biases에 큰 박수를 보내고 싶습니다.
우리는 또한 생태계의 멋진 라이브러리와 도구에 대해서도 감사의 말씀을 전하고 싶습니다.
우리가 즉시 채택한 고성능 LLM 추론 기술을 위한 gpt-fast
llama2 커뮤니티의 스프링 보딩을 위한 라마 레시피
PyTorch 생태계에 여러 가지 메모리 및 성능 기반 기술을 제공하는 비트샌드바이트
@winglian과 axolotl은 torchtune의 디자인과 기능 세트에 대한 초기 피드백과 브레인스토밍을 담당합니다.
LLM 미세 조정 커뮤니티를 발전시키기 위한 lit-gpt입니다.
PyTorch 커뮤니티에서 보상 모델링에 더 쉽게 접근할 수 있도록 하기 위한 HF TRL입니다.
torchtune은 BSD 3 라이센스로 출시되었습니다. 그러나 귀하에게는 제3자 모델의 서비스 약관과 같이 다른 콘텐츠 사용에 적용되는 기타 법적 의무가 있을 수 있습니다.
Torchtune 라이브러리가 유용하다고 생각되면 아래와 같이 작업에 인용해 주세요.
@software{torchtune, 제목 = {torchtune: PyTorch의 미세 조정 라이브러리}, 작성자 = {torchtune 관리자 및 기여자}, url = {https//github.com/pytorch/torchtune}, 라이센스 = {BSD-3-Clause}, 월 = 4월, 연도 = {2024}}