إنجليزي
pip install SwanAPI -i https://pypi.org/simple
1️⃣ اكتب ملف predict.py
هنا نستخدم مثال تحويل صورة إلى أبيض وأسود:
إذا كنت قد كتبت Gradio من قبل، فيجب أن تكون على دراية بطريقة الكتابة هذه، والتي تشبه إلى حد كبير طريقة تعريف
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⃣️ قم بتشغيل python predict.py
لتشغيل خدمة استدلال API على 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⃣️ استدعاء API
from SwanAPI import SwanRequests , Files
response = SwanRequests (
url = "http://127.0.0.1:8000/predictions/" ,
inputs = { 'im' : Files ( "/path/to/image" )}) #填写图像文件的本地路径
print ( response )
إذا كنت تستخدم
curl
لإرسال طلب:
curl --location ' http://127.0.0.1:8000/predictions/ '
--form ' im=@"path/to/image" '
عندما يتم تعيين المخرجات على "صورة"، يتم إرجاع تدفق البايت المشفر بـ base64 وتحويله إلى np.ndarray في بيثون:
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 )
بعد اكتمال تطوير predict.py
:
1⃣️ قم بإنشاء ملف swan.yaml
، والذي سيوجه عملية بناء الصورة الخاصة بك
build :
gpu : false
system_packages :
- " libgl1-mesa-glx "
- " libglib2.0-0 "
python_version : " 3.10 "
python_packages :
- " numpy "
- " opencv-python "
predict :
port : 8000
يبني:
gpu
: ما إذا كان سيتم تمكين وضع GPU. سيحدد true تلقائيًا أفضل دعم لـ nvidia استنادًا إلى تكوين الأجهزة لديك وpython_version وإطار التعلم العميق.
system_packages
: المكتبات الأساسية لنظام Linux، سيتم apt-get install
.
python_version
: إصدار Python الأساسي الذي تعمل عليه الصورة، يدعم الإصدارات 3.8 و3.9 و3.10.
python_packages
: مكتبات بايثون التي يعتمد عليها نموذجك
- "torch==2.0.0 --index-url https://download.pytorch.org/whl/cpu"
python_source
: حدد مصدر التنزيل لمكتبة python، وهو cn
اختياري و us
، والمصدر الافتراضي هو us
. حدد مصدر تنزيل cn
وسيستخدم清华源
يتنبأ:
port
: رقم المنفذ عند بدء تشغيل خدمة الاستدلال2⃣️ بناء الصورة
swan build -t my-dl-image
بجعة بناء المعلمات الاختيارية:
-t
: مطلوب. حدد اسم بنية الصورة، مثل my-dl-image
.-r
: اختياري. إذا قمت بإضافة هذه المعلمة، فسيتم تشغيل الحاوية بعد إنشاء الصورة، وسيتم إجراء تعيين المنفذ: swan build -r -t my-dl-image
-s
: اختياري. إذا تمت إضافة هذه المعلمة، فسيتم حفظ ملف Dokefile في الدليل بعد إنشاء الصورة.3⃣️ قم بتشغيل الحاوية
docker run my-dl-image
إذا كان يعمل على GPU
docker run --gpus all my-dl-image