Topik ini menjelaskan cara menggunakan Arena untuk menerapkan model TensorFlow sebagai layanan inferensi.
Prasyarat
Prosedur
Dalam topik ini, model BERT yang dilatih dengan TensorFlow 1.15 digunakan untuk menerapkan layanan inferensi. Model diekspor sebagai model tersimpan.
Jalankan perintah berikut untuk memeriksa sumber daya GPU yang tersedia di kluster:
arena top nodeKeluaran yang diharapkan:
NAME IPADDRESS ROLE STATUS GPU(Total) GPU(Allocated) cn-beijing.192.168.0.100 192.168.0.100 <none> Ready 1 0 cn-beijing.192.168.0.101 192.168.0.101 <none> Ready 1 0 cn-beijing.192.168.0.99 192.168.0.99 <none> Ready 1 0 --------------------------------------------------------------------------------------------------- Alokasi/Total GPU dari node yang memiliki sumber daya nvidia.com/gpu Di Kluster: 0/3 (0,0%)Keluaran di atas menunjukkan bahwa kluster memiliki tiga node yang dipercepat GPU tempat Anda dapat menerapkan model.
Unggah model ke bucket di Object Storage Service (OSS).
PentingContoh ini menunjukkan cara mengunggah model ke OSS dari sistem Linux. Jika Anda menggunakan sistem operasi lain, lihat ossutil.
Buat bucket bernama
examplebucket.Jalankan perintah berikut untuk membuat bucket bernama
examplebucket:ossutil64 mb oss://examplebucketJika keluaran berikut ditampilkan, bucket bernama
examplebuckettelah dibuat:0,668238(s) elapsed
Unggah model ke bucket
examplebucket.ossutil64 cp model.savedmodel oss://examplebucket
Buat volume persisten (PV) dan klaim volume persisten (PVC).
Buat file bernama
Tensorflow.yamlberdasarkan template berikut:apiVersion: v1 kind: PersistentVolume metadata: name: model-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: model-csi-pv // Nilai ini harus sama dengan nama PV. volumeAttributes: bucket: "Nama Bucket Anda" url: "URL OSS Anda" akId: "ID AccessKey Anda" akSecret: "Rahasia AccessKey Anda" otherOpts: "-o max_stat_cache_size=0 -o allow_other" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: model-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5GiParameter
Deskripsi
bucket
Nama bucket OSS, yang unik secara global di OSS. Untuk informasi lebih lanjut, lihat Konvensi penamaan bucket.
url
URL yang digunakan untuk mengakses objek di bucket. Untuk informasi lebih lanjut, lihat Dapatkan URL satu objek atau beberapa objek.
akId
ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses bucket OSS. Kami sarankan Anda mengakses bucket OSS sebagai Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.
akSecret
otherOpts
Parameter kustom untuk memasang bucket OSS.
Tetapkan
-o max_stat_cache_size=0untuk menonaktifkan caching metadata. Jika fitur ini dinonaktifkan, sistem mengambil metadata terbaru dari OSS setiap kali mencoba mengakses objek di OSS.Tetapkan
-o allow_otheruntuk mengizinkan pengguna lain mengakses bucket OSS yang Anda pasang.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat Parameter kustom yang didukung oleh ossfs.
Jalankan perintah berikut untuk membuat PV dan PVC:
kubectl apply -f Tensorflow.yaml
Jalankan perintah berikut untuk meluncurkan instance
TensorFlow Servingbernamabert-tfserving:arena serve tensorflow \ --name=bert-tfserving \ --model-name=chnsenticorp \ --gpus=1 \ --image=tensorflow/serving:1.15.0-gpu \ --data=model-pvc:/models \ --model-path=/models/tensorflow \ --version-policy=specific:1623831335Keluaran yang diharapkan:
configmap/bert-tfserving-202106251556-tf-serving created configmap/bert-tfserving-202106251556-tf-serving labeled configmap/bert-tfserving-202106251556-tensorflow-serving-cm created service/bert-tfserving-202106251556-tensorflow-serving created deployment.apps/bert-tfserving-202106251556-tensorflow-serving created INFO[0003] Pekerjaan bert-tfserving telah berhasil dikirimkan INFO[0003] Anda dapat menjalankan `arena get bert-tfserving --type tf-serving` untuk memeriksa status pekerjaanJalankan perintah berikut untuk memeriksa semua layanan yang sedang berjalan:
arena serve listKeluaran menunjukkan bahwa hanya layanan
bert-tfservingyang sedang berjalan.NAMA TIPE VERSI DIINGINKAN TERSEDIA ALAMAT PORT bert-tfserving Tensorflow 202106251556 1 1 172.16.95.171 GRPC:8500,RESTFUL:8501Jalankan perintah berikut untuk memeriksa detail layanan
bert-tfserving:arena serve get bert-tfservingKeluaran yang diharapkan:
Nama: bert-tfserving Namespace: inference Tipe: Tensorflow Versi: 202106251556 Diinginkan: 1 Tersedia: 1 Usia: 4m Alamat: 172.16.95.171 Port: GRPC:8500,RESTFUL:8501 Instance: NAMA STATUS USIA SIAP RESTARTS NODE ---- ------ --- ----- -------- ---- bert-tfserving-202106251556-tensorflow-serving-8554d58d67-jd2z9 Running 4m 1/1 0 cn-beijing.192.168.0.88Keluaran di atas menunjukkan bahwa model berhasil diterapkan menggunakan
TensorFlow Serving. Port 8500 terbuka untuk gRPC dan port 8501 terbuka untuk HTTP.Secara default, layanan inferensi yang diterapkan menggunakan
arena serve tensorflowmenyediakan IP kluster. Anda perlu membuat Ingress yang menghadap Internet untuk mengakses layanan inferensi melalui IP kluster.Di halaman Clusters, klik nama kluster yang ingin Anda kelola dan pilih di panel navigasi di sebelah kiri.
Di bagian atas halaman, pilih namespace
inferenceyang ditampilkan di Langkah 6 dari daftar drop-down Namespace.Klik Create Ingress di bagian kanan atas halaman. Untuk informasi lebih lanjut tentang parameter Ingress, lihat Buat NGINX Ingress.
Name:
Tensorflowdimasukkan dalam contoh ini.Rules:
Domain Name: Masukkan nama domain kustom, seperti
test.example.com.Mappings:
Path: Path root
/digunakan dalam contoh ini.Rule: Aturan default (ImplementationSpecific) digunakan dalam contoh ini.
Service Name: Masukkan nama layanan yang dikembalikan oleh perintah
kubectl get service.Port: Port 8501 digunakan dalam contoh ini.
Setelah Anda membuat Ingress, buka halaman Ingresses dan temukan Ingress tersebut. Nilai di kolom Rules menampilkan alamat Ingress.

Jalankan perintah berikut untuk memanggil API layanan inferensi. Untuk informasi lebih lanjut tentang
TensorFlow Serving, lihat API TensorFlow Serving.curl "http://<Alamat Ingress>"Keluaran yang diharapkan:
{ "model_version_status": [ { "version": "1623831335", "state": "AVAILABLE", "status": { "error_code": "OK", "error_message": "" } } ] }