A implantação personalizada do EAS (Elastic Algorithm Service) oferece uma maneira flexível e abrangente de hospedar serviços de inferência de IA, permitindo empacotar qualquer algoritmo ou modelo como um serviço online.
Recomendamos testar primeiro a scenario-based deployment para casos de uso como LLMs e ComfyUI. Caso essa abordagem não atenda às suas necessidades, utilize a implantação personalizada.
Início rápido: implantar um serviço web simples
Esta seção demonstra como implantar rapidamente um serviço web simples usando a implantação baseada em imagem.
Etapa 1: preparar o arquivo de código
Salve o código da aplicação Flask abaixo como um arquivo app.py. Observe que o serviço escuta na porta 8000.
Etapa 2: enviar o código para o OSS
Faça upload do arquivo app.py para um OSS bucket. Certifique-se de que o bucket do OSS e o workspace do EAS estejam na mesma região. Por exemplo, envie o arquivo para o diretório oss://examplebucket/code/.
Etapa 3: configurar e implantar o serviço
Faça login no PAI console. Selecione uma região no topo da página. Em seguida, escolha o workspace desejado e clique em Enter Elastic Algorithm Service (EAS).
Na aba Inference Service, clique em Deploy Service. Na seção Custom Model Deployment, clique em Custom Deployment.
-
Na página de configuração, defina os parâmetros principais nas seções Environment Information e Resource Information conforme descrito abaixo:
Deployment Method: Selecione Image-based Deployment.
Image Configuration: Escolha a Alibaba Cloud Image
python-inference:3.9-ubuntu2004.-
Storage Mounting: Monte o diretório do OSS que contém o arquivo
app.pyno caminho/mnt/data/dentro do contêiner.URI: Selecione o diretório do OSS onde seu código está localizado. Neste exemplo, o diretório é
oss://examplebucket/code/.Mount Path: Especifique um caminho local no contêiner para o diretório. Neste exemplo, o caminho é
/mnt/data/.
Command: Como o arquivo
app.pyfoi montado no diretório/mnt/data/do contêiner, o comando de inicialização é:python /mnt/data/app.py.Third-party Library Settings: O código de exemplo depende da biblioteca
flask, que não está incluída na imagem oficial selecionada. Adicioneflaskem Third-party Libraries. O EAS instala a biblioteca automaticamente quando o serviço é iniciado.-
Resource Configuration: Aloque recursos de computação adequados para o serviço. Para este exemplo simples, uma instância pequena de CPU é suficiente.
Resource Type: Recursos públicos.
Resource Specification: Selecione
ecs.c7.large.
Após concluir a configuração, clique em Deploy. Quando o status do serviço mudar para Running, você poderá invoke the service.
VPC: Configure uma VPC se o seu serviço precisar acessar recursos da rede pública, conectar-se a bancos de dados ou filas de mensagens dentro de uma VPC, ou se você desejar que os clientes chamem o serviço diretamente através de uma VPC. Para mais informações, consulte Accessing public or internal network resources.
Invocação do serviço: Após a implantação, escolha um método de invocação adequado ao seu cenário de negócios, como gateway, NLB, Nacos ou gRPC. Para mais informações, consulte service invocation.
-
Visible in Workspace: Todos os membros do workspace podem visualizar o serviço. Ideal para colaboração em equipe.
-
Owner Only: Apenas o usuário que criou o serviço pode visualizá-lo. Recomendado para testes pessoais ou serviços sensíveis.
Service Response Timeout Period: Define o tempo limite para cada solicitação. O valor padrão é 5 segundos. Em cenários demorados, como inferência de modelos grandes ou saída em streaming, aumente esse valor para evitar que as solicitações sejam truncadas.
Health Check: O sistema sonda periodicamente a atividade das instâncias, substituindo automaticamente aquelas com anomalias para permitir a autorrecuperação de falhas. Para mais informações, consulte health check.
Compute monitoring & fault tolerance: Monitora em tempo real o status de integridade dos recursos de computação para serviços de inferência distribuída, habilitando detecção automática de falhas e autorrecuperação inteligente. Para mais informações, consulte Compute power monitoring and fault tolerance.
Estratégias de implantação e atualização: Utilize recursos como canary release, atualizações contínuas (rolling updates), desligamento gracioso e agendamento de atualizações para garantir que o serviço permaneça ininterrupto durante upgrades de versão. Para mais informações, consulte Release management.
Distributed cache acceleration: Armazena em cache arquivos de modelos ou dados provenientes de armazenamentos montados, como o OSS, no armazenamento local da instância para reduzir a latência de I/O. Para mais informações, consulte Model cache acceleration.
Model Weight Service (MoWS): Melhora significativamente a eficiência de dimensionamento e a velocidade de inicialização do serviço em implantações de grande escala, armazenando pesos de modelos localmente e compartilhando-os entre instâncias. Para mais informações, consulte Model Weight Service.
LLM Intelligent Router: Destinado a serviços de LLM com múltiplas instâncias de backend, este recurso distribui dinamicamente as solicitações com base na carga do backend. Isso equilibra o poder de computação e o uso de memória GPU entre as instâncias, melhorando a utilização dos recursos do cluster. Para mais informações, consulte LLM intelligent router deployment.
-
MaxCompute: Selecione um MaxCompute Project existente (ou create one caso não possua um) e especifique um nome para a MaxCompute Table. O sistema cria essa tabela automaticamente no projeto selecionado durante a implantação do serviço.
-
Simple Log Service: Selecione um Simple Log Service Project existente (ou create one caso não possua um) e especifique um nome para o logstore. O sistema cria esse Logstore automaticamente no projeto selecionado durante a implantação do serviço.
-
No campo Command, adicione
aliyun-bootstrap -a install && aliyun-instrument python app.pypara instalar o agente e iniciar a aplicação com o agente Python do ARMS. Substituaapp.pypelo arquivo principal da sua aplicação. -
Na seção Third-party Library Configuration, adicione
aliyun-bootstrappara baixar o instalador do agente do repositório PyPI. Inferência assíncrona: Para cenários de inferência de longa duração, como AIGC e processamento de vídeo, recomendamos ativar uma Asynchronous Queue. O cliente recebe uma resposta imediata e pode recuperar o resultado final por polling ou callback. Para mais informações, consulte Deploy an asynchronous inference service.
Elastic Job Service: Na seção Features, ative o Task Mode para implantar o serviço de inferência como um serviço de job sob demanda. Essa opção é ideal para processamento de dados em lote e tarefas agendadas. Os recursos são liberados automaticamente após a conclusão da tarefa, gerando economia de custos. Para mais informações, consulte Elastic Job Service.
Configurações adicionais
Ambiente de execução
Na seção Environment Information, configure o ambiente de execução e as dependências do seu serviço.
|
Parâmetro |
Descrição |
|
Image Configuration |
Define o ambiente base de execução para o serviço. É possível usar imagens oficiais fornecidas pelo PAI ou utilizar sua própria imagem selecionando Custom Image ou inserindo um Image Address. Para mais informações, consulte Custom images. Nota
Se a imagem incluir uma Web UI, selecione Enable Web App. O EAS inicia o servidor web automaticamente, permitindo acessar a página de front-end diretamente. |
|
Mount storage |
Permite montar modelos, códigos ou dados de serviços de armazenamento em cloud, como OSS e NAS, em um caminho local no contêiner. Essa prática desacopla o código e os dados do ambiente, simplificando atualizações independentes. Para mais informações, consulte storage mounting. |
|
Mount dataset |
Para gerenciar versões dos seus modelos ou dados, utilize o recurso Dataset para montagem. Para mais informações, consulte Create and manage datasets. |
|
Command |
Define o comando de inicialização da imagem, como |
|
Port Number |
Define a porta de escuta do serviço. Este campo é opcional em alguns cenários. Por exemplo, se o seu serviço assinar uma fila de mensagens em vez de depender do tráfego do gateway do EAS, especificar uma porta torna-se opcional. Importante
O mecanismo do EAS reserva as portas 8080 e 9090. Para evitar conflitos de inicialização, não utilize essas portas ao implantar um novo serviço. |
|
Third-party Library Settings |
Caso precise instalar apenas algumas bibliotecas Python adicionais, adicione os nomes das bibliotecas diretamente ou especifique um Path of requirements.txt para evitar a reconstrução da imagem. |
|
Environment Variables |
Define variáveis de ambiente para a instância do serviço como pares chave-valor. |
Recursos de computação
Na seção Resource Information, configure os recursos de computação para o seu serviço. Isso inclui a seleção do tipo de recurso e da especificação da instância, a configuração do disco do sistema, além da definição do número de réplicas e das políticas de agendamento. Para mais informações, consulte resource configuration.
Rede do serviço
Segurança do serviço
Na seção Features, configure a autenticação e a segurança dos dados do seu serviço.
|
Parâmetro |
Descrição |
|
Custom Authentication |
Se preferir não usar o token gerado pelo sistema, personalize o token de autenticação para acesso ao serviço. |
|
Configure Secure Encryption Environment |
Integra-se ao serviço de gerenciamento de confiança do sistema para criptografar com segurança dados, modelos e códigos durante a implantação e a invocação, possibilitando inferência confiável. Este recurso aplica-se principalmente a arquivos de armazenamento montados. Ative-o após configurar a montagem de armazenamento. Para mais informações, consulte Secure encrypted inference service. |
|
Instance RAM Role |
Associar uma Instance RAM Role a uma instância permite que o código do serviço use credenciais temporárias do Security Token Service (STS) para acessar outros recursos em cloud. Esse método elimina a necessidade de AccessKeys fixos, reduzindo o risco de vazamento de chaves. Para mais informações, consulte Configure an EAS RAM role. |
|
AI Safety Guardrail |
Este recurso realiza verificações de segurança de conteúdo na entrada e saída de serviços de inferência de LLM para interceptar conteúdos nocivos. Ele suporta as APIs OpenAI Completions (texto para texto), Chat Completions (texto para texto) e Image Generation (texto para imagem).. Nota
Este recurso está disponível apenas na região China (Shanghai). |
|
Visibility |
Controla a visibilidade do serviço na lista de serviços: |
Estabilidade do serviço
Na seção Features, configure os seguintes ajustes relacionados à estabilidade:
Desempenho do serviço
Utilize aceleração de armazenamento e agendamento inteligente para melhorar o desempenho do serviço, acelerar a inicialização, aumentar o throughput e reduzir a latência.
Observabilidade do serviço
Na seção Features, ative os seguintes recursos de observabilidade para obter insights sobre o status do serviço e solucionar problemas:
|
Parâmetro |
Descrição |
|
Save Call Records |
Persiste todos os registros de solicitações e respostas do serviço no MaxCompute ou no Simple Log Service para auditoria, análise ou solução de problemas. |
|
Tracing Analysis |
Algumas imagens oficiais possuem um componente de coleta integrado que permite ativar o rastreamento com um único clique. Para outras imagens, integre um agente ARMS por meio de uma configuração simples para monitorar ponta a ponta a cadeia de chamadas do serviço. Para mais informações, consulte Enable tracing for LLM applications in EAS. Para configurar o rastreamento: |
Serviços assíncronos e elásticos
Configuração JSON
Na seção Service Configuration, visualize e edite diretamente a configuração JSON completa correspondente às definições atuais da interface.
Para automação e configurações mais refinadas, também é possível definir e implantar serviços diretamente usando um arquivo JSON. Para mais informações, consulte Deploy services by using JSON.