Todos os produtos
Search
Central de documentação

Elastic Container Instance:Executar tarefas do TensorFlow com ECI

Última atualização: Jul 05, 2026

Containerize o ambiente de software necessário para seus jobs de treinamento de IA e execute-os no ECI. Essa abordagem simplifica a configuração do ambiente e permite pagar apenas pelo tempo de execução, reduzindo custos e aumentando a eficiência. Este tópico usa um job de treinamento do TensorFlow baseado em GPU do GitHub como exemplo para demonstrar como executar um job de treinamento em um cluster ACK Serverless usando o ECI.

Contexto

A inteligência artificial e o machine learning são amplamente utilizados hoje em dia, o que resulta em uma grande variedade de modelos de treinamento e no aumento de jobs de treinamento na nuvem. No entanto, após migrar para a nuvem, você pode enfrentar os seguintes desafios ao executar jobs de treinamento:

  • Você precisa adquirir uma instância de GPU e instalar um driver de GPU. Mesmo após containerizar o job de treinamento, ainda é preciso instalar um hook de runtime de GPU.

  • Para economizar custos, geralmente liberam-se os recursos após a conclusão de um job. Porém, na próxima vez que iniciar o job, será necessário recriar a instância e reconfigurar o ambiente. Se os nós de computação não tiverem recursos suficientes, você precisará fazer o scale out manualmente, além de recriar e reconfigurar tudo.

Para resolver esses problemas, recomendamos o uso de um cluster ACK Serverless e do ECI para executar seus jobs de treinamento. Essa solução oferece os seguintes benefícios:

  • Pagamento conforme o uso e sem necessidade de O&M.

  • Configure uma vez e reutilize indefinidamente.

  • O recurso de cache de imagem acelera a criação de instâncias para iniciar jobs de treinamento mais rapidamente.

  • Os dados são desacoplados do modelo de treinamento e podem ser armazenados de forma persistente.

Pré-requisitos

  1. Prepare os dados de treinamento e a imagem de contêiner.

    • Dados de treinamento: este tópico utiliza um job de treinamento do TensorFlow do GitHub como exemplo. Para obter mais informações, consulte Job de treinamento do TensorFlow.

    • Imagem de contêiner: o ECI fornece uma imagem de exemplo enviada para o Alibaba Cloud Container Registry (ACR). Use a imagem diretamente ou personalize-a conforme suas necessidades.

      • Endereço interno: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

      • Endereço público: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

  2. Crie um cluster ACK Serverless.

    Crie um cluster ACK Serverless no console do Container Service for Kubernetes. Para obter mais informações, consulte Criar um cluster ACK Serverless.

    Importante

    Se precisar baixar imagens da internet ou se o seu job de treinamento exigir acesso à internet, configure um NAT Gateway.

    Gerencie e acesse o cluster ACK Serverless com o kubectl das seguintes formas:

  3. Crie um sistema de arquivos NAS e adicione um destino de montagem.

    Crie um sistema de arquivos e adicione um destino de montagem no console do File Storage NAS. O sistema de arquivos deve estar na mesma VPC que o cluster ACK Serverless. Para obter mais informações, consulte Gerenciar sistemas de arquivos e Gerenciar destinos de montagem.

Etapas

Criar um cache de imagem

O recurso de cache de imagem está integrado aos clusters ACK Serverless como um CRD do Kubernetes para acelerar o download de imagens de contêiner.

  1. Crie um arquivo YAML para o cache de imagem.

    O código a seguir mostra um exemplo de arquivo imagecache.yaml:

    Nota

    Se o seu cluster estiver na China (Hangzhou), use o endereço interno da imagem. Caso contrário, use o endereço público.

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: tensorflow
    spec:
      images:
      - registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0
  2. Crie o cache de imagem.

    kubectl create -f imagecache.yaml

    A criação de um cache de imagem envolve o download da imagem, o que pode levar algum tempo dependendo do tamanho dela e das condições da rede. Execute o comando a seguir para verificar o progresso da criação do cache de imagem:

    kubectl get imagecache tensorflow

    O cache de imagem é criado quando uma saída semelhante à seguinte é retornada.

    :~$ kubectl get imagecache tensorflow
    NAME          AGE   CACHEID                    PHASE   PROGRESS
    tensorflow    13m   imc-2zei4b7k43lxxxbvoz     Ready   100%

