Ollama:treinamento

De BrapciWiki
Revisão de 18h27min de 22 de agosto de 2024 por Renefgj (discussão | contribs) (→‎Mantendo o modelo em memória)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

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")