O PAI-EAS oferece uma solução completa para implantar modelos de linguagem grandes (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 open source
Este exemplo mostra como implantar o modelo open source 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, selecione o workspace desejado e clique em Enter 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 Qwen3-8B e selecione-o.
Inference Engine
Selecione vLLM (Recomendado, compatível com a API OpenAI).
Deployment Template
Selecione Single-Node. 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 estará concluída.
NotaSe a implantação do serviço falhar, consulte Service deployment and status issues para solução de problemas.
Etapa 2: Verifique o serviço
Após a implantação, use a depuração online para verificar se o serviço está sendo executado corretamente.
Clique no nome do serviço para abrir a página de detalhes e, em seguida, mude para a aba Online Debugging.
-
Configure 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, em que{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
Certifique-se de que a solicitação inclua
Content-Type: application/json. Clique em Send Request. Você deve receber uma resposta que contenha a saída do modelo.
Se a solicitação retornar um código de status 200 e uma resposta JSON do tipo chat.completion, o serviço estará implantado e sendo executado corretamente. O corpo da resposta contém a saída 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 e visualize 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 pelo token do seu serviço implantado.-
Substitua
<model_name>pelo nome do modelo. Para vLLM ou SGLang, obtenha o nome do modelo na 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
Se não quiser adicionar uma dependência do OpenAI SDK, use 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 criar rapidamente interfaces interativas para modelos. Siga estas etapas para executar uma interface web do Gradio localmente.
-
Baixe o código
-
Prepare o ambiente
É necessário o Python 3.10 ou posterior. Instale as dependências executando
pip install openai gradio. -
Inicie o aplicativo web
No terminal, execute o seguinte comando. Substitua
<EAS_ENDPOINT>e<EAS_TOKEN>pelo endpoint e pelo 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 essa URL em um navegador para acessá-la.
Integração com aplicativos de terceiros
Integre um serviço do PAI-EAS com vários clientes e ferramentas de desenvolvimento compatíveis com a API OpenAI. As principais definições de configuração são o endpoint e o token do serviço 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, selecione Model Providers. Se OpenAI-API-compatible não estiver na Model List, encontre-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/modelsa fim de obter o nome. Para este exemplo, insira Qwen3-8B.API key: Insira o token do seu serviço PAI-EAS.
API endpoint URL: Insira 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 o aplicativo e outras informações e, em seguida, clique em Create.
Clique no nó LLM, selecione o modelo adicionado e defina o contexto e os prompts. Selecione 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 insira uma pergunta.
O bot processa a pergunta por meio do workflow e retorna uma resposta. A parte superior da área de conversa exibe o status de Deep thinking e o tempo decorrido.
Chatbox
Acesse o Chatbox, baixe e instale o cliente para o seu dispositivo ou clique em Launch Web App para a versão web. Este exemplo usa o 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 o modo de API.-
Selecione o provedor
paie configure os seguintes parâmetros:API key: Insira o token do seu serviço PAI-EAS.
API host: Insira 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 oferece suporte à recuperação de modelo baseada em API. Se estiver usando o 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.. Insira uma pergunta como "Who are you?" na caixa de texto e envie-a. A área de resposta do assistente mostra uma seção recolhida de Deep thinking com o tempo de pensamento, seguida pela resposta do modelo.
Cherry Studio
-
Instale o cliente
Visite o Cherry Studio, baixe e instale 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, insira 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çará o uso do caminho/v1/chat/completions. Após a conclusão da 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 autopresentação, isso indicará que o modelo está implantado e funcionando corretamente.
LangChain
O LangChain é um framework Python comum para criar aplicativos de LLM. Como um serviço do PAI-EAS é compatível com a API OpenAI, chame o serviço diretamente com langchain_openai.ChatOpenAI, por exemplo, para compor um template de prompt em uma cadeia.
-
Instale as dependências
pip install langchain langchain-openai -
Configure o modelo. Configure o
ChatOpenAIcom os seguintes parâmetros:base_url: Insira o endpoint público do seu serviço PAI-EAS e adicione /v1 ao final.
api_key: Insira o token do seu serviço PAI-EAS.
model: Insira o nome do modelo. Para uma implantação vLLM, envie uma solicitação GET para o endpoint
/v1/modelspara obter o nome. Para este exemplo, insiraQwen3-8B.
from langchain_openai import ChatOpenAI llm = ChatOpenAI( base_url="<EAS_ENDPOINT>/v1", api_key="<EAS_TOKEN>", model="<model_name>" )ImportanteVocê deve adicionar
/v1aobase_url. Se inserir o endpoint público do seu serviço PAI-EAS sem/v1, a chamada retornará 404. -
Invocação de cadeia. Componha o modelo com
ChatPromptTemplateusando o operador|:from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_messages([ ("system", "You are a helpful assistant."), ("user", "{input}") ]) chain = prompt | llm response = chain.invoke({"input": "Who are you?"}) print(response.content)
Faturamento
Os custos incluem, mas não se limitam, ao seguinte. Para mais informações, consulte Billing of PAI-EAS.
Taxas de computação: Este é o custo principal. Ao criar um serviço do PAI-EAS, escolha recursos de pagamento conforme o uso ou assinatura de acordo com suas necessidades.
Taxas de armazenamento: Se usar um modelo personalizado, os arquivos do modelo serão armazenados no Object Storage Service (OSS), o que gera taxas de armazenamento.
Uso em produção
Escolha o modelo certo
-
Defina o cenário do seu aplicativo:
Conversa geral: Escolha sempre um modelo ajustado por instruções, e não um modelo de base, para garantir que o modelo entenda e siga suas instruções.
Geração de código: Escolha modelos de código especializados, 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 a sua tarefa for altamente especializada, como em finanças ou direito, considere encontrar um modelo ajustado para esse domínio ou ajuste 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 de 7B, para validação. Se o desempenho não atender às suas necessidades, teste um modelo maior.
Consulte benchmarks de autoridade: Consulte classificações como OpenCompass e LMSys Chatbot Arena. Essas classificações avaliam os modelos em várias dimensões, incluindo raciocínio, codificação e matemática, e podem fornecer orientações valiosas para a seleção do modelo.
Escolha o mecanismo de inferência certo
vLLM/SGLang: Por serem as escolhas principais na comunidade open source, oferecem amplo suporte a modelos, além de documentação e exemplos extensos da comunidade, o que facilita a integração e a solução de problemas.
BladeLLM: Mecanismo de inferência desenvolvido pela equipe do Alibaba Cloud PAI. É profundamente otimizado para modelos específicos, especialmente a série Qwen, e pode alcançar maior desempenho e menor uso de memória GPU.
Otimização de inferência
Deploy an LLM with intelligent routing: Distribui dinamicamente as solicitações 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 várias instâncias de inferência e cargas de solicitação distribuídas de forma desigual. Isso melhora a utilização dos recursos do cluster e a estabilidade do sistema.
Deploy Mixture of Experts (MoE) models by using expert parallelism and PD separation: Para modelos Mixture of Experts (MoE), essa abordagem usa técnicas como paralelismo de especialistas (EP) e separação de Prefill-Decode (PD) para melhorar o throughput de inferência e reduzir os custos de implantação.
FAQ
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 mostrar
insufficient resources, o grupo de recursos públicos atual não tem capacidade suficiente.-
Soluções (em 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 do EAS para usar recursos dedicados (o grupo de recursos deve ser criado com antecedência).
-
Medidas preventivas:
Para evitar as limitações dos recursos públicos, crie um grupo de recursos dedicados.
Durante os horários de pico, teste 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 EAS FAQ.