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
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
Buat cluster ACK Serverless.
Buat cluster ACK Serverless di konsol ACK. Untuk informasi lebih lanjut, lihat Buat cluster ACK Serverless.
PentingJika 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:
Jika Anda ingin mengelola cluster dari mesin lokal, instal dan konfigurasikan klien kubectl. Untuk informasi lebih lanjut, lihat Hubungkan ke cluster ACK menggunakan kubectl.
Gunakan kubectl untuk mengelola cluster ACK Serverless di Cloud Shell. Untuk informasi lebih lanjut, lihat Gunakan kubectl untuk mengelola cluster ACK di Cloud Shell.
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.
Buat file YAML yang digunakan untuk membuat cache gambar.
Kode berikut menunjukkan contoh file imagecache.yaml.
CatatanJika 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.0Buat cache gambar.
kubectl create -f imagecache.yamlAnda 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 tensorflowKeluaran perintah serupa dengan yang berikut menunjukkan bahwa cache gambar telah dibuat.

Buat tugas pelatihan
Buat volume persisten (PV) dan klaim volume persisten (PVC) untuk sistem file NAS.
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-nasBuat PV dan PVC.
kubectl create -f nas.yaml
Buat pod untuk menjalankan tugas pelatihan.
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-nasBuat pod.
kubectl create -f tensorflow.yaml
Lihat status eksekusi tugas pelatihan.
kubectl get podJika pod berada dalam status Completed, tugas pelatihan selesai.
CatatanAnda juga dapat menjalankan perintah
kubectl describe pod <nama pod>untuk melihat detail pod atau menjalankan perintahkubectl 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.

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.

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