ภาษาอังกฤษ
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" '
เมื่อตั้งค่าเอาต์พุตเป็น 'image' สตรีมไบต์ที่เข้ารหัส base64 จะถูกส่งกลับและแปลงเป็น np.ndarray ใน 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 )
หลังจากการพัฒนา 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
: ไลบรารี Python ที่โมเดลของคุณใช้
- "torch==2.0.0 --index-url https://download.pytorch.org/whl/cpu"
python_source
: ระบุแหล่งดาวน์โหลดของไลบรารีหลาม ซึ่งเป็นทางเลือก 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