Todos os produtos
Search
Central de documentação

Platform For AI:Fine-tuning Llama3-8B

Última atualização: Aug 28, 2026

O DSW é uma plataforma interativa de modelagem para personalizar modelos por meio de ajuste fino. Este tópico descreve como ajustar o modelo Llama-3-8B-Instruct no DSW para melhorar seu desempenho em tarefas específicas.

Contexto

O Llama3 é o modelo mais recente da série Llama, lançado pela Meta em abril de 2024. Treinado com mais de 15 trilhões de tokens — volume sete vezes superior ao conjunto de dados do Llama2 —, ele oferece suporte a um comprimento de contexto de 8K e utiliza um tokenizador aprimorado com vocabulário de 128K tokens. Isso permite um tratamento mais preciso de contextos complexos e terminologias especializadas.

O Llama3 está disponível nos tamanhos de 8B e 70B parâmetros, cada um com uma versão pré-treinada e uma versão ajustada por instruções.

  • Versão 8B

    Ideal para GPUs de consumo, esta versão permite implantação rápida em sistemas com recursos computacionais limitados e atende a aplicações que exigem tempos de resposta ágeis e custo-benefício.

    • Meta-Llama-3-8b: O modelo pré-treinado de 8B.

    • Meta-Llama-3-8b-instruct: A versão ajustada por instruções do modelo de 8B.

  • Versão 70B

    Projetada para aplicações de IA em larga escala, esta versão lida com tarefas altamente complexas que demandam desempenho superior do modelo.

    • Meta-Llama-3-70b: O modelo pré-treinado de 70B.

    • Meta-Llama-3-70b-instruct: A versão ajustada por instruções do modelo de 70B.

Pré-requisitos

  • Crie um workspace. Para mais informações, consulte Create and manage workspaces.

  • Crie uma instância do DSW. Configure os seguintes parâmetros principais. Para mais informações, consulte Create a DSW instance.

    • Tipo de instância: Utilize uma instância GPU com pelo menos 16 GB de memória GPU, como uma V100.

    • Ambiente Python: Use Python 3.9 ou posterior.

    • Imagem: No campo Image URL, insira dsw-registry-vpc.REGION.cr.aliyuncs.com/pai-training-algorithm/llm_deepspeed_peft:v0.0.3. Substitua REGION pelo ID da região onde sua instância do DSW está localizada, como cn-hangzhou ou cn-shanghai. Para obter a lista completa de regiões e seus respectivos IDs, consulte a tabela a seguir.

      Região

      ID da Região

      China (Hangzhou)

      cn-hangzhou

      China (Shanghai)

      cn-shanghai

      China (Beijing)

      cn-beijing

      China (Shenzhen)

      cn-shenzhen

  • Antes de usar o modelo de linguagem grande Llama3, leia a licença oficial da Meta.

    Nota

    Se não conseguir acessar a página, talvez seja necessário configurar um proxy e tentar novamente.

Etapa 1: Baixar o modelo

Método 1: Baixar no DSW

  1. Abra o ambiente de desenvolvimento do DSW.

    1. Faça login no PAI console.

    2. No canto superior esquerdo, selecione a região onde sua instância do DSW está localizada.

    3. No painel de navegação à esquerda, clique em Workspaces. Na página Workspaces, clique em nome do workspace padrão.

    4. No painel de navegação à esquerda, escolha Model Training > Data Science Workshop (DSW).

    5. Localize a instância desejada e clique em Open na coluna Actions para entrar no ambiente de desenvolvimento do DSW.

  2. Na página Launcher, na seção Notebook, clique em Python 3.

  3. Execute o código a seguir para baixar os arquivos do modelo. O código seleciona automaticamente uma fonte de download apropriada e salva os arquivos no diretório atual.

    ! pip install modelscope==1.32.0 transformers==4.37.0
    from modelscope.hub.snapshot_download import snapshot_download
    snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='.', revision='master')

Método 2: Baixar da Meta

Acesse o site da Meta para solicitar e baixar o modelo.

Nota

Se não conseguir acessar a página, talvez seja necessário configurar um proxy e tentar novamente.

Etapa 2: Preparar o conjunto de dados

Este exemplo utiliza um conjunto de dados de poesia em inglês para ajustar o modelo Llama 3 e aprimorar sua capacidade de gerar poemas. Execute o comando abaixo em um Notebook do DSW para baixar o conjunto de dados de treinamento.

!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/tutorial/llm_instruct/en_poetry_train.json

Também é possível preparar seu próprio conjunto de dados no mesmo formato, adaptado ao seu caso de uso específico.

Etapa 3: Ajustar o modelo

Treinamento leve com LoRA

Este tutorial usa o script de treinamento /ml/code/sft.py para executar o treinamento leve de Low-Rank Adaptation (LoRA). Após o treinamento, os parâmetros do modelo são quantizados para reduzir o uso de memória GPU durante a inferência.

Ao executar o comando accelerate launch, o sistema inicia o script Python especificado com os parâmetros fornecidos. O treinamento ocorre com base nas configurações do arquivo multi_gpu.yaml, utilizando os recursos computacionais disponíveis.

! accelerate launch --num_processes 1 --config_file /ml/code/multi_gpu.yaml /ml/code/sft.py \
    --model_name  ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
    --model_type llama \
    --train_dataset_name en_poetry_train.json \
    --num_train_epochs 3 \
    --batch_size 8 \
    --seq_length 128 \
    --learning_rate 5e-4 \
    --lr_scheduler_type linear \
    --target_modules k_proj o_proj q_proj v_proj \
    --output_dir lora_model/ \
    --apply_chat_template \
    --use_peft \
    --load_in_4bit \
    --peft_lora_r 32 \
    --peft_lora_alpha 32 

A seção a seguir descreve os parâmetros utilizados neste exemplo. Modifique-os conforme suas necessidades.

  • O comando accelerate launch inicia e gerencia scripts de treinamento de deep learning em múltiplas GPUs.

    • num_processes 1: Define o número de processos como 1, desativando a paralelização multiprocesso.

    • config_file/ml/code/multi_gpu.yaml: O caminho para o arquivo de configuração.

    • /ml/code/sft.py: O caminho para o script Python a ser executado.

  • Parâmetros do script /ml/code/sft.py:

    • --model_name./LLM-Research/Meta-Llama-3-8B-Instruct/: O caminho para o modelo pré-treinado.

    • --model_type llama: O tipo de modelo. Este exemplo usa llama.

    • --train_dataset_name en_poetry_train.json: O caminho para o conjunto de dados de treinamento.

    • --num_train_epochs 3: O número de épocas de treinamento.

    • --batch_size 8: O tamanho do lote.

    • --seq_length 128: O comprimento da sequência.

    • --learning_rate 5e-4: A taxa de aprendizado (0,0005).

    • --lr_scheduler_type linear: O tipo de agendador de taxa de aprendizado.

    • --target_modules k_proj o_proj q_proj v_proj: Os módulos alvo do modelo durante o ajuste fino.

    • --output_dir lora_model/: O diretório de saída para o modelo ajustado.

    • --apply_chat_template: Aplica um modelo de chat durante o treinamento.

    • --use_peft: Ativa métodos de Parameter-Efficient Fine-Tuning (PEFT).

    • --load_in_4bit: Carrega os pesos do modelo com precisão de 4 bits para reduzir o consumo de memória.

    • --peft_lora_r 32: O rank (r) das matrizes LoRA.

    • --peft_lora_alpha 32: O fator de escala LoRA (alpha).

Mesclar pesos LoRA

Execute o comando a seguir para mesclar os pesos LoRA com o modelo pré-treinado.

! RANK=0 python /ml/code/convert.py \
    --model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
    --model_type llama \
    --output_dir trained_model/ \
    --adapter_dir lora_model/

Os parâmetros utilizados neste exemplo estão descritos abaixo:

  • RANK=0: A variável de ambiente RANK indica o rank do processo atual no treinamento distribuído. Um valor de 0 significa processo único ou processo principal.

  • python /ml/code/convert.py: Executa o script convert.py para conversão de pesos.

  • --model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/: O caminho para o modelo pré-treinado.

  • --model_type llama: O tipo de modelo.

  • --output_dir trained_model/: O diretório para o modelo convertido e seus pesos.

  • --adapter_dir lora_model/: O diretório contendo os pesos do adaptador LoRA.

Etapa 4: Executar inferência

Execute o código a seguir para realizar a inferência e verificar os resultados do ajuste fino. Neste exemplo, solicita-se ao modelo que escreva um poema sobre a primavera:

import torch, transformers

# model_id = "./LLM-Research/Meta-Llama-3-8B-Instruct/"
model_id = "./trained_model/"
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda",
)

messages = [
    {"role": "user", "content": "Write a poem on a topic 'spring' "},
]

prompt = pipeline.tokenizer.apply_chat_template(
        messages, 
        tokenize=False, 
        add_generation_prompt=True
)

terminators = [
    pipeline.tokenizer.eos_token_id,
    pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = pipeline(
    prompt,
    max_new_tokens=1024,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])

Veja abaixo um exemplo de resposta. O modelo ajustado agora consegue gerar poesia:

Here's a poem on the topic of "Spring":

As winter's chill begins to fade,
The earth awakens from its shade,
And spring's sweet breath begins to blow,
Bringing life to all that's cold and slow.

The trees regain their vibrant hue,
And flowers bloom, both old and new,
Their petals dancing in the breeze,
As sunshine warms the world with ease.

The air is filled with sweet perfume,
As blossoms burst forth in their room,
And robins sing their morning song,
As spring's awakening is strong.

The world is fresh, and new, and bright,
As spring's warm light begins to take flight,
And all around, new life unfolds,
As winter's grip begins to grow old.

So let us bask in spring's warm rays,
And let our spirits soar and sway,
For in this season, we're reborn,
And all around, new life is sworn.

I hope you enjoy it!

Etapa 5: Implantar o modelo

Faça upload dos pesos do modelo ajustado para o Object Storage Service (OSS) e implante o modelo como serviço usando o Elastic Algorithm Service (EAS) ChatLLM. Para mais informações, consulte Deploy LLM applications in EAS.

Apêndice: Executar o Llama3 a partir da DSW Gallery

A DSW Gallery fornece exemplos pré-construídos de Notebooks para o Llama3. Abra um exemplo em sua instância do DSW e execute-o diretamente ou modifique-o conforme suas necessidades. Para mais informações, consulte Notebook Gallery.

Perguntas frequentes

**P: Erro FileDownloadError: File config.json download incomplete...**

No Terminal, execute pip install -U modelscope para atualizar o pacote modelscope. Em seguida, na parte superior da página do Notebook, clique em ícone image para reiniciar o kernel Python e execute novamente o código de download do modelo.

Referências

Para informações importantes sobre o lançamento do ChatLLM-WebUI, consulte ChatLLM-WebUI release notes.