Ollama:treinamento
Revisão de 18h27min de 22 de agosto de 2024 por Renefgj (discussão | contribs) (→Mantendo o modelo em memória)
Índice
Conceitos
Versões
- 0.1.45
- 0.3.6 - Version
Instalado modelos
ollama run llama3.1 ""
Three sizes: 2B, 9B and 27B parameters
2B Parameters ollama run gemma2:2b 9B Parameters ollama run gemma2 27B Parameters ollama run gemma2:27b
Mantendo o modelo em memória
For example, to preload a model and leave it in memory use:
curl http://localhost:11434/api/generate -d '{"model": "llama3", "keep_alive": -1}' curl http://localhost:11434/api/generate -d '{"model": "gemma2:27b", "keep_alive": -1}'
To unload the model and free up memory use:
curl http://localhost:11434/api/generate -d '{"model": "llama3", "keep_alive": 0}' curl http://localhost:11434/api/generate -d '{"model": "gemma2:27b", "keep_alive": 0}'
Treinamento
Instalar Bibliotecas Necessárias
pip install transformers torch datasets
Preparar os Dados
Estruture seus dados para que estejam em um formato que possa ser facilmente carregado. Um exemplo de formato JSON:
[
{"input": "texto de entrada 1", "output": "resposta 1"},
{"input": "texto de entrada 2", "output": "resposta 2"}
]
Carregar os Dados
Utilize a biblioteca datasets para carregar e preparar seus dados:
from datasets import load_dataset
dataset = load_dataset('json', data_files={'train': 'path_to_train_data.json', 'validation': 'path_to_val_data.json'})
Configurando o modelo
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "facebook/llama-3" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name)
Pré-processar os Dados
Tokenize os dados para que possam ser processados pelo modelo:
def tokenize_function(examples): return tokenizer(examples["input"], padding="max_length", truncation=True) tokenized_datasets = dataset.map(tokenize_function, batched=True)
Treinar o Modelo
from transformers import Trainer, TrainingArguments training_args = TrainingArguments( output_dir="./results", evaluation_strategy="epoch", learning_rate=2e-5, per_device_train_batch_size=8, per_device_eval_batch_size=8, num_train_epochs=3, weight_decay=0.01, ) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_datasets["train"], eval_dataset=tokenized_datasets["validation"], ) trainer.train()
Avaliar o Modelo
Após o treinamento, avalie o modelo nos dados de validação:
eval_results = trainer.evaluate()
print(f"Perplexity: {math.exp(eval_results['eval_loss']):.2f}")
Salvar o Modelo Treinado
Salve o modelo e o tokenizer ajustados para uso futuro:
model.save_pretrained("./llama3-finetuned")
tokenizer.save_pretrained("./llama3-finetuned")