Bahasa inggris
pip install SwanAPI -i https://pypi.org/simple
1️⃣ Tulis file predict.py
Di sini kita menggunakan contoh mengubah gambar menjadi hitam putih:
Jika Anda pernah menulis Gradio sebelumnya, Anda pasti sudah familiar dengan cara penulisan ini, yang sangat mirip dengan cara mendefinisikan
gr.Interface
.
from SwanAPI import SwanInference
import cv2
# 这是一个简单的图像转黑白的任务
def predict ( im ):
result_image = cv2 . cvtColor ( im , cv2 . COLOR_BGR2GRAY )
return "success" , result_image
if __name__ == "__main__" :
api = SwanInference ()
api . inference ( predict ,
inputs = [ 'image' ],
outputs = [ 'text' , 'image' ],
description = "a simple test" )
api . launch ()
2⃣️ Jalankan python predict.py
untuk menjalankan layanan inferensi API di localhost://127.0.0.1:8000/
$ python predict.py
* Serving Flask app " SwanAPI Server" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
3⃣️ Panggil API
from SwanAPI import SwanRequests , Files
response = SwanRequests (
url = "http://127.0.0.1:8000/predictions/" ,
inputs = { 'im' : Files ( "/path/to/image" )}) #填写图像文件的本地路径
print ( response )
Jika Anda menggunakan
curl
untuk mengirim permintaan:
curl --location ' http://127.0.0.1:8000/predictions/ '
--form ' im=@"path/to/image" '
Ketika output diatur ke 'gambar', aliran byte yang dikodekan base64 dikembalikan dan dikonversi ke np.ndarray dengan python:
from SwanAPI import SwanRequests , Files
import base64
import numpy as np
import cv2
response = SwanRequests (
url = "http://127.0.0.1:8000/predictions/" ,
inputs = { 'im' : Files ( "../Feedback/assets/FeedBack.png" )}) #填写图像文件的本地路径
image_base64 = response [ str ( 1 )][ 'content' ]
nparr = np . frombuffer ( base64 . b64decode ( image_base64 ), np . uint8 )
img_restore = cv2 . imdecode ( nparr , cv2 . IMREAD_COLOR )
cv2 . imwrite ( "output.jpg" , img_restore )
Setelah pengembangan predict.py
selesai:
1⃣️ Buat file swan.yaml
, yang akan memandu konstruksi gambar Anda
build :
gpu : false
system_packages :
- " libgl1-mesa-glx "
- " libglib2.0-0 "
python_version : " 3.10 "
python_packages :
- " numpy "
- " opencv-python "
predict :
port : 8000
membangun:
gpu
: Apakah akan mengaktifkan mode GPU. true akan secara otomatis memilih dukungan nvidia terbaik berdasarkan konfigurasi perangkat keras Anda, python_version, dan kerangka pembelajaran mendalam.
system_packages
: Perpustakaan dasar sistem Linux, mereka akan apt-get install
.
python_version
: Versi dasar Python yang menjalankan gambar, mendukung 3.8, 3.9, dan 3.10.
python_packages
: Pustaka Python tempat model Anda bergantung
- "torch==2.0.0 --index-url https://download.pytorch.org/whl/cpu"
python_source
: Tentukan sumber unduhan perpustakaan python, opsional cn
dan us
, defaultnya adalah us
. Pilih sumber unduhan cn
akan menggunakan清华源
meramalkan:
port
: Nomor port saat layanan inferensi dimulai2⃣️Bangun citra
swan build -t my-dl-image
angsa membangun parameter opsional:
-t
: diperlukan. Tentukan nama build gambar, misalnya my-dl-image
.-r
: opsional. Jika Anda menambahkan parameter ini, container akan dijalankan setelah image dibuat, dan pemetaan port akan dilakukan: swan build -r -t my-dl-image
-s
: opsional. Jika parameter ini ditambahkan, Dokefile akan disimpan di direktori setelah image dibuat.3⃣️ Jalankan wadahnya
docker run my-dl-image
Jika berjalan di GPU
docker run --gpus all my-dl-image