英語
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/
$ 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 でエンコードされたバイト ストリームが返され、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
建てる:
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
ダウンロード ソースを選択すると清华源
が使用されます
予測する:
port
: 推論サービス起動時のポート番号2⃣️イメージを構築する
swan build -t my-dl-image
swan ビルドのオプションのパラメーター:
-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