Axolotl
Axolotl
Axolotl은 대규모 언어 모델(large language model)을 위한 파인튜닝(fine-tuning) 및 후학습(post-training) 프레임워크예요. 어댑터 기반 튜닝, ND-병렬 분산 학습, GRPO, QAT를 지원해요. TRL을 통해 Axolotl은 선호 학습(preference learning), 강화 학습(reinforcement learning), 보상 모델링(reward modeling) 워크플로도 처리해요.
출처: 문서
본문
학습 실행을 YAML 설정 파일로 정의해요.
base_model: NousResearch/Nous-Hermes-llama-1b-v1
model_type: AutoModelForCausalLM
tokenizer_type: AutoTokenizer
datasets:
- path: tatsu-lab/alpaca
type: alpaca
output_dir: ./outputs
sequence_len: 512
micro_batch_size: 1
gradient_accumulation_steps: 1
num_epochs: 1
learning_rate: 2.0e-5
train 명령으로 학습을 시작해요.
axolotl train my_config.yml
Transformers 통합 (Transformers integration)
Axolotl의 ModelLoader는 Transformers 로드 흐름을 감싸요.
-
모델 config는 AutoConfig.from_pretrained()으로 만들어져요. 사전 로드(preload) 설정은 device map, 양자화 config, attention 백엔드를 구성해요.
-
ModelLoader는 적절한 AutoModel 클래스(AutoModelForCausalLM, AutoModelForImageTextToText, AutoModelForSequenceClassification)나 멀티모달 매핑의 모델별 클래스를 자동으로 선택해요. 가중치는 선택된 로더의from_pretrained로 로드돼요.reinit_weights가 설정되면 Axolotl은 랜덤 초기화를 위해from_config를 사용해요. -
Axolotl은 LoRA, QLoRA 같은 PEFT 기반 기법이 활성화되면 모델 초기화 후 어댑터를 적용하기 위해 Transformers, PEFT, bitsandbytes를 사용해요. 패치 매니저(patch manager)가 모델 로드 전후에 추가 최적화를 적용해요.
-
AxolotlTrainer는 Trainer를 확장해, Trainer 학습 루프와 API를 사용하면서 Axolotl mixin을 더해요.
리소스 (Resources)
- Axolotl 문서