Criar o job de treinamento

  1. Crie um PV e um PVC para o sistema de arquivos NAS.

    1. Prepare um arquivo YAML.

      O código a seguir mostra um exemplo de arquivo nas.yaml:

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-nas
        labels:
          alicloud-pvname: pv-nas
      spec:
        capacity:
          storage: 100Gi
        accessModes:
          - ReadWriteMany
        csi:
          driver: nasplugin.csi.alibabacloud.com
          volumeHandle: pv-nas
          volumeAttributes:
            server: 15e1d4****-gt***.cn-beijing.nas.aliyuncs.com    # The mount target of the NAS file system.
            path: /
        mountOptions:
          - nolock,tcp,noresvport
          - vers=3
      ---
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pvc-nas
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 100Gi
        selector:
          matchLabels:
            alicloud-pvname: pv-nas
    2. Crie o PV e o PVC.

      kubectl create -f nas.yaml
  2. Crie um pod do ECI para executar o job de treinamento.

    1. Prepare um arquivo YAML.

      O código a seguir mostra um exemplo de arquivo tensorflow.yaml:

      apiVersion: v1
      kind: Pod
      metadata:
        name: tensorflow
        labels:
          app: tensorflow
          alibabacloud.com/eci: "true"
        annotations:
          k8s.aliyun.com/eci-use-specs: "ecs.gn6i-c4g1.xlarge"   # Specify the GPU instance type.
          k8s.aliyun.com/eci-auto-imc: "true"                    # Enable automatic image cache matching.
      spec:
        restartPolicy: OnFailure
        containers:
          - name: tensorflow
            image: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0  # Use the image address that corresponds to the image cache.
            command:
              - python
            args:
              - /home/classify_image/classify_image.py      # The training script to run after the container starts.
            resources:
              limits:
                nvidia.com/gpu: "1"   # The number of GPUs required by the container.
            volumeMounts:             # Mount the NAS file system to persist training results.
              - name: pvc-nas
                mountPath: /tmp/classify_image_model
        volumes:
          - name: pvc-nas
            persistentVolumeClaim:
              claimName: pvc-nas
    2. Crie o pod.

      kubectl create -f tensorflow.yaml
  3. Verifique o status do job de treinamento.

    kubectl get pod

    Quando o status do pod mudar para 'Completed', o job de treinamento estará concluído.

    kubectl get pod
    NAME            READY   STATUS      RESTARTS   AGE
    tensorflow      0/1     Completed   0          118s
    Nota

    Também é possível visualizar os detalhes do pod executando kubectl describe pod <pod name> ou consultar os logs executando kubectl logs <pod name>.

Visualizar resultados

Consulte os resultados do job de treinamento.

  • No console do File Storage NAS, confirme que os resultados do treinamento foram armazenados no sistema de arquivos NAS. Após remontar o sistema de arquivos, visualize os dados resultantes no caminho correspondente.

    Na lista de sistemas de arquivos, a coluna Used Capacity exibe a capacidade de armazenamento utilizada, por exemplo, 45,71 MiB, e o status do sistema de arquivos aparece como Running.

  • No console do Elastic Container Instance, localize a instância do ECI correspondente ao pod.

    O status 'Succeeded' indica que o contêiner na instância parou de ser executado. Em seguida, o sistema recupera os recursos de computação subjacentes e interrompe o faturamento do pod.

Tópicos relacionados

Este tópico utilizou o recurso de cache de imagem para acelerar o download de imagens e um sistema de arquivos NAS para armazenamento persistente. Para obter mais informações, consulte os seguintes tópicos: