全部产品
Search
文档中心

Platform For AI:Menyebarkan layanan model menggunakan gambar kustom

更新时间:Aug 21, 2025

Jika gambar resmi tidak memenuhi kebutuhan Anda untuk logika bisnis yang kompleks atau lingkungan tertentu, Anda dapat membuat gambar kustom untuk menciptakan lingkungan runtime yang lengkap. Elastic Algorithm Service (EAS) mendukung penyebaran layanan model menggunakan gambar kustom.

Catatan

Selama waktu proses, EAS Mesin DPI disuntikkan ke dalam instans layanan sebagai sidecar. Mesin ini mengumpulkan lalu lintas dan data pemantauan sistem serta menambahkan informasi otentikasi ke permintaan layanan. Anda dapat mengekspos layanan API dari gambar melalui HTTP, WebSocket, atau gRPC (HTTP/2).

Petunjuk repositori gambar

Container Registry (ACR)

  • Anda dapat menarik gambar menggunakan titik akhir VPC.

    Penting

    Menarik gambar melalui internet lambat dan menimbulkan risiko keamanan. Metode ini tidak direkomendasikan. Secara default, EAS tidak dapat mengakses internet. Untuk menarik gambar dari repositori melalui internet, lihat Izinkan layanan EAS mengakses internet.

  • Ketika Anda menyebarkan layanan menggunakan repositori gambar ACR di bawah akun yang sama, Anda tidak perlu memasukkan nama pengguna atau kata sandi. EAS dapat menarik gambar lintas layanan tanpa otentikasi.

Repositori gambar mandiri

  • Jika Anda menggunakan repositori gambar Harbor mandiri di Alibaba Cloud VPC, repositori tersebut hanya dapat diakses dari dalam VPC tersebut. Mirip dengan proses untuk ACR Edisi Perusahaan, Anda harus menghubungkan EAS ke jaringan VPC Anda. Untuk informasi lebih lanjut, lihat Izinkan layanan EAS mengakses sumber daya di VPC.

  • Jika repositori mandiri Anda memerlukan nama pengguna dan kata sandi untuk akses, Anda harus memberikan informasi ini selama penyebaran layanan. Dalam file konfigurasi JSON, Anda harus mengkodekan Base64 string username:password. Untuk informasi lebih lanjut, lihat deskripsi parameter dockerAuth di bagian Sebarkan layanan model.

Persiapan

Catatan

Jika Anda memiliki gambar yang mendukung akses melalui HTTP, WebSocket, dan gRPC, Anda dapat melewati bagian ini.

1. Siapkan kode dan file model

Contoh berikut menunjukkan layanan web Flask sederhana. Kodenya ada di file app.py.

from flask import Flask

app = Flask(__name__)

@app.route('/hello/model')
def hello_world():
    # Di sinilah inferensi model atau logika bisnis lainnya berada
    return 'Hello World'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

Logika pemrosesan model dihilangkan di sini. Untuk meningkatkan efisiensi dan fleksibilitas penyebaran, kami sarankan Anda menyimpan file model besar, seperti yang lebih besar dari 1 GB, di Layanan Penyimpanan Objek (OSS). Jangan masukkan mereka langsung ke dalam gambar. Selama penyebaran, EAS dapat memuat model dengan memasang jalur OSS. Untuk informasi lebih lanjut, lihat Konfigurasi penyimpanan.

Sebagai contoh: Anda dapat menyimpan model my_model.pth di direktori oss://my-bucket/models/ dan memasang direktori ini ke direktori kontainer /mnt/data. Dalam kode Anda, Anda dapat langsung mengaksesnya menggunakan jalur mutlak /mnt/data/my_model.pth.

2. Bangun gambar

Catatan

Jika Anda menggunakan DSW untuk pengembangan, klik Create Image di kolom Tindakan instance DSW. Sistem membangun gambar Docker dan menyimpannya ke Alibaba Cloud Container Registry (ACR). Selama penyebaran, pilih Custom Image lalu pilih gambar dari daftar drop-down. Untuk informasi lebih lanjut, lihat Buat gambar dari instance DSW.

Berikut ini menjelaskan cara menginstal Docker secara lokal dan membangun gambar. Anda juga dapat menggunakan layanan seperti Alibaba Cloud Container Registry (ACR) untuk membangun gambar.

  1. Tulis Dockerfile.

    Dockerfile adalah file teks yang berisi instruksi dan spesifikasi yang diperlukan untuk membangun gambar. Buat Dockerfile di direktori yang sama dengan file app.py. Struktur direktori file adalah sebagai berikut:

    flask_app
      ├── app.py
      └── Dockerfile    

    Dalam contoh Dockerfile berikut, file kode app.py dikemas dalam gambar yang akan diterapkan. Anda juga dapat menyimpannya di OSS, NAS, atau repositori Git dan memasangnya ke instans layanan pada waktu proses menggunakan pemasangan penyimpanan.

    # Tentukan gambar dasar.
    FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python
    # Perintah untuk dijalankan di dalam kontainer.
    RUN yum -y install python3-pip
    RUN pip3 install flask 
    # Buat folder aplikasi.
    RUN mkdir -p /app
    # Pergi ke direktori aplikasi.
    RUN cd /app
    # Salin app.py dari direktori saat ini ke direktori /app di kontainer. 
    COPY app.py /app/
    # Paparkan port 8000.
    EXPOSE 8000
    # Tetapkan folder aplikasi sebagai direktori kerja.
    WORKDIR /app
    
    # Perintah untuk dijalankan saat kontainer dimulai: flask run
    CMD ["flask", "run", "--host", "0.0.0.0"]
  2. Bangun gambar secara lokal. Di baris perintah, pergi ke direktori flask_app dan jalankan perintah berikut untuk membangun gambar Docker bernama flask-app.

    docker build -t flask-app . 

3. Dorong gambar ke repositori

  1. Jalankan perintah docker images untuk mendapatkan ID gambar yang dibangun.

  2. Contoh ini mengasumsikan bahwa Anda menggunakan ACR Edisi Personal. Alamatnya adalah crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/***/***.

  3. Jalankan perintah berikut untuk mendorong gambar ke repositori gambar ACR.

    docker login --username=<username>  crpi-***.cn-hangzhou.personal.cr.aliyuncs.com
    docker tag <Image ID> crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/***/***:flask-app
    docker push crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/***/***:flask-app

    Alamat gambar adalah: crpi-***.cn-hangzhou.personal.cr.aliyuncs.com/***/***:flask-app.

Sebarkan layanan model

Anda dapat menyebarkan gambar menggunakan nilai parameter berikut:

  • Alamat gambar: crpi-***-vpc.cn-hangzhou.personal.cr.aliyuncs.com/***:flask-app.

  • Perintah startup gambar: python3 app.py.

  • Port yang dipantau oleh proses dalam gambar: 8000.

    Catatan

    Nomor port bersifat opsional dalam beberapa skenario. Misalnya, jika layanan Anda tidak bergantung pada lalu lintas yang diimpor dari gerbang EAS tetapi sebaliknya berlangganan antrian pesan untuk mengambil pesan, Anda tidak perlu menentukan nomor port.

Sebarkan menggunakan konsol

Konfigurasikan parameter utama sebagai berikut:

  • Metode Penyebaran: Pilih Image-based Deployment.

  • Konfigurasi Gambar: Pilih Image Address dan masukkan crpi-***-vpc.cn-hangzhou.personal.cr.aliyuncs.com/***:flask-app. Contoh ini menggunakan repositori gambar ACR, sehingga Anda tidak perlu memasukkan nama pengguna atau kata sandi.

  • Perintah Jalankan: python3 app.py

  • Nomor Port: 8000.

Sebarkan menggunakan alat klien

  1. File konfigurasi JSON adalah sebagai berikut:

    {
        "metadata": {
            "name": "flask_app_test",
            "instance": 1
        },
        "cloud": {
            "computing": {
                "instances": [
                    {
                        "type": "ecs.c8y.large"
                    }
                ]
            }
        },
        "containers": [
            {
                "image": "crpi-***-vpc.cn-hangzhou.personal.cr.aliyuncs.com/***:flask-app",
                "script": "python3 app.py",
                "port": 8000
            }
        ]
    }

    Tabel berikut menjelaskan parameter utama untuk menyebarkan layanan menggunakan gambar kustom. Untuk informasi lebih lanjut tentang parameter lainnya, lihat Penyebaran JSON.

    Parameter

    Diperlukan

    Deskripsi

    containers

    image

    Ya

    Alamat gambar yang digunakan untuk menyebarkan layanan model.

    command

    Tentukan salah satu dari dua parameter.

    Perintah entrypoint untuk gambar. Hanya perintah tunggal yang didukung. Skrip kompleks, seperti cd xxx && python app.py, tidak didukung. Untuk menjalankan skrip kompleks, gunakan parameter script. Bidang command cocok untuk skenario di mana perintah /bin/sh tidak tersedia dalam gambar.

    script

    Skrip entrypoint untuk gambar. Anda dapat menentukan skrip kompleks. Pisahkan beberapa baris dengan \n atau titik koma.

    port

    Tidak

    Port kontainer.

    Penting
    • Karena EAS Mesin DPI mendengarkan port tetap 8080 dan 9090, port kontainer tidak boleh 8080 atau 9090.

    • Port harus sama dengan port yang dikonfigurasi di file xxx.py yang ditentukan dalam parameter command.

    dockerAuth

    Tidak

    Jika Anda menggunakan gambar dari repositori pribadi, Anda harus menggunakan parameter ini untuk menentukan informasi otentikasi untuk Docker Registry. Saat ini, hanya format yang dikodekan Base64 dari username:password yang didukung.

    Sebagai contoh, jika nilai dari username:password adalah abcd:abcde12345, perintah echo -n "abcd:abcde12345" | base64 mengembalikan YWJjZDphYmNkZTEy****. Ini adalah nilai untuk dockerAuth.

  2. Anda dapat menyebarkan layanan model dengan menjalankan perintah create di alat klien. Anda harus terlebih dahulu unduh dan autentikasi klien.

    eascmd create image.json

    Dalam perintah, image.json adalah file konfigurasi layanan JSON yang dibuat pada langkah sebelumnya.

    Sistem mengembalikan hasil serupa dengan berikut ini, yang mencakup titik akhir layanan dan token akses.

    [RequestId]: BFFFE5F5-1F07-437E-B59A-AF1F2B66****
    +-------------------+-----------------------------------------------------------------------------------+
    | Internet Endpoint | http://182848887922***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/image_test    |
    | Intranet Endpoint | http://182848887922***.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/image_test|
    |             Token | NjA4MzQxOWQ0MTY2M2Y4OGY0NjgwODkwZTZmYWJmZWU1ZmY0Njhk****                          |
    +-------------------+-----------------------------------------------------------------------------------+
    [OK] Service is now creating
    [OK] Waiting [Total: 2, Pending: 2, Running: 0]
    [OK] Running [Total: 2, Pending: 0, Running: 2]
    [OK] Service is running
  3. Untuk memodifikasi konfigurasi layanan, Anda dapat menjalankan perintah modify di alat klien.

    Berikut ini adalah contoh perintah untuk memodifikasi layanan sebelumnya. Untuk informasi lebih lanjut tentang perintah modify, lihat Modifikasi konfigurasi layanan.

    eascmd modify registry_test -s image.json

    Dalam perintah, registry_test adalah nama layanan, dan image.json adalah file deskripsi layanan.

Validasi layanan

Ketika status layanan berubah menjadi Berjalan, layanan telah berhasil dimulai. Gambar flask-app yang dijelaskan di atas menyediakan layanan web dengan jalur akses /hello/model. Anda dapat menjalankan perintah berikut untuk menguji panggilan layanan:

curl <endpoint>/hello/model -H "Authorization: <token>"

Dalam perintah, ganti <endpoint> dan <token> dengan titik akhir layanan dan token aktual. Untuk informasi lebih lanjut, lihat Memperoleh titik akhir dan token.

Untuk informasi lebih lanjut tentang permintaan layanan, lihat Metode pemanggilan layanan.

FAQ

Untuk informasi tentang cara menyelesaikan masalah, seperti kegagalan penarikan gambar, lihat FAQ EAS.

Referensi

  • Penyebaran gambar kustom mendukung fitur pemeriksaan kesehatan. Untuk informasi lebih lanjut, lihat Pemeriksaan Kesehatan.

  • Setelah layanan berhasil diterapkan, Anda dapat mengaktifkan fitur penskalaan otomatis untuk menangani fluktuasi signifikan dalam beban kerja bisnis Anda. Untuk informasi lebih lanjut, lihat Penskalaan Otomatis.