Machine Learning Platform for AI (PAI)-Blade menyediakan SDK untuk C++ yang dapat digunakan untuk menerapkan model yang dioptimalkan untuk inferensi. Topik ini menjelaskan cara menggunakan SDK yang disediakan oleh PAI-Blade. Model TensorFlow digunakan dalam topik ini.
Prasyarat
- Model TensorFlow telah dioptimalkan dengan menggunakan PAI-Blade. Untuk informasi lebih lanjut, lihat Optimalkan Model TensorFlow.
- SDK telah diinstal, dan Token otentikasi telah diperoleh. Untuk informasi lebih lanjut, lihat Instal PAI-Blade. Dalam contoh ini, GNU Compiler Collection (GCC) 4.8 digunakan. Oleh karena itu, SDK yang menggunakan Pre-CXX11 application binary interface (ABI) diperlukan. Untuk memenuhi persyaratan ini, paket RPM versi 3.7.0 digunakan.Catatan Model yang dioptimalkan dengan menggunakan PAI-Blade hanya dapat dijalankan dengan benar jika SDK yang sesuai telah diinstal.
Siapkan lingkungan
Topik ini menjelaskan cara menggunakan PAI-Blade SDK untuk menerapkan model TensorFlow untuk inferensi. Dalam contoh ini, CentOS 7 diinstal.
- Siapkan server.Siapkan instance Elastic Compute Service (ECS) dengan spesifikasi berikut:
- Tipe instance: ecs.gn6i-c4g1.xlarge, NVIDIA Tesla T4 GPU
- Sistem operasi: CentOS 7.9 64-bit
- Perangkat: CUDA 10.0
- GPU: Driver 440.64.00
- Paket akselerasi komputasi GPU: cuDNN 7.6.5
- Instal GCC.Dalam contoh ini, GCC 4.8 digunakan secara default untuk CentOS. Untuk menginstal GCC 4.8, jalankan perintah berikut:
yum install -y gcc-c++ - Instal Python 3.
# Perbarui pip. python3 -m pip install --upgrade pip # Instal virtualenv sebagai lingkungan virtual tempat Anda dapat menginstal TensorFlow. pip3 install virtualenv==16.0 python3 -m virtualenv venv # Langkah ini penting. Aktifkan virtualenv. source venv/bin/activate - Instal TensorFlow dan unduh pustaka terkait.Jika Anda menggunakan model TensorFlow untuk inferensi, dua pustaka tautan dinamis libtensorflow_framework.so dan libtensorflow_cc.so diperlukan. Dalam skenario produksi sebenarnya, Anda harus menginstal roda TensorFlow yang berisi pustaka libtensorflow_framework.so. Roda TensorFlow dan pustaka libtensorflow_cc.so harus menggunakan konfigurasi, lingkungan, dan versi kompiler yang sama. Untuk tujuan demonstrasi, TensorFlow Community Edition dan pustaka yang sudah dikompilasi sebelumnya digunakan dalam contoh ini. Jangan gunakan pustaka yang sudah dikompilasi sebelumnya di lingkungan produksi.
# Instal TensorFlow. pip3 install tensorflow-gpu==1.15.0 # Unduh libtensorflow_cc.so. wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/demo/sdk/tensorflow/libtensorflow_cc.so
Terapkan model untuk inferensi
Untuk menggunakan PAI-Blade SDK untuk memuat dan menerapkan model yang dioptimalkan untuk inferensi, Anda dapat menautkan pustaka dalam SDK saat mengkompilasi kode inferensi tanpa perlu memodifikasi logika kode asli.
- Siapkan model.Dalam contoh ini, model sampel yang dioptimalkan digunakan untuk tujuan demonstrasi. Jalankan perintah berikut untuk mengunduh model sampel. Anda juga dapat menggunakan model yang telah dioptimalkan sendiri. Untuk informasi lebih lanjut tentang cara mengoptimalkan model dengan menggunakan PAI-Blade, lihat Optimalkan Model TensorFlow.
wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/demo/asr_frozen.pb - Unduh dan lihat kode inferensi.Anda dapat menjalankan model TensorFlow yang dioptimalkan dengan menggunakan PAI-Blade dengan cara yang sama seperti model TensorFlow biasa. Anda tidak perlu menulis kode tambahan atau menyetel parameter tambahan. Anda dapat menjalankan perintah berikut untuk mengunduh kode inferensi yang digunakan dalam contoh ini:
Lihat file tf_sdk_demo.cc yang diunduh. File tersebut hanya menentukan logika inferensi umum untuk model TensorFlow dan tidak berisi kode terkait PAI-Blade.wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/demo/sdk/tensorflow/tf_sdk_demo.cc - Kompilasi kode inferensi.Anda hanya perlu menautkan file libtf_blade.so yang berada di direktori /usr/local/lib ke kode inferensi sebelum menjalankan model yang dioptimalkan dengan menggunakan PAI-Blade. Jalankan perintah berikut untuk mengkompilasi kode:
Anda dapat memodifikasi parameter berikut berdasarkan kebutuhan bisnis Anda:# Dapatkan flag kompiler TensorFlow. TF_COMPILE_FLAGS=$(python3 -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') # Dapatkan flag linker TensorFlow. TF_LD_FLAGS=$(python3 -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') # File libtensorflow_cc.so ada di direktori saat ini. TF_CC_PATH='.' g++ -std=c++11 tf_sdk_demo.cc \ ${TF_COMPILE_FLAGS} \ ${TF_LD_FLAGS} \ -L ${TF_CC_PATH} \ -L /usr/local/lib \ -ltensorflow_cc \ -ltf_blade \ -ltao_ops \ -o demo_cpp_sdk.bin- tf_sdk_demo.cc: nama file yang menentukan kode inferensi.
- /usr/local/lib: jalur instalasi SDK. Dalam banyak kasus, Anda tidak perlu memodifikasi parameter ini.
- demo_cpp_sdk.bin: nama program yang dapat dieksekusi yang dihasilkan setelah kompilasi.
Catatan Dibandingkan dengan model TensorFlow biasa, file libtf_blade.so dan libtao_ops.so ditautkan secara tambahan ke kode inferensi dalam contoh ini. File libtao_ops.so berisi operator optimasi. - Jalankan model untuk inferensi pada perangkat lokal.Anda dapat menggunakan program yang dapat dieksekusi hasil kompilasi demo_cpp_sdk.bin untuk memuat dan menjalankan model sampel bernama asr_frozen.pb. Model sampel telah dioptimalkan dengan menggunakan PAI-Blade. Untuk melakukannya, jalankan perintah berikut:
Modifikasi parameter berikut berdasarkan kebutuhan bisnis Anda:# Wajib. Hubungi tim layanan PAI untuk mendapatkan nilainya. export BLADE_REGION=<region> # Wajib. Hubungi tim layanan PAI untuk mendapatkan nilainya. export BLADE_TOKEN=<token> TF_LD_FLAGS=$(python3 -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') TF_FRAMEWORK_PATH=`echo $TF_LD_FLAGS | awk '{print $1}' | sed "s/-L//g"` LD_LIBRARY_PATH=${TF_FRAMEWORK_PATH}:${TF_CC_PATH}:/usr/local/lib:${LD_LIBRARY_PATH} ./demo_cpp_sdk.bin asr_frozen.pb- <region>: wilayah tempat Anda menggunakan PAI-Blade. Anda dapat bergabung dengan grup DingTalk pengguna PAI-Blade untuk mendapatkan wilayah tempat PAI-Blade dapat digunakan. Untuk informasi lebih lanjut tentang kode QR grup DingTalk, lihat Dapatkan Token Akses.
- <token>: Token otentikasi yang diperlukan untuk menggunakan PAI-Blade. Anda dapat bergabung dengan grup DingTalk pengguna PAI-Blade untuk mendapatkan Token otentikasi. Untuk informasi lebih lanjut tentang kode QR grup DingTalk, lihat Dapatkan Token Akses.
- /usr/local/lib: jalur instalasi SDK. Dalam banyak kasus, Anda tidak perlu memodifikasi parameter ini.
- demo_cpp_sdk.bin: program yang dapat dieksekusi yang dikompilasi pada langkah sebelumnya.
- asr_frozen.pb: model TensorFlow yang dioptimalkan dengan menggunakan PAI-Blade. Dalam contoh ini, model sampel yang diunduh pada Langkah 1 digunakan.
... 2020-11-20 16:41:41.263192: I demo_cpp_sdk.cpp:96] --- Eksekusi menggunakan: 41.995 ms 2020-11-20 16:41:41.305550: I demo_cpp_sdk.cpp:96] --- Eksekusi menggunakan: 42.334 ms 2020-11-20 16:41:41.347772: I demo_cpp_sdk.cpp:96] --- Eksekusi menggunakan: 42.195 ms 2020-11-20 16:41:41.390894: I demo_cpp_sdk.cpp:96] --- Eksekusi menggunakan: 43.09 ms 2020-11-20 16:41:41.434968: I demo_cpp_sdk.cpp:96] --- Eksekusi menggunakan: 44.047 ms ...