O PAI-EAS oferece uma solução completa para implantar modelos de linguagem grande (LLMs) populares, como DeepSeek e Qwen, com um único clique. Isso simplifica tarefas complexas, como configuração de ambiente, ajuste de desempenho e gerenciamento de custos.
Início rápido: Implante um modelo de código aberto
Este exemplo demonstra como implantar o modelo de código aberto Qwen3-8B. O mesmo processo se aplica a outros modelos suportados.
Etapa 1: Crie um serviço
Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, escolha o workspace desejado e clique em Elastic Algorithm Service (EAS).
Clique em Deploy Service. Na área Scenario-based Model Deployment, clique em LLM Deployment.
-
Configure os seguintes parâmetros principais:
Parâmetro
Valor
Model Settings
Selecione Public Model, pesquise e selecione Qwen3-8B.
Inference Engine
Escolha vLLM (Recomendado, compatível com a API OpenAI).
Deployment Template
Defina como Single Machine. O sistema preenche automaticamente os parâmetros recomendados, como tipo de instância e imagem, com base no modelo.
-
Clique em Deploy. A implantação do serviço leva cerca de 5 minutos. Quando o status do serviço mudar para Running, a implantação foi concluída com sucesso.
NotaSe a implantação do serviço falhar, consulte Problemas de implantação e status do serviço para solucionar o problema.
Etapa 2: Verifique o serviço
Após a implantação, utilize a depuração online para confirmar que o serviço está operando corretamente.
Clique no nome do serviço para abrir sua página de detalhes e alterne para a aba Online Debugging.
-
Defina os seguintes parâmetros de solicitação:
Parâmetro
Valor
Método de solicitação
POST
Caminho da URL
Insira o caminho completo da URL no formato
/api/predict/{service_name}/v1/chat/completions, onde{service_name}é o nome do seu serviço implantado. Exemplo:/api/predict/llm_qwen3_8b_test/v1/chat/completions.Body
{ "model": "Qwen3-8B", "messages": [ {"role": "user", "content": "Hello!"} ], "max_tokens": 1024 }Headers
Garanta que a solicitação inclua
Content-Type: application/json. Clique em Send Request. Você deve receber uma resposta contendo a resposta do modelo.
Se a solicitação retornar um código de status 200 e uma resposta JSON do tipo chat.completion, o serviço está implantado e funcionando corretamente. O corpo da resposta contém a resposta do modelo no campo content.
Chame a API
Antes de chamar o serviço, acesse a aba View Endpoint Information na página de detalhes do serviço para obter o endpoint e o token.
Os exemplos a seguir mostram como chamar a API do serviço:
cURL
curl -X POST <EAS_ENDPOINT>/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "hello"
}
],
"max_tokens":1024,
"temperature": 0.7,
"top_p": 0.8,
"stream":true
}'
No código anterior, substitua os seguintes parâmetros:
Substitua
<EAS_ENDPOINT>e<EAS_TOKEN>pelo endpoint e token do seu serviço implantado.-
Troque
<model_name>pelo nome do modelo. Para vLLM ou SGLang, obtenha o nome do modelo por meio da API de lista de modelos em<EAS_ENDPOINT>/v1/models.curl -X GET <EAS_ENDPOINT>/v1/models -H "Authorization: <EAS_TOKEN>"
OpenAI SDK
Recomendamos o uso do SDK oficial para Python para interagir com o serviço. Certifique-se de ter instalado o OpenAI SDK: pip install openai.
from openai import OpenAI
# 1. Configure the client.
# Replace <EAS_TOKEN> with the token of your deployed service.
openai_api_key = "<EAS_TOKEN>"
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. Get the model name.
# For BladeLLM, set model = "". BladeLLM does not require a model parameter
# and does not support getting the model name by using client.models.list().
# Set it to an empty string to meet the mandatory parameter requirement of the OpenAI SDK.
models = client.models.list()
model = models.data[0].id
print(model)
# 3. Send a chat request.
# Both streaming (stream=True) and non-streaming (stream=False) outputs are supported.
stream = True
chat_completion = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
],
model=model,
top_p=0.8,
temperature=0.7,
max_tokens=1024,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
Python requests
Caso prefira não adicionar uma dependência ao OpenAI SDK, utilize a biblioteca requests.
import json
import requests
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
EAS_ENDPOINT = "<EAS_ENDPOINT>"
# Replace <EAS_TOKEN> with the token of your deployed service.
EAS_TOKEN = "<EAS_TOKEN>"
# Replace <model_name> with the model name. You can get it from the <EAS_ENDPOINT>/v1/models API.
# For BladeLLM, this API is not supported. You can omit the "model" field or set it to "".
model = "<model_name>"
url = f"{EAS_ENDPOINT}/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": EAS_TOKEN,
}
stream = True
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
]
req = {
"messages": messages,
"stream": stream,
"temperature": 0.7,
"top_p": 0.8,
"max_tokens": 1024,
"model": model,
}
response = requests.post(
url,
json=req,
headers=headers,
stream=stream,
)
if stream:
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
# The following code processes Server-Sent Events (SSE) formatted streaming responses.
if msg.startswith("data:"):
info = msg[6:]
if info == "[DONE]":
break
else:
resp = json.loads(info)
if resp["choices"][0]["delta"].get("content") is not None:
print(resp["choices"][0]["delta"]["content"], end="", flush=True)
else:
resp = json.loads(response.text)
print(resp["choices"][0]["message"]["content"])
Crie uma interface web local
O Gradio é uma biblioteca de UI para Python que ajuda a construir rapidamente interfaces interativas para modelos. Siga estas etapas para executar uma interface web Gradio localmente.
-
Baixe o código
-
Prepare o ambiente
É necessário Python 3.10 ou superior. Instale as dependências executando
pip install openai gradio. -
Inicie a aplicação web
No terminal, execute o comando abaixo. Substitua
<EAS_ENDPOINT>e<EAS_TOKEN>pelo endpoint e token do serviço implantado.python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>" Após a inicialização bem-sucedida, uma URL local será exibida (geralmente
http://127.0.0.1:7860). Abra esta URL em um navegador para acessá-la.
Integre com aplicações de terceiros
É possível integrar um serviço PAI-EAS com diversos clientes e ferramentas de desenvolvimento compatíveis com a API OpenAI. As configurações essenciais são o endpoint do serviço, token e o nome do modelo.
Dify
-
Instale o provedor de modelo compatível com a API OpenAI
Clique no seu avatar no canto superior direito e selecione Settings. No painel à esquerda, escolha Model Providers. Se OpenAI-API-compatible não estiver na Model List, localize-o na lista abaixo e clique em Install.
-
Adicione um modelo
Clique em Add Model no canto inferior direito do cartão OpenAI-API-compatible e configure os seguintes parâmetros:
Model type: Selecione LLM.
Model name: Para uma implantação vLLM, envie uma solicitação GET para o endpoint
/v1/modelspara obter o nome. Neste exemplo, insira Qwen3-8B.API key: Insira o token do seu serviço PAI-EAS.
API endpoint URL: Digite o endpoint público do seu serviço PAI-EAS e adicione /v1 ao final.
-
Teste a integração
Na página principal do Dify, clique em Create Blank App, selecione o tipo Chatflow, insira um nome para a aplicação e outras informações, e então clique em Create.
Clique no nó LLM, selecione o modelo adicionado e defina o contexto e os prompts. Escolha Qwen3-8B CHAT na categoria OpenAI-API-compatible. No prompt SYSTEM, insira uma descrição de função e referencie a variável de contexto sys.query. Na área USER, adicione as variáveis sys.query e sys.files. Ajuste os parâmetros do modelo, como Max Tokens (o padrão é 512), Presence Penalty e Thinking Mode, conforme necessário.
-
Clique em Preview no canto superior direito e faça uma pergunta.
O bot processa a pergunta por meio do workflow e retorna uma resposta. A parte superior da área de conversa exibe um status de Deep thinking e o tempo decorrido.
Chatbox
Acesse o Chatbox para baixar e instalar o cliente para o seu dispositivo, ou clique em Launch Web App para usar a versão web. Este exemplo utiliza macOS M3.
Adicione um provedor de modelo. Clique em Settings, adicione um provedor de modelo, insira um nome como
paie selecione OpenAI API Compatible como modo de API.-
Selecione o provedor pai e configure os seguintes parâmetros:
API key: Insira o token do seu serviço PAI-EAS.
API host: Digite o endpoint público do seu serviço PAI-EAS e adicione /v1 ao final.
API path: Deixe este campo vazio.
Model: Clique em Get para adicionar o modelo. O mecanismo de inferência BladeLLM não suporta recuperação de modelo via API. Se estiver usando BladeLLM, adicione o modelo manualmente clicando em New.
-
Teste o chat. Clique em New Chat e selecione o serviço de modelo no canto inferior direito da caixa de entrada de texto.
A parte superior da interface de chat exibe o prompt do sistema, como
You are a helpful assistant.. Digite uma pergunta como "Who are you?" na caixa de texto e envie. A área de resposta do assistente mostra uma seção recolhida de Deep thinking com o tempo de raciocínio, seguida pela resposta do modelo.
Cherry Studio
-
Instale o cliente
Visite o Cherry Studio para baixar e instalar o cliente.
Você também pode baixá-lo em
https://github.com/CherryHQ/cherry-studio/releases. -
Configure o serviço de modelo
Clique no ícone de configurações no canto inferior esquerdo. Na seção Model Service, clique em Add. Em Provider name, insira um nome personalizado, como PAI, e defina o tipo de provedor como OpenAI. Clique em OK.
No campo API key, insira o token do seu serviço PAI-EAS. No campo API address, digite o endpoint público do seu serviço PAI-EAS.
Clique em Add e insira o nome do modelo no campo Model ID. Para implantações vLLM, obtenha o nome enviando uma solicitação GET para a API
/v1/models. Por exemplo, insiraQwen3-8B. O nome diferencia maiúsculas de minúsculas. Para o API Address, insira a URL, mas omita o número da versão v1 no final. Se a URL terminar com um caractere#, o sistema força o uso do caminho/v1/chat/completions. Após concluir a configuração, a seção Model identifica e lista automaticamente os modelos disponíveis, como Qwen3-8B.Clique em Test ao lado do campo de entrada API key para verificar a conectividade.
-
Teste rapidamente o modelo
Retorne à interface de chat, selecione o modelo na parte superior e inicie uma conversa.
Por exemplo, se você inserir Who are you? e o modelo Qwen3-8B responder com uma autoapresentação, isso indica que o modelo está implantado e funcionando corretamente.
Faturamento
Os custos incluem, mas não se limitam aos itens abaixo. Para mais informações, consulte Faturamento do PAI-EAS.
Taxas de computação: Representam o custo principal. Ao criar um serviço PAI-EAS, escolha recursos de pagamento conforme o uso ou de assinatura conforme suas necessidades.
Taxas de armazenamento: Caso utilize um modelo personalizado, os arquivos do modelo ficam armazenados no Object Storage Service (OSS), o que gera taxas de armazenamento.
Uso em produção
Escolha o modelo certo
-
Defina seu cenário de aplicação:
Conversa geral: Opte sempre por um modelo ajustado por instruções, em vez de um modelo base, para garantir que o modelo compreenda e siga suas instruções.
Geração de código: Prefira modelos especializados em código, como a série
Qwen3-Coder, pois geralmente apresentam desempenho muito superior ao de modelos de uso geral em tarefas relacionadas a código.Tarefas específicas de domínio: Se sua tarefa for altamente especializada, como em finanças ou direito, considere buscar um modelo ajustado para esse domínio ou ajustar você mesmo um modelo de uso geral.
Equilibre desempenho e custo: Modelos maiores geralmente são mais capazes, mas exigem mais recursos de computação e têm custos de inferência mais altos. Comece com um modelo menor, como um modelo 7B, para validação. Se o desempenho não atender às suas necessidades, experimente um modelo maior.
Consulte benchmarks oficiais: Utilize rankings como OpenCompass e LMSys Chatbot Arena. Essas tabelas avaliam modelos em múltiplas dimensões, incluindo raciocínio, codificação e matemática, oferecendo orientações valiosas para a seleção do modelo.
Escolha o mecanismo de inferência adequado
vLLM/SGLang: Como escolhas predominantes na comunidade de código aberto, oferecem amplo suporte a modelos, além de extensa documentação e exemplos da comunidade, facilitando a integração e a solução de problemas.
BladeLLM: Mecanismo de inferência desenvolvido pela equipe Alibaba Cloud PAI. É profundamente otimizado para modelos específicos, especialmente a série Qwen, podendo alcançar maior desempenho e menor uso de memória GPU.
Otimização de inferência
Implante um LLM com roteamento inteligente: Distribui solicitações dinamicamente com base em métricas em tempo real, como throughput de tokens e uso de memória GPU. Essa abordagem equilibra o poder de computação e a alocação de memória entre as instâncias de inferência, sendo adequada para implantações com múltiplas instâncias e cargas de solicitação distribuídas de forma desigual. Melhora a utilização dos recursos do cluster e a estabilidade do sistema.
Implante modelos Mixture of Experts (MoE) usando paralelismo de especialistas e separação PD: Para modelos Mixture of Experts (MoE), esta abordagem utiliza técnicas como paralelismo de especialistas (EP) e separação Prefill-Decode (PD) para aumentar o throughput de inferência e reduzir os custos de implantação.
Perguntas frequentes
P: O serviço está travado no estado Pending
Siga estas etapas para solucionar o problema:
Verifique o status da instância: Na página de lista de serviços, clique no nome do serviço para acessar a página de detalhes. Na seção Service Instance, verifique o status da instância. Se aparecer
insufficient resources, o grupo de recursos públicos atual não tem capacidade suficiente.-
Soluções (por ordem de prioridade):
Opção 1: Altere o tipo de instância. Retorne à página de implantação e selecione um modelo de GPU diferente.
Solução 2: Use recursos dedicados. Para Resource Type, selecione um grupo de recursos EAS para utilizar recursos dedicados (o grupo de recursos deve ser criado antecipadamente).
-
Medidas preventivas:
Crie um grupo de recursos dedicados para evitar as limitações dos recursos públicos.
Durante horários de pico, realize testes em várias regiões.
P: Erros de chamada
-
A chamada de API retorna o seguinte erro: Unsupported Media Type: Only 'application/json' is allowed
Certifique-se de que os cabeçalhos da solicitação contenham
Content-Type: application/json. -
A chamada de API retorna o seguinte erro: The model '<model_name>' does not exist.
O mecanismo de inferência vLLM exige que o campo do modelo seja especificado corretamente. Obtenha o nome do modelo chamando o endpoint
/v1/modelscom uma solicitação GET.
Para mais dúvidas, consulte Perguntas frequentes do EAS.