# Axolotl

[Axolotl](https://docs.axolotl.ai/) é um framework de fine-tuning e pós-treinamento para grandes modelos de linguagem. Ele suporta tuning baseado em adaptadores, treinamento distribuído ND-parallel, GRPO e QAT. Por meio do [TRL](./trl), o Axolotl também gerencia fluxos de trabalho de aprendizado por preferências, aprendizado por reforço e modelagem de recompensas.

Defina sua execução de treinamento em um arquivo de configuração YAML.

```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
```

Inicie o treinamento com o comando [train](https://docs.axolotl.ai/docs/cli.html#train).

```bash
axolotl train my_config.yml
```

## Integração com Transformers

O [ModelLoader](https://docs.axolotl.ai/docs/api/loaders.model.html#axolotl.loaders.model.ModelLoader) do Axolotl encapsula o fluxo de carregamento do Transformers.

- A configuração do modelo é construída a partir de [AutoConfig.from_pretrained()](/docs/transformers/main/pt/model_doc/auto#transformers.AutoConfig.from_pretrained). A configuração de pré-carregamento define o [device map](https://huggingface.co/docs/accelerate/concept_guides/big_model_inference#designing-a-device-map), a [quantization config](../main_classes/quantization) e o [attention backend](../attention_interface).

- `ModelLoader` seleciona automaticamente a classe [AutoModel](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModel) adequada ([AutoModelForCausalLM](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModelForCausalLM), [AutoModelForImageTextToText](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModelForImageTextToText), [AutoModelForSequenceClassification](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModelForSequenceClassification)) ou uma classe específica do modelo a partir do mapeamento multimodal. Os pesos são carregados com o `from_pretrained` do loader selecionado. Quando `reinit_weights` está definido, o Axolotl usa `from_config` para inicialização aleatória.

- O Axolotl usa Transformers, [PEFT](https://huggingface.co/docs/peft/index) e [bitsandbytes](https://huggingface.co/docs/bitsandbytes/index) para aplicar adaptadores após a inicialização do modelo quando técnicas baseadas em PEFT, como LoRA e QLoRA, estão habilitadas. Um gerenciador de patches aplica otimizações adicionais antes e depois do carregamento do modelo.

- [AxolotlTrainer](https://docs.axolotl.ai/docs/api/core.trainers.base.html#axolotl.core.trainers.base.AxolotlTrainer) estende [Trainer](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer), adicionando os mixins do Axolotl enquanto utiliza o loop de treinamento e as APIs do [Trainer](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer).

## Recursos

- Documentação do [Axolotl](https://docs.axolotl.ai/)

