全部产品
Search
文档中心

Elastic Container Instance:Jalankan tugas TensorFlow pada instance kontainer elastis

更新时间:Jul 06, 2025

Anda dapat mengontainerkan lingkungan perangkat lunak yang diperlukan untuk tugas pelatihan AI, lalu menjalankannya pada instance kontainer elastis. Metode ini menyelesaikan masalah penyebaran lingkungan yang kompleks. Selain itu, Anda hanya membayar untuk apa yang digunakan, mengurangi biaya dan meningkatkan efisiensi. Topik ini menjelaskan cara menjalankan tugas pelatihan TensorFlow berbasis GPU pada instance kontainer elastis di cluster ACK Serverless Container Service for Kubernetes (ACK). Tugas pelatihan TensorFlow berbasis GPU ini tersedia di GitHub.

Informasi latar belakang

Dalam beberapa tahun terakhir, AI dan pembelajaran mesin telah banyak digunakan di berbagai bidang, dengan pengembangan berbagai model pelatihan. Semakin banyak tugas pelatihan dijalankan di cloud. Namun, menjalankan tugas pelatihan secara konsisten dalam lingkungan cloud tidaklah mudah. Anda mungkin menghadapi tantangan berikut:

  • Kesulitan dalam penyebaran lingkungan: Anda harus membeli instance dengan akselerasi GPU dan menginstal Driver GPU pada instance tersebut. Setelah menyiapkan lingkungan berbasis kontainer untuk tugas pelatihan, Anda juga harus menginstal panggilan balik runtime GPU.

  • Kurangnya skalabilitas: Setelah menyebar lingkungan dan menjalankan tugas pelatihan, Anda mungkin perlu melepaskan sumber daya idle untuk menghemat biaya. Saat ingin menjalankan tugas pelatihan lagi, Anda harus menyiapkan lingkungan dan membuat instance baru. Jika node komputasi tidak mencukupi, Anda harus menambah node komputasi, yang memerlukan pembuatan instance dan penyebaran lingkungan ulang.

Untuk mengatasi kesulitan tersebut, kami merekomendasikan penggunaan cluster ACK Serverless dan instance kontainer elastis untuk menjalankan tugas pelatihan. Solusi ini memiliki manfaat sebagai berikut:

  • Biaya berdasarkan sistem bayar sesuai pemakaian tanpa perlu mengelola sumber daya.

  • Konfigurasi hanya perlu disiapkan sekali dan dapat digunakan kembali tanpa batasan.

  • Fitur cache gambar memungkinkan pembuatan instance dan peluncuran tugas pelatihan lebih efisien.

  • Data pelatihan dipisahkan dari model pelatihan, dengan data pelatihan dapat disimpan secara permanen.

Persiapan

  1. Siapkan data pelatihan dan gambar.

    • Dalam contoh ini, digunakan tugas pelatihan TensorFlow yang tersedia di GitHub. Untuk informasi lebih lanjut, lihat TensorFlow Model Garden.

    • Gambar telah disiapkan dan diunggah ke Alibaba Cloud Container Registry (ACR). Anda dapat langsung menggunakannya atau melakukan pengembangan sekunder.

      • Alamat internal untuk gambar: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

      • Alamat publik untuk gambar: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

  2. Buat cluster ACK Serverless.

    Buat cluster ACK Serverless di konsol ACK. Untuk informasi lebih lanjut, lihat Buat cluster ACK Serverless.

    Penting

    Jika Anda perlu menarik gambar melalui Internet atau jika tugas pelatihan Anda memerlukan akses Internet, Anda harus mengonfigurasi Gateway NAT Internet.

    Anda dapat menggunakan kubectl dan salah satu metode berikut untuk mengelola dan mengakses cluster ACK Serverless:

  3. Buat sistem file File Storage NAS (NAS) dan tambahkan target mount.

    Buat sistem file NAS dan tambahkan target mount di konsol File Storage NAS. Sistem file NAS dan cluster ACK Serverless harus berada di virtual private cloud (VPC) yang sama. Untuk informasi lebih lanjut, lihat Buat sistem file dan Kelola target mount.

Prosedur

Buat cache gambar

Fitur cache gambar telah diintegrasikan ke dalam cluster ACK Serverless menggunakan Kubernetes CustomResourceDefinitions (CRDs) untuk mempercepat penarikan gambar.

  1. Buat file YAML yang digunakan untuk membuat cache gambar.

    Kode berikut menunjukkan contoh file imagecache.yaml.

    Catatan

    Jika cluster Anda berada di wilayah China (Hangzhou), kami sarankan menggunakan alamat internal gambar untuk menarik gambar. Jika cluster Anda berada di wilayah lain, Anda dapat menggunakan alamat publik gambar untuk menarik gambar.

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

    kubectl create -f imagecache.yaml

    Anda harus menarik gambar saat membuat cache gambar. Waktu yang dibutuhkan untuk menarik gambar bergantung pada ukuran gambar dan kondisi jaringan. Anda dapat menjalankan perintah berikut untuk melihat kemajuan pembuatan cache gambar:

    kubectl get imagecache tensorflow

    Keluaran perintah serupa dengan yang berikut menunjukkan bahwa cache gambar telah dibuat.

    ECI-tensor.png

Buat tugas pelatihan

  1. Buat volume persisten (PV) dan klaim volume persisten (PVC) untuk sistem file NAS.

    1. Siapkan file YAML.

      Kode berikut menunjukkan contoh file 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     # Target mount sistem file NAS.
            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. Buat PV dan PVC.

      kubectl create -f nas.yaml
  2. Buat pod untuk menjalankan tugas pelatihan.

    1. Siapkan file YAML.

      Kode berikut menunjukkan contoh file 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" # Tentukan spesifikasi GPU.
          k8s.aliyun.com/eci-auto-imc: "true"         # Aktifkan pencocokan otomatis cache gambar.
      spec:
        restartPolicy: OnFailure
        containers:
          - name: tensorflow
            image: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0 # Gunakan alamat gambar yang sesuai dengan cache gambar.
            command:
              - python
            args:
              - /home/classify_image/classify_image.py   # Jalankan skrip pelatihan setelah kontainer dimulai.
            resources:
              limits:
                nvidia.com/gpu: "1"   # Jumlah GPU yang diminta oleh kontainer.
            volumeMounts:      # Mount sistem file NAS untuk menyediakan penyimpanan persisten untuk hasil pelatihan.
              - name: pvc-nas
                mountPath: /tmp/classify_image_model
        volumes:
          - name: pvc-nas
            persistentVolumeClaim:
              claimName: pvc-nas
    2. Buat pod.

      kubectl create -f tensorflow.yaml
  3. Lihat status eksekusi tugas pelatihan.

    kubectl get pod

    Jika pod berada dalam status Completed, tugas pelatihan selesai.

    ECI-tensor1.png

    Catatan

    Anda juga dapat menjalankan perintah kubectl describe pod <nama pod> untuk melihat detail pod atau menjalankan perintah kubectl logs <nama pod> untuk melihat log.

Lihat hasil

Anda dapat melihat hasil tugas pelatihan di konsol.

  • Di konsol File Storage NAS, Anda dapat melihat bahwa hasil pelatihan disimpan di sistem file NAS dan ruang penyimpanan yang digunakan oleh hasil pelatihan. Setelah sistem file NAS dimount ulang, Anda dapat memperoleh hasil di jalur yang sesuai.

    ECI-tensor2.png

  • Anda dapat melihat instance kontainer elastis yang sesuai dengan pod di konsol Elastic Container Instance.

    Jika instance kontainer elastis berhasil dijalankan, kontainer di dalam instance dihentikan. Kemudian, sistem mengambil kembali sumber daya komputasi dasar, dan penagihan pod dihentikan.

    ECI-tensor3.png

Referensi

Tutorial ini menggunakan fitur cache gambar untuk mempercepat penarikan gambar dan menggunakan sistem file NAS untuk penyimpanan persisten. Untuk informasi lebih lanjut, lihat: