SwanAPI
v0.2.5
English
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
,即可在localhost://127.0.0.1:8000/
上執行一個API推理服務:
$ 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" '
outputs設定為'image'時,返回base64編碼後的位元組流,在python中轉換為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
build:
gpu
: 是否開啟gpu模式。 true將根據你的硬體配置、python_version以及深度學習框架自動選擇最佳的nvidia支援。
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
:指定python函式庫的下載來源,可選cn
和us
,預設us
。選擇cn
的下載來源將使用清华源
predict:
port
:推理服務開啟時的連接埠號2⃣️ 建構鏡像
swan build -t my-dl-image
swan build可選參數:
-t
: 必選。指定鏡像建置的名稱,如my-dl-image
。-r
: 可選。如果加上該參數,建置好鏡像後將運行容器,並做好了連接埠映射: swan build -r -t my-dl-image
-s
: 可選。如果加上該參數,建置好鏡像後將在目錄下儲存Dockefile。3⃣️ 運行容器
docker run my-dl-image
如果是gpu運行
docker run --gpus all my-dl-image