Английский
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" '
Когда для выходных данных установлено значение «изображение», поток байтов в кодировке 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
: включить ли режим графического процессора. 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
: укажите источник загрузки библиотеки Python, необязательно 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
Если работает на графическом процессоре
docker run --gpus all my-dl-image