Esta página responde às dúvidas mais comuns sobre a implantação e a execução de processadores personalizados no Elastic Algorithm Service (EAS).
Problemas de implantação
Como melhorar a eficiência de upload de um pacote de processador personalizado?
Erro: "Baixe processor files failed: forbidden to baixe file with size larger than 10G"
Problemas de execução
Como configurar variáveis de ambiente em um processador Python do EAS?
Como evitar que um processo seja encerrado devido a uma exceção não tratada?
O que fazer se um service EAS não conseguir acessar a rede pública?
Autenticação e configuração
Como melhorar a eficiência de upload de um pacote de processador personalizado?
Use imagens docker para empacotar o ambiente de execução e arquivos grandes. Quando o código for alterado, apenas as camadas modificadas precisarão ser reconstruídas e enviadas, em vez de todo o pacote. Isso acelera significativamente as iterações durante o desenvolvimento.
Para mais detalhes, consulte Develop custom processors using Python.
Como resolver o erro "libSM.so.6: cannot open shared object file: No such file or directory" ao importar cv2?
O pacote padrão pip install opencv depende das bibliotecas libXext, libSM e libXrender, que não vêm pré-instaladas no ambiente de execução do EAS. O pacote pode funcionar em um ambiente de teste local, mas falhar quando implantado online.
Corrija esse problema usando uma das seguintes abordagens:
-
Recomendado: Instale
opencv-python-headlessem vez disso. Essa variante não depende de libXext, libSM ou libXrender.pip install opencv-python-headless -
Alternativa: Localize os arquivos binários de libXext, libSM e libXrender no seu sistema local, copie-os para o diretório
ENV/libdentro do pacote do processador e envie o pacote.Nota: Esta abordagem pode introduzir problemas adicionais de dependência que exigirão resolução separada.
Como configurar variáveis de ambiente em um processador Python do EAS?
O EAS adiciona automaticamente todos os subdiretórios do diretório do processador à variável LD_LIBRARY_PATH. Portanto, bibliotecas de dependência armazenadas em qualquer lugar dentro desse diretório são carregadas automaticamente.
Para outras variáveis de ambiente, defina-as programaticamente no seu código Python:
import os
os.environ['key'] = 'val'
Como evitar que um processo seja encerrado devido a uma exceção não tratada?
Envolva as seções críticas da lógica do seu service em blocos try-catch para impedir que exceções não tratadas encerrem o processo.
Caso o processo seja encerrado por qualquer motivo, o EAS o reinicia automaticamente para manter a disponibilidade do service. O tratamento de exceções no nível da aplicação oferece controle mais refinado e evita reinicializações desnecessárias.
Como configurar um AccessKey e um endpoint?
Os services de previsão do EAS utilizam um AccessKey da Alibaba Cloud para autenticação de identidade. Configure seu AccessKey ID, AccessKey Secret e endpoint usando o comando eascmd64 config:
./eascmd64 config -i <yourAccessKeyID> -k <yourAccessKeySecret> -e <endpoint>
O endpoint padrão conecta-se à região China (Shanghai). Para implantar em uma região diferente, especifique o endpoint dessa região com o parâmetro -e. Por exemplo, para usar a região China (Beijing):
./eascmd64 config -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-beijing.aliyuncs.com
Por que uma tarefa criada com EASCMD permanece no estado "[OK] Waiting [Total: 1, Pending: 1, Running: 0]"?
A tarefa fica aguardando porque o grupo de recursos não possui recursos disponíveis suficientes para iniciar as instâncias solicitadas.
Verifique os seguintes itens no arquivo de configuração do seu service:
Região: Confirme se
metadata.regioncorresponde à região onde seu grupo de recursos está localizado.Nome do grupo de recursos: Confirme se
metadata.resourceé o nome correto do grupo de recursos para aquela região (por exemplo,EAS-LsFlrwBP56).Recursos disponíveis: Confirme se o grupo de recursos tem GPU, CPU e memória livres suficientes para atender à contagem de
instanceconfigurada.
O exemplo de configuração a seguir mostra os campos relevantes:
{
"name": "service",
"token": "[Authorization-token]",
"data_image": "[your-public-docker-image-repo]",
"processor_entry": "app.py",
"processor_type": "python",
"processor_path": "[oss://eas-model-shenzhen/xxxxxxxxx/codes.tar.gz]",
"metadata": {
"region": "cn-shenzhen",
"resource": "resource-name",
"gpu": 1,
"cpu": 6,
"memory": 2000,
"instance": 2,
"cuda": "10.0"
}
}
Neste exemplo, cada instância requer 1 GPU, 6 CPUs e 2000 B de memória. Se o grupo de recursos não puder atender a esses requisitos para 2 instâncias simultaneamente, a tarefa permanecerá no estado de espera.
O que fazer se um service EAS não conseguir acessar a rede pública?
Por padrão, os services EAS não têm acesso à rede pública. Se o código do seu processador tentar baixar arquivos da internet durante a inicialização, a implantação falhará com um erro de carregamento de arquivo.
Para corrigir isso, configure a public network connection para o seu service EAS.
Dica: Antes de implantar, teste seu processador localmente para confirmar que ele não depende de acesso à rede pública indisponível no ambiente EAS.
Erro: "Baixe processor files failed: forbidden to baixe file with size larger than 10G"
O EAS limita o tamanho combinado do modelo e do pacote do processador a 10 GB. Se o seu pacote exceder esse limite, use a implantação personalizada baseada em imagem pelo console.