Inglés
pip install SwanAPI -i https://pypi.org/simple
1️⃣ Escriba un archivo predict.py
Aquí usamos el ejemplo de conversión de una imagen a blanco y negro:
Si ha escrito Gradio antes, debe estar familiarizado con este método de escritura, que es muy similar al método para definir
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⃣️ Ejecute python predict.py
para ejecutar un servicio de inferencia API en 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⃣️ Llamar API
from SwanAPI import SwanRequests , Files
response = SwanRequests (
url = "http://127.0.0.1:8000/predictions/" ,
inputs = { 'im' : Files ( "/path/to/image" )}) #填写图像文件的本地路径
print ( response )
Si usa
curl
para enviar una solicitud:
curl --location ' http://127.0.0.1:8000/predictions/ '
--form ' im=@"path/to/image" '
Cuando las salidas se configuran en 'imagen', el flujo de bytes codificado en base64 se devuelve y se convierte a np.ndarray en 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 )
Una vez completado el desarrollo predict.py
:
1⃣️ Crea un archivo swan.yaml
, que guiará la construcción de tu imagen.
build :
gpu : false
system_packages :
- " libgl1-mesa-glx "
- " libglib2.0-0 "
python_version : " 3.10 "
python_packages :
- " numpy "
- " opencv-python "
predict :
port : 8000
construir:
gpu
: si se debe habilitar el modo gpu. true seleccionará automáticamente la mejor compatibilidad con nvidia según la configuración de su hardware, python_version y el marco de aprendizaje profundo.
system_packages
: bibliotecas básicas del sistema Linux, apt-get install
.
python_version
: la versión básica de Python en la que se ejecuta la imagen es compatible con 3.8, 3.9 y 3.10.
python_packages
: bibliotecas de Python de las que depende su modelo
- "torch==2.0.0 --index-url https://download.pytorch.org/whl/cpu"
python_source
: especifique la fuente de descarga de la biblioteca de Python, opcional cn
y us
, el valor predeterminado es us
. Seleccione la fuente de descarga cn
usará清华源
predecir:
port
: El número de puerto cuando se inicia el servicio de inferencia2⃣️Construye la imagen
swan build -t my-dl-image
parámetros opcionales de construcción de cisne:
-t
: requerido. Especifique el nombre de la creación de la imagen, como my-dl-image
.-r
: opcional. Si agrega este parámetro, el contenedor se ejecutará después de crear la imagen y se realizará el mapeo de puertos: swan build -r -t my-dl-image
-s
: opcional. Si se agrega este parámetro, el Dokefile se guardará en el directorio después de crear la imagen.3⃣️ Ejecute el contenedor
docker run my-dl-image
Si se ejecuta en gpu
docker run --gpus all my-dl-image