Englisch
pip install SwanAPI -i https://pypi.org/simple
1️⃣ Schreiben Sie eine predict.py
Datei. Hier verwenden wir das Beispiel der Konvertierung eines Bildes in Schwarzweiß:
Wenn Sie bereits Gradio geschrieben haben, müssen Sie mit dieser Schreibmethode vertraut sein, die der Methode zum Definieren von
gr.Interface
sehr ähnlich ist.
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⃣️ Führen Sie python predict.py
aus, um einen API-Inferenzdienst auf 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 aufrufen
from SwanAPI import SwanRequests , Files
response = SwanRequests (
url = "http://127.0.0.1:8000/predictions/" ,
inputs = { 'im' : Files ( "/path/to/image" )}) #填写图像文件的本地路径
print ( response )
Wenn Sie
curl
zum Senden einer Anfrage verwenden:
curl --location ' http://127.0.0.1:8000/predictions/ '
--form ' im=@"path/to/image" '
Wenn „outputs“ auf „image“ gesetzt ist, wird der Base64-codierte Bytestream zurückgegeben und in Python in „np.ndarray“ konvertiert:
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 )
Nachdem die Entwicklung predict.py
abgeschlossen ist:
1⃣️ Erstellen Sie eine Datei swan.yaml
, die Sie bei der Erstellung Ihres Bildes unterstützt
build :
gpu : false
system_packages :
- " libgl1-mesa-glx "
- " libglib2.0-0 "
python_version : " 3.10 "
python_packages :
- " numpy "
- " opencv-python "
predict :
port : 8000
bauen:
gpu
: Ob der GPU-Modus aktiviert werden soll. true wählt automatisch die beste NVIDIA-Unterstützung basierend auf Ihrer Hardwarekonfiguration, Python-Version und Ihrem Deep-Learning-Framework aus.
system_packages
: Basisbibliotheken des Linux-Systems, sie apt-get install
.
python_version
: Die grundlegende Python-Version, auf der das Image ausgeführt wird, unterstützt 3.8, 3.9 und 3.10.
python_packages
: Python-Bibliotheken, von denen Ihr Modell abhängt
- "torch==2.0.0 --index-url https://download.pytorch.org/whl/cpu"
python_source
: Geben Sie die Download-Quelle der Python-Bibliothek an, optional cn
und us
, der Standardwert ist us
. Wenn Sie cn
Download-Quelle auswählen, wird清华源
verwendet
vorhersagen:
port
: Die Portnummer, wenn der Inferenzdienst gestartet wird2⃣️Erstellen Sie das Bild
swan build -t my-dl-image
Optionale Parameter für den Swan-Build:
-t
: erforderlich. Geben Sie den Namen des Image-Builds an, z. B. my-dl-image
.-r
: optional. Wenn Sie diesen Parameter hinzufügen, wird der Container ausgeführt, nachdem das Image erstellt wurde, und die Portzuordnung wird durchgeführt: swan build -r -t my-dl-image
-s
: optional. Wenn dieser Parameter hinzugefügt wird, wird die Dokefile nach der Erstellung des Images im Verzeichnis gespeichert.3⃣️ Führen Sie den Container aus
docker run my-dl-image
Wenn es auf GPU läuft
docker run --gpus all my-dl-image