Pemecahan masalah penyebaran model lokal
Mencoba penyebaran model lokal sebagai langkah awal dalam pemecahan masalah penyebaran ke Azure Container Instances (ACI) atau Azure Kubernetes Service (AKS). Menggunakan layanan web lokal memudahkan untuk menemukan dan memperbaiki kesalahan umum penyebaran layanan web Azure Machine Learning Docker.
Prasyarat
- Langganan Azure. Coba versi gratis atau berbayar Azure Machine Learning.
- Opsi A (Disarankan) - Debug secara lokal di Azure Pembelajaran Mesin Compute Instance
- Ruang Kerja Azure Machine Learning dengan instans komputasi berjalan
- Opsi B - Debug secara lokal pada komputasi Anda
- Azure Machine Learning SDK.
- Azure CLI.
- Ekstensi CLI untuk Azure Machine Learning.
- Memiliki penginstalan Docker yang berfungsi di sistem lokal Anda.
- Untuk memverifikasi penginstalan Docker Anda, gunakan perintah
docker run hello-world
dari terminal atau perintah. Untuk informasi tentang menginstal Docker, atau memecahkan masalah kesalahan Docker, lihat Dokumentasi Docker.
- Opsi C - Aktifkan debugging lokal dengan server HTTP inferensi Azure Machine Learning.
- Server HTTP inferensi Azure Pembelajaran Mesin adalah paket Python yang memungkinkan Anda dengan mudah memvalidasi skrip entri Anda (
score.py
) di lingkungan pengembangan lokal. Jika ada masalah dengan skrip penilaian, server akan menampilkan kesalahan. Selain itu, mengembalikan lokasi di mana kesalahan telah terjadi. - Server juga dapat digunakan saat membuat gerbang validasi dalam integrasi berkelanjutan dan alur penyebaran. Misalnya, mulai server dengan skrip kandidat dan jalankan rangkaian uji terhadap titik akhir lokal.
- Server HTTP inferensi Azure Pembelajaran Mesin adalah paket Python yang memungkinkan Anda dengan mudah memvalidasi skrip entri Anda (
Server HTTP inferensi Azure Machine Learning
Server inferensi lokal memungkinkan Anda men-debug skrip entri (score.py
) dengan cepat. Jika skrip skor yang mendasarinya memiliki bug, server akan gagal menginisialisasi atau melayani model. Sebaliknya, ini akan menghilangkan pengecualian & lokasi tempat masalah terjadi. Pelajari Server HTTP inferensi Azure Machine Learning lebih lanjut
Pasang paket
azureml-inference-server-http
dari umpan pypi:python -m pip install azureml-inference-server-http
Mulai server dan atur
score.py
sebagai skrip entri:azmlinfsrv --entry_script score.py
Kirim permintaan penilaian ke server menggunakan
curl
:curl -p 127.0.0.1:5001/score
Catatan
Pelajari pertanyaan umum tentang server HTTP Inferensi pembelajaran mesin Azure.
Mendebug secara lokal
Anda dapat menemukan buku catatan penyebaran lokal sampel di repositori MachineLearningNotebooks untuk menjelajahi contoh yang dapat dijalankan.
Peringatan
Penyebaran layanan web lokal tidak didukung untuk skenario produksi.
Untuk menyebarkan secara lokal, ubah kode Anda untuk menggunakan LocalWebservice.deploy_configuration()
untuk membuat konfigurasi penyebaran. Kemudian gunakan Model.deploy()
untuk menyebarkan layanan. Contoh berikut menyebarkan model (terkandung dalam variabel model) sebagai layanan web lokal:
BERLAKU UNTUK:SDK Python azureml v1
from azureml.core.environment import Environment
from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import LocalWebservice
# Create inference configuration based on the environment definition and the entry script
myenv = Environment.from_conda_specification(name="env", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score.py", environment=myenv)
# Create a local deployment, using port 8890 for the web service endpoint
deployment_config = LocalWebservice.deploy_configuration(port=8890)
# Deploy the service
service = Model.deploy(
ws, "mymodel", [model], inference_config, deployment_config)
# Wait for the deployment to complete
service.wait_for_deployment(True)
# Display the port that the web service is available on
print(service.port)
Jika Anda menentukan YAML spesifikasi conda Anda sendiri, cantumkan versi azureml-defaults version >= 1.0.45 sebagai dependensi pip. Paket ini diperlukan untuk menghosting model sebagai layanan web.
Pada titik ini, Anda dapat bekerja dengan layanan seperti biasa. Kode berikut menunjukkan pengiriman data ke layanan:
import json
test_sample = json.dumps({'data': [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
]})
test_sample = bytes(test_sample, encoding='utf8')
prediction = service.run(input_data=test_sample)
print(prediction)
Untuk informasi selengkapnya tentang menyesuaikan lingkungan Python Anda, lihat Membuat dan mengelola lingkungan untuk pelatihan dan penyebaran.
Memperbarui layanan
Selama pengujian lokal, Anda mungkin perlu memperbarui file score.py
untuk menambahkan pengelogan atau mencoba menyelesaikan masalah apa pun yang Anda temukan. Untuk mengisi ulang perubahan pada file score.py
, gunakan reload()
. Misalnya, kode berikut mengisi ulang skrip untuk layanan, lalu mengirim data ke sana. Data dinilai menggunakan file score.py
yang diperbarui:
Penting
Metode reload
hanya tersedia untuk penyebaran lokal. Untuk informasi tentang memperbarui penyebaran ke target komputasi lain, lihat cara memperbarui layanan web Anda.
service.reload()
print(service.run(input_data=test_sample))
Catatan
Skrip diisi ulang dari lokasi yang ditentukan oleh objek InferenceConfig
yang digunakan oleh layanan.
Untuk mengubah model, dependensi Conda, atau konfigurasi penyebaran, gunakan update(). Contoh berikut memperbarui model yang digunakan oleh layanan:
service.update([different_model], inference_config, deployment_config)
Menghapus layanan
Untuk menghapus layanan, gunakan delete().
Memeriksa log Docker
Anda dapat mencetak pesan log komputer Docker terperinci dari objek layanan. Anda dapat menampilkan log untuk penyebaran Lokal, ACI, dan AKS. Contoh berikut menunjukkan cara mencetak log.
# if you already have the service object handy
print(service.get_logs())
# if you only know the name of the service (note there might be multiple services with the same name but different version number)
print(ws.webservices['mysvc'].get_logs())
Jika Anda melihat garis Booting worker with pid: <pid>
yang terjadi beberapa kali dalam log, artinya, memori tidak cukup untuk memulai pekerja.
Anda dapat mengatasi kesalahan dengan meningkatkan nilai memory_gb
di deployment_config
Langkah berikutnya
Pelajari selengkapnya tentang penyebaran: