Todos os produtos
Search
Central de documentação

Platform For AI:PAI-ChatLearn: Melhores práticas para aprendizado por reforço com Qwen3

Última atualização: Aug 25, 2026

Este tópico descreve como utilizar o framework de treinamento PAI-ChatLearn para executar aprendizado por reforço distribuído e eficiente em um modelo de linguagem grande (LLM) no PAI, utilizando recursos Lingjun. Também aborda a implantação do modelo treinado. Esta solução é ideal para cenários em que se busca aprimorar as capacidades de raciocínio de um LLM por meio de aprendizado por reforço.

1. Preparações

1,1 Preparar o ambiente de desenvolvimento

Antes de começar, certifique-se de ter concluído as seguintes tarefas:

  1. Activate PAI and create a default workspace.

  2. Purchase Lingjun resources e create a resource quota. Este exemplo requer recursos Lingjun. São necessárias duas máquinas com a especificação de nó ml.gx8xf.8xlarge-gu108. Para mais informações sobre as especificações de nós para recursos Lingjun, consulte Billing of AI computing resources.

  3. Create a dataset para armazenar os arquivos de treinamento e resultados necessários.

    • Dataset Type: Selecione Basic.

    • Storage Type: Escolha um tipo de armazenamento de arquivos. Este tópico utiliza File Storage (General-purpose NAS). Caso não possua um sistema de arquivos NAS, consulte Create a file system.

      Nota

      Se sua tarefa de treinamento exigir altas velocidades de leitura e gravação, além de alto desempenho, utilize File Storage (Intelligent Computing CPFS).

    • Default Mount Path: Utilize o valor padrão /mnt/data/.

  4. Create a Data Science Workshop (DSW) instance com os seguintes parâmetros principais.

    • Resource Type: Selecione Resource Quota.

    • Resource Quota: Escolha a cota de recursos criada para os recursos Lingjun.

    • Instance Type: Configure as seguintes especificações de recursos.

      • GPUs: 8 ou mais.

      • vCPUs: 90.

      • Memory (GiB): 1024.

      • Shared Memory (GiB): 1024.

    • Image Information: Selecione Image Address e defina a imagem de runtime como dsw-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-training-algorithm/chatlearn:torch2.5.1-vllm0.6.6-ubuntu22.04-cuda12.6-py310. É necessário alterar a região no endereço do registro para a região onde sua instância DSW está localizada. Por exemplo, se estiver usando uma instância DSW em Xangai, altere a região no endereço para cn-shanghai.

    • Dataset Mounting: Clique em Custom Dataset, selecione o dataset criado e use o caminho de montagem padrão.

  5. Caso utilize um usuário Resource Access Management (RAM) para realizar as operações abaixo, conceda a ele as permissões necessárias para usar DSW, Deep Learning Containers (DLC) ou Elastic Algorithm Service (EAS). Para mais detalhes, consulte Product dependencies and authorization: DSW, Product dependencies and authorization: DLC ou Product dependencies and authorization: EAS.

1,2 Baixar o repositório de código

  1. Acesse o ambiente de desenvolvimento PAI-DSW.

    1. Faça login no PAI console. No canto superior esquerdo da página, selecione uma região. Recomenda-se China (Ulanqab).

    2. No painel de navegação à esquerda, clique em Workspace List. Na página exibida, clique no nome do workspace que deseja gerenciar.

    3. No painel de navegação à esquerda, selecione Model Training > Data Science Workshop (DSW) e clique em Open na coluna Actions da instância desejada.

  2. Na barra de menu superior, clique em Terminal. Na aba que se abre, clique em Create Terminal.

  3. Baixe o repositório de código do ChatLearn.

    git clone https://github.com/alibaba/ChatLearn.git && cd ChatLearn && git checkout 4ad5912306df5d4a814dc2dd5567fcb26f5d473b

1,3 Preparar o modelo Qwen3

Baixe os pesos do modelo Qwen3 no ModelScope.

modelscope download --model Qwen/Qwen3-8B --local_dir Qwen3-8B

1,4 Preparar o dataset de treinamento

Este exemplo utiliza o dataset MATH-lighteval para demonstrar o fluxo de trabalho de aprendizado por reforço do ChatLearn.

  • Trata-se de um dataset voltado para tarefas de raciocínio matemático, que aplica regras fixas para validação da pontuação de recompensa.

  • Para aplicar aprendizado por reforço em uma tarefa personalizada, implemente uma função própria de pontuação de recompensa tomando como referência examples/fsdp/models/rule_reward.py no repositório de código do ChatLearn.

# Download the dataset
mkdir -p dataset
modelscope download --dataset AI-ModelScope/MATH-lighteval --local_dir dataset/MATH-lighteval
# Pre-process the dataset
python examples/fsdp/data/data_preprocess/math_lighteval.py --input_dir dataset/MATH-lighteval --local_dir dataset/MATH-lighteval

2. Treinamento com aprendizado por reforço

Nota

Desenvolva e teste seu código no ambiente DSW antes de enviar uma tarefa de treinamento distribuído em servidores multi-GPU no ambiente DLC.

Este exemplo usa Fully Sharded Data Parallel (FSDP) como motor de treinamento. Para acelerar o treinamento com Megatron-LM, consulte tutorial_grpo_mcore.

2,1 Treinamento em nó único no DSW

Ainda no ambiente DSW, execute o comando abaixo para iniciar o treinamento. O modelo treinado será salvo no dataset montado para posterior implantação.

bash examples/fsdp/scripts/train_grpo_qwen3.sh
Nota

Com os parâmetros padrão do script train_grpo_qwen3.sh, estima-se que o treinamento leve de 2 a 3 horas.

2,2 Treinamento multi-nó no DLC

Após desenvolver e testar em um único nó, configure uma tarefa distribuída em servidores multi-GPU no ambiente DLC para acelerar o treinamento do modelo.

  1. Acesse a página Create Task.

    1. Faça login no PAI console. No topo da página, selecione a região de destino. À direita, escolha o workspace desejado e clique em Enter DLC.

    2. Na página Deep Learning Containers (DLC), clique em Create Task.

  2. Na página Create Job, configure os parâmetros principais listados abaixo. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Create a training task.

    Parameter

    Description

    Basic Information

    Job Name

    Nome personalizado para a tarefa. Este exemplo utiliza test_qwen3_dlc.

    Environment Information

    Image Information

    Selecione Image Address e insira o seguinte endereço no campo de texto: dsw-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-training-algorithm/chatlearn:torch2.5.1-vllm0.6.6-ubuntu22.04-cuda12.6-py310. Altere a região no endereço do registro para corresponder à sua região atual.

    Mount dataset

    Clique em Custom Dataset, selecione o dataset criado e utilize o caminho de montagem padrão /mnt/data/.

    Startup Command

    Configure o comando a seguir. Os parâmetros de inicialização do script train_grpo_qwen3.sh são idênticos aos do pré-treinamento em nó único no DSW.

    cd /mnt/data/ChatLearn && bash examples/fsdp/scripts/train_grpo_qwen3.sh

    Resource Information

    Resource Type

    Selecione Lingjun Intelligent Computing.

    Source

    Selecione Resource Quota.

    Resource Quota

    Escolha a cota de recursos criada para os recursos Lingjun.

    Framework

    Selecione PyTorch.

    Job Resource

    Na aba de configuração do nó Worker, defina os seguintes parâmetros:

    • Quantity: 2. Para treinamento multi-nó, ajuste o Number of Nodes conforme a quantidade de máquinas necessária.

    • GPUs: 8

    • vCPUs: 90

    • Memory (GiB): 1024

    • Shared Memory (GiB): 1024

  3. Clique em OK. Você será redirecionado para a página Deep Learning Containers (DLC). Clique no nome da tarefa para verificar o status de execução na página Task Details. Quando o Status mudar para Succeeded, o treinamento estará concluído.

    Nota

    Se o job do DLC falhar e a mensagem de erro ray.exceptions.RpcError: Timed out while waiting for GCS to become available. for exibida, significa que a tarefa de treinamento foi concluída com sucesso. Prossiga com a implantação do modelo salvo como service.

2,3 Descrição dos principais parâmetros

Clique para visualizar os principais parâmetros configuráveis em train_grpo_qwen3.sh

Parameter

Description

model_path

Caminho dos pesos do modelo

output_dir

Diretório de saída para logs, modelos e dados

train_data_path

Caminho do dataset de treinamento

eval_data_path

Caminho do dataset de avaliação

sp_size

Configuração de paralelismo de sequência Ulysses para treinar modelos com processos de pensamento longos

tensor_model_parallel_size

Configuração de paralelismo de tensores para o service de inferência vLLM

gpu_memory_utilization

Percentual de VRAM pré-alocado pelo service de inferência vLLM

seq_length

Comprimento máximo da sequência (tamanho do prompt + tamanho da geração)

max_new_tokens

Tamanho máximo da geração

num_inference_per_prompt

Quantidade de respostas geradas para cada prompt

sample_per_episode

Número de amostras treinadas em cada iteração = quantidade de prompts × num_inference_per_prompt

train_micro_batch_size

Tamanho do batch para a passagem forward durante o treinamento

enable_eval_before_training

Define se a avaliação deve ser executada antes do treinamento

num_episode

Quantidade de épocas de treinamento por aprendizado por reforço

eval_episode_interval

Intervalo de épocas para avaliação

save_episode_interval

Intervalo de épocas para salvamento do modelo

3. Implantar e chamar o modelo

Após a conclusão do treinamento, implante o modelo como um service online e chame-o em ambiente de produção.

3,1 Implantar o service do modelo

  1. Faça login no PAI console. No topo da página, selecione a região de destino. À direita, escolha o workspace desejado e clique em Enter EAS.

  2. Clique em Deploy Service. Na área Custom Model Deployment, clique em Custom Deployment.

  3. Na página Custom Deployment, configure os parâmetros principais indicados abaixo. Mantenha os valores padrão para os demais campos.

    Parameter

    Description

    Basic Information

    Service Name

    Nome personalizado para o service do modelo. Deve ser único dentro da mesma região. Este exemplo utiliza test_qwen3.

    Environment Information

    Deployment Method

    Selecione Image-based Deployment.

    Image Configuration

    Selecione Image Address e insira o seguinte endereço de registro no campo de texto: eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/vllm:v0.8.5.post1. Altere a região no endereço do registro para corresponder à sua região atual.

    Mount storage

    Selecione General-purpose NAS e configure os parâmetros a seguir:

    • Select File System: Escolha o sistema de arquivos NAS utilizado na criação do dataset.

    • File System Mount Target: Selecione o destino de montagem usado ao criar o dataset.

    • File System Path: Caminho do modelo Hugging Face armazenado no NAS. Este exemplo usa /ChatLearn/output/qwen3-grpo/save_model/policy_trainer/20/huggingface/.

    • Mount Path: Caminho após a montagem. Este exemplo utiliza /qwen3_rlhf.

    Command

    Defina como vllm serve /qwen3_rlhf --host 0.0.0.0 --port 8000 --max-model-len 8192.

    Nota

    Ao implantar em uma instância V100, configure o comando de execução como vllm serve /qwen3_rlhf --host 0.0.0.0 --port 8000 --max-model-len 8192 --dtype=half.

    Port Number

    Defina como 8000.

    Resource Information

    Resource Type

    Selecione Public Resources.

    Number of Replicas

    Configure este valor com base no modelo e nos recursos selecionados. Para um modelo 8B, defina como 1.

    Deployment

    Quanto à especificação de recursos, selecione uma instância A10 ou V100. Este exemplo utiliza ecs.gn7i-c32g1.8xlarge.

    Network Information

    VPC

    Após configurar o destino de montagem do NAS, o sistema associa automaticamente a VPC e o vSwitch ao sistema de arquivos NAS predefinido. Defina o grupo de segurança conforme necessário.

    vSwitch

    Security group

  4. Clique em Deploy. A implantação do service leva cerca de 6 minutos. Quando o Service Status mudar para Running, a implantação estará concluída.

3,2 Chamar o service

  1. Obtenha o endpoint e o token do service. Na aba Inference Service, localize o service desejado e acesse a página Overview. Na seção Basic Information, clique em View Endpoint Information.

  2. Utilize o código abaixo para chamar o service. Substitua <YOUR EAS URL> pelo endpoint obtido na etapa anterior. Configure o token como uma variável de ambiente.

    import os
    from openai import OpenAI
    
    # Set the token as an environment variable.
    openai_api_key = os.environ.get("Token")
    # Replace <YOUR EAS URL> with the service endpoint.
    openai_api_base = "<YOUR EAS URL>/v1"
    
    client = OpenAI(
        api_key=openai_api_key,
        base_url=openai_api_base,
    )
    
    chat_response = client.chat.completions.create(
        model="/qwen3_rlhf",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Find the smallest positive integer solution to $\\tan{19x^{\\circ}}=\\dfrac{\\cos{96^{\\circ}}+\\sin{96^{\\circ}}}{\\cos{96^{\\circ}}-\\sin{96^{\\circ}}}$. Let's think step by step and output the final answer within \\boxed{}."},
        ],
        temperature=0.7,
        top_p=0.8,
        presence_penalty=1.5,
        extra_body={
            "top_k": 20, 
            "chat_template_kwargs": {"enable_thinking": False},
        }
    )
    print("Chat response:", chat_response)

Apêndice: Referência de especificações de recursos para treinamento e implantação

A tabela a seguir lista as especificações de recursos suportadas para diferentes tamanhos de modelo.

Model Size

Full-parameter Training Resources (Minimum)

Inference Resources (Minimum)

Quantity

Specification

Qwen3-8B

1 máquina

ml.gu7xf.c96m1600.8-gu108 ou

ml.gu7ef.c96m1600.8-gu100 ou

ml.gx8xf.8xlarge-gu108

1 × V100 (32 GB VRAM) / 1 × A10 (24 GB VRAM)

Qwen3-32B

2 máquinas

4 × V100 (32 GB VRAM) / 4 × A10 (24 GB VRAM)

Qwen3-30B-A3B

2 máquinas

4 × V100 (32 GB VRAM) / 4 × A10 (24 GB VRAM)