Anda dapat mengontainerisasi lingkungan perangkat lunak yang diperlukan untuk pekerjaan pelatihan AI dan menjalankannya di ECI. Pendekatan ini menyederhanakan penyiapan lingkungan serta memungkinkan Anda hanya membayar berdasarkan waktu proses, sehingga mengurangi biaya dan meningkatkan efisiensi. Topik ini menggunakan contoh pekerjaan pelatihan TensorFlow berbasis GPU dari GitHub untuk menunjukkan cara menjalankan pekerjaan pelatihan pada kluster ACK Serverless dengan menggunakan ECI.
Latar Belakang
Kecerdasan buatan dan pembelajaran mesin kini banyak digunakan, menghasilkan berbagai model pelatihan dan peningkatan jumlah pekerjaan pelatihan berbasis cloud. Namun, setelah bermigrasi ke cloud, Anda mungkin menghadapi tantangan berikut saat menjalankan pekerjaan pelatihan:
-
Anda harus membeli instans GPU dan menginstal driver GPU. Bahkan setelah pekerjaan pelatihan dikontainerisasi, Anda tetap perlu menginstal hook runtime GPU.
-
Untuk menghemat biaya, Anda biasanya melepas sumber daya setelah pekerjaan selesai. Namun, saat menjalankan pekerjaan berikutnya, Anda harus membuat ulang instans dan mengonfigurasi ulang lingkungan. Jika node komputasi memiliki sumber daya yang tidak mencukupi, Anda perlu melakukan penskalaan manual, lalu membuat ulang dan mengonfigurasi ulang.
Untuk mengatasi masalah tersebut, kami merekomendasikan penggunaan kluster ACK Serverless dan ECI untuk menjalankan pekerjaan pelatihan Anda. Solusi ini memberikan manfaat berikut:
-
Pembayaran pay-as-you-go dan bebas operasional & pemeliharaan (O&M-free).
-
Konfigurasi sekali, gunakan berulang kali tanpa batas.
-
Fitur cache gambar mempercepat pembuatan instans sehingga pekerjaan pelatihan dapat dimulai lebih cepat.
-
Data dipisahkan dari model pelatihan dan dapat disimpan secara persisten.
Prasyarat
-
Siapkan data pelatihan dan gambar kontainer.
-
Data pelatihan: Topik ini menggunakan contoh pekerjaan pelatihan TensorFlow dari GitHub. Untuk informasi selengkapnya, lihat Pekerjaan pelatihan TensorFlow.
-
Gambar kontainer: ECI menyediakan contoh gambar yang telah diunggah ke Alibaba Cloud Container Registry (ACR). Anda dapat langsung menggunakan gambar tersebut atau menyesuaikannya sesuai kebutuhan.
-
Alamat internal: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0
-
Alamat publik: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0
-
-
-
Buat kluster ACK Serverless.
Buat kluster ACK Serverless di Konsol Container Service for Kubernetes. Untuk informasi selengkapnya, lihat Buat kluster ACK Serverless.
PentingJika Anda perlu menarik gambar dari internet atau pekerjaan pelatihan Anda memerlukan akses internet, konfigurasikan NAT Gateway.
Anda dapat menggunakan kubectl untuk mengelola dan mengakses kluster ACK Serverless sebagai berikut:
-
Untuk mengelola kluster dari komputer lokal, instal dan konfigurasikan klien kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
Anda juga dapat menggunakan kubectl di Cloud Shell untuk mengelola kluster. Untuk informasi selengkapnya, lihat Gunakan kubectl untuk mengelola kluster Kubernetes di Cloud Shell.
-
-
Buat sistem file NAS dan tambahkan titik pemasangan.
Buat sistem file dan tambahkan titik pemasangan di Konsol File Storage NAS. Sistem file tersebut harus berada dalam VPC yang sama dengan kluster ACK Serverless. Untuk informasi selengkapnya, lihat Kelola sistem file dan Kelola titik pemasangan.
Langkah-langkah
Buat cache gambar
Fitur cache gambar diintegrasikan ke dalam kluster ACK Serverless sebagai CRD Kubernetes untuk mempercepat proses menarik gambar kontainer.
-
Buat file YAML untuk cache gambar.
Kode berikut menyediakan contoh file imagecache.yaml:
CatatanJika kluster Anda berada di China (Hangzhou), gunakan alamat gambar internal. Jika tidak, gunakan alamat publik.
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: tensorflow spec: images: - registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0 -
Buat cache gambar.
kubectl create -f imagecache.yamlPembuatan cache gambar melibatkan proses menarik gambar, yang mungkin memerlukan waktu tergantung pada ukuran gambar dan kondisi jaringan. Anda dapat menjalankan perintah berikut untuk memeriksa progres pembuatan cache gambar:
kubectl get imagecache tensorflowCache gambar berhasil dibuat ketika output seperti berikut dikembalikan.
:~$ kubectl get imagecache tensorflow NAME AGE CACHEID PHASE PROGRESS tensorflow 13m imc-2zei4b7k43lxxxbvoz Ready 100%
Buat pekerjaan pelatihan
-
Buat PV dan PVC untuk sistem file NAS.
-
Siapkan file YAML.
Kode berikut menyediakan 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 # Titik pemasangan 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 -
Buat PV dan PVC.
kubectl create -f nas.yaml
-
-
Buat Pod ECI untuk menjalankan pekerjaan pelatihan.
-
Siapkan file YAML.
Kode berikut menyediakan 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 tipe instans GPU. k8s.aliyun.com/eci-auto-imc: "true" # Aktifkan pencocokan cache gambar otomatis. 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 # Skrip pelatihan yang dijalankan setelah kontainer dimulai. resources: limits: nvidia.com/gpu: "1" # Jumlah GPU yang dibutuhkan oleh kontainer. volumeMounts: # Pasang sistem file NAS untuk menyimpan hasil pelatihan secara persisten. - name: pvc-nas mountPath: /tmp/classify_image_model volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nas -
Buat Pod.
kubectl create -f tensorflow.yaml
-
-
Periksa status pekerjaan pelatihan.
kubectl get podSaat status Pod berubah menjadi 'Completed', pekerjaan pelatihan telah selesai.
kubectl get pod NAME READY STATUS RESTARTS AGE tensorflow 0/1 Completed 0 118sCatatanAnda juga dapat melihat detail Pod dengan menjalankan
kubectl describe pod <pod name>atau melihat log dengan menjalankankubectl logs <pod name>.
Lihat hasil
Anda dapat melihat hasil pekerjaan pelatihan.
-
Di Konsol File Storage NAS, Anda dapat melihat bahwa hasil pelatihan disimpan pada sistem file NAS. Setelah Anda memasang ulang sistem file tersebut, Anda dapat melihat data hasil di jalur yang sesuai.
Pada daftar sistem file, kolom Used Capacity menampilkan kapasitas penyimpanan yang digunakan, misalnya 45,71 MiB, dan status sistem file adalah Running.
-
Di Konsol Elastic Container Instance, Anda dapat melihat instans ECI yang sesuai dengan Pod tersebut.
Status 'Succeeded' menunjukkan bahwa kontainer dalam instans telah berhenti berjalan. Sistem kemudian akan mereklaim sumber daya komputasi dasar dan menghentikan penagihan untuk Pod tersebut.
Topik terkait
Topik ini menggunakan fitur cache gambar untuk mempercepat proses menarik gambar dan sistem file NAS untuk penyimpanan persisten. Untuk informasi selengkapnya, lihat topik-topik berikut: