O fine-tuning de modelos de inteligência artificial como o Llama 3.3 da Meta permite adaptar modelos pré-treinados para tarefas específicas, melhorando seu desempenho e adequação às necessidades particulares de cada aplicação. Este tutorial oferece um guia completo para realizar o fine-tuning do Llama 3.3 na plataforma Google Cloud Platform (GCP), utilizando recursos robustos e práticas recomendadas.
Primeiramente, acesse o Console do GCP e crie um novo projeto ou selecione um existente para organizar os recursos que serão utilizados no processo de fine-tuning.
Ative as seguintes APIs essenciais:
gcloud services enable aiplatform.googleapis.com compute.googleapis.com storage.googleapis.com
Crie um bucket no Cloud Storage para armazenar o dataset e os checkpoints do modelo:
gsutil mb -l us-central1 gs://seu-bucket-nome/
Para realizar o treinamento, é necessário uma máquina virtual com capacidade de processamento gráfico (GPU). Utilize o seguinte comando para criar uma instância com uma GPU NVIDIA A100:
gcloud compute instances create llama-training \
--zone=us-central1-a \
--machine-type=n1-standard-8 \
--accelerator="type=nvidia-tesla-a100,count=1" \
--boot-disk-size=100GB \
--image-family=common-cu110 \
--image-project=deeplearning-platform-release \
--maintenance-policy=TERMINATE \
--restart-on-failure
Conecte-se à instância criada via SSH através do Console do GCP ou utilizando o comando:
gcloud compute ssh llama-training --zone=us-central1-a
Atualize os pacotes e instale o Python 3.9:
sudo apt update
sudo apt install python3.9 python3.9-venv -y
Crie e ative um ambiente virtual para isolar as dependências do projeto:
python3.9 -m venv llama-env
source llama-env/bin/activate
Instale o PyTorch com suporte para GPUs NVIDIA:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Instale as bibliotecas necessárias para manipulação e treinamento do modelo:
pip install transformers datasets accelerate peft
Baixe o modelo Llama 3.3 da Meta utilizando a biblioteca Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "meta-llama/Llama-3.3"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
Salve o modelo e o tokenizer localmente para uso posterior:
model.save_pretrained("./llama-3.3")
tokenizer.save_pretrained("./llama-3.3")
Selecione um conjunto de dados relevante para a tarefa desejada e carregue-o utilizando a biblioteca Datasets:
from datasets import load_dataset
dataset = load_dataset("OpenAssistant/oasst1")
Tokenize o conjunto de dados para prepará-lo para o treinamento:
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_dataset = dataset.map(tokenize_function, batched=True)
Divida o conjunto de dados em conjuntos de treino e validação:
train_dataset = tokenized_dataset["train"]
val_dataset = tokenized_dataset["validation"]
Configure os parâmetros de treinamento, como taxa de aprendizado, número de épocas, tamanho do lote, entre outros:
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir="./llama-3.3-finetuned",
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=3,
evaluation_strategy="epoch",
save_strategy="epoch",
logging_dir="./logs",
logging_steps=10,
fp16=True, # Ativar mixed precision para GPUs NVIDIA
)
Configure o Trainer para gerenciar o processo de fine-tuning:
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
tokenizer=tokenizer,
)
Inicie o processo de fine-tuning executando o método train() do Trainer:
trainer.train()
Após a conclusão do treinamento, salve o modelo fine-tunado para uso futuro:
trainer.save_model("./llama-3.3-finetuned")
Carregue o modelo fine-tunado e prepare-se para realizar testes:
from transformers import pipeline
finetuned_model = AutoModelForCausalLM.from_pretrained("./llama-3.3-finetuned")
finetuned_tokenizer = AutoTokenizer.from_pretrained("./llama-3.3-finetuned")
generator = pipeline("text-generation", model=finetuned_model, tokenizer=finetuned_tokenizer)
Teste o modelo gerando texto com entradas específicas:
output = generator("Qual é a capital da França?")
print(output)
O resultado esperado é que o modelo responda corretamente com "Paris".
Siga os passos abaixo para implantar o modelo fine-tunado utilizando o Vertex AI:
Utilize o endpoint criado para realizar previsões em tempo real, integrando o modelo às suas aplicações.
Realizar o fine-tuning do modelo Llama 3.3 na GCP envolve uma série de etapas detalhadas, desde a configuração do ambiente até a implantação do modelo em produção. É fundamental seguir as práticas recomendadas para garantir a eficiência e a eficácia do processo: