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:
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.-
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.
NotaSe 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/.
-
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 paracn-shanghai.Dataset Mounting: Clique em Custom Dataset, selecione o dataset criado e use o caminho de montagem padrão.
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
-
Acesse o ambiente de desenvolvimento PAI-DSW.
Faça login no PAI console. No canto superior esquerdo da página, selecione uma região. Recomenda-se China (Ulanqab).
No painel de navegação à esquerda, clique em Workspace List. Na página exibida, clique no nome do workspace que deseja gerenciar.
No painel de navegação à esquerda, selecione Model Training > Data Science Workshop (DSW) e clique em Open na coluna Actions da instância desejada.
Na barra de menu superior, clique em Terminal. Na aba que se abre, clique em Create Terminal.
-
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.pyno 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
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
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.
-
Acesse a página Create Task.
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.
Na página Deep Learning Containers (DLC), clique em Create Task.
-
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.shResource 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
-
-
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.
NotaSe 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
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
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.
Clique em Deploy Service. Na área Custom Model Deployment, clique em Custom Deployment.
-
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.NotaAo 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
-
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
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.
-
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 |
|
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) |
|