Mudanças entre as edições de "Ollama:treinamento"
Ir para navegação
Ir para pesquisar
| (5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
| + | =Conceitos= | ||
| + | * [[Retrieval Augmented Generation]] (RAG) | ||
| + | |||
| + | =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= | =Treinamento= | ||
==Instalar Bibliotecas Necessárias == | ==Instalar Bibliotecas Necessárias == | ||
| Linha 48: | Linha 71: | ||
trainer.train() | 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") | ||
Edição atual tal como às 18h27min de 22 de agosto de 2024
Í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")