AIGES — это центральный компонент платформы Athena Serving Framework, созданный специально для разработчиков AI моделей и движков. Интегрировав AIGES, вы сможете быстро развернуть свои AI модели и движки и использовать сопутствующие системы управления сетью, распределением, данными и другими. Athena Serving Framework стремится ускорить процесс облачной службы AI моделей и движков, обеспечивая стабильность через архитектуру cloud-native. Вам не придётся беспокоиться о низкоуровневой инфраструктуре и управлении службами, чтобы эффективно, безопасно развертывать, обновлять, масштабировать, управлять и мониторить ваши модели и движки.## Новое!!!
👉👉👉Быстрый обзор различий между режимами CGo и gRPC
См.: 👉👉👉ase-proto
Для Python используйте версию 3.9+ или скачайте наш образ Docker
Следующий процесс можно выполнять в контейнере (без использования GPU):
docker run -itd --name mnist2 -p gst:1888 public.ecr.aws/iflytek-open/aiges-gpu:10.1-1.17-3.9.13-ubuntu1804-v3.0-alpha11 bash
Вы также можете подготовить свое окружение и запустить AIGES с помощью загруженного двоичного файла.### 0. Установка SDK
pip3 install aiges==0.5.0 -i https://pypi.python.org/simple
wget https://github.com/iflytek/aiges/releases/download/v3.0-alpha11/aiges_3.0-alpha11_linux_amd64.tar.gz
Создайте проект с названием mnist
через команду aiges
.
python3 -m aiges create -n mnist
root# tree mnist/
mnist/
├── Dockerfile
├── README.md
├── requirements.txt
└── wrapper
├── test_data
│ └── test.png
└── wrapper.py
tar zxvf aiges_3.0-alpha11_linux_amd64.tar.gz -C mnist
Первый запуск:
root@505a3a0e670c:/home/aiges# ./AIservice
Запуск загрузчика:
- В локальном режиме:
1: ./AIservice -init , инициализирует конфигурационный файл aiges.toml (если он существует, то замена не происходит)
2: ./AIservice -m=0 , используется только для локального режима
3: ./AIservice -mnist , загружает mnistdemo
- В режиме центра конфигураций (в рамках открытого доступа будет удалено)
- Дополнительные параметры: ./AIservice -h
Структура проекта после этого шага:
➜ mnist git:(master) ✗ tree -L 3 .
.
├── AIservice
├── Dockerfile
├── include
│ ├── type.h
│ └── wrapper.h
├── library
│ ├── libahsc.so
│ ├── libIce.so.34
│ └── libIceUtil.so.34
├── README.md
├── requirements.txt
└── wrapper
├── test_data
│ └── test.png
└── wrapper.py
```### 4. Конфигурация режима PythonGrpc и инициализация aiges
Выполните последовательно следующие команды:
* ```export AIGES_PLUGIN_MODE=python```
* ```./AIservice -init``` [этот шаг создает конфигурационный файл `aiges.toml` в текущей директории]
* ```./AIservice -m 0 -c aiges.toml -s svcName```
При запуске движка результат будет таким:[обратите внимание, что имя сервиса `svcName` должно совпадать с секцией в конфигурационном файле `aiges`, по умолчанию это `svcName`]```bash
root@012d31456c50:/home/aiges/mnist# . /AIservice -m 0 -c aiges.toml -s svcName
2022/11/15 18:22:01 widgetpy.go:26: Начало работы в режиме Python:
конфигурация config.toml версия:
2022/11/15 18:22:01 utils.NewLocalLog успешна. -> УРОВЕНЬ: отладка, ФАЙЛ:./log/aiges.log, МАКС_РАЗМЕР:3, МАКС_ЗАПИСЕЙ:3, МАКС_ВОЗРАСТ:3
2022/11/15 18:22:01 host2ip->ip:0.0.0.0,port:5090
2022/11/15 18:22:01 finderSwitch:0,finderSwitchErr:<nil>
2022/11/15 18:22:01 готов к работе с hermes.
2022/11/15 18:22:02 NewSessionManager успешна.
2022/11/15 18:22:02 NewSidGenerator успешна.
2022/11/15 18:22:02 fn:AbleTrace, able:false
2022/11/15 18:22:02 готов к работе с finder.
2022/11/15 18:22:02 готов к работе с метриками.
2022/11/15 18:22:02 метрики отключены
2022/11/15 18:22:02 готов к работе с ограничителем скорости.
2022/11/15 18:22:02 готов к работе с менеджером CPU.
2022/11/15 18:22:02 готов к работе с проверкой BVT.
2022/11/15 18:22:02 пространство имён не установлено, используется значение по умолчанию
2022/11/15 18:22:02 BVT отключена
заголовки прошли список: []
2022-11-15T18:22:02.476+0800 [ПРЕДУПРЕЖДЕНИЕ] python-plugin: плагин настроен с пустым SecureConfig
2022-11-15T18:22:02.477+0800 [ОТЛАДКА] python-plugin: запуск плагина: путь=/bin/sh аргументы=[sh, -c, "/usr/bin/env python -m aiges.serve"]
2022-11-15T18:22:02.478+0800 [ОТЛАДКА] python-plugin: плагин запущен: путь=/bin/sh pid=126
2022-11-15T18:22:02.478+0800 [ОТЛАДКА] python-plugin: ожидание адреса RPC: путь=/bin/sh
2022-11-15T18:22:02.653+0800 [ОТЛАДКА] python-plugin: использование плагина: версия=1
2022-11-15T18:22:02.655+0800 [ОТЛАДКА] python-plugin.stdio: получено EOF, завершение цикла приема: ошибка="rpc error: code = Unimplemented desc = Method not found!"
2022-11-15T18:22:02.656+0800 [ОТЛАДКА] python-plugin.sh: root:wrapperInit:107 - INFO: Импорт модуля из wrapper.py: wrapper
2022-11-15T18:22:02.657+0800 [ОТЛАДКА]
Все изменения были сделаны согласно правилам перевода, указанным выше.657+0800 [ОТЛАДКА] python-plugin.sh: root:wrapperInit:119 - ОШИБКА: модуль 'wrapper' не имеет атрибута 'Wrapper'
2022/11/15 18:22:02 grpc.go:20: Вызов WrapperInit провалился... ret: 30001
Это потому что наш wrapper ещё не готов
# Это потому что наш wrapper ещё не готов
```#### 5. Напишите логическую обёртку для проекта MNIST
Скачайте демонстрационный проект mnist:
* ```./AIservice -mnist```
По умолчанию будет скачана и распакована версия проекта `https://github.com/iflytek/aiges_demo.git`, которая будет распакована в текущую директорию `aiges_demo`.
Если данная команда долго не отвечает, это может быть связано с проблемами блокировки со стороны GFW. В таком случае вы можете скачать её вручную по адресу ```https://github.com/iflytek/aiges_demo/archive/refs/tags/v1.0.0.zip```
Распакуйте архив в директорию aiges_demo. Обратите внимание, что при ручной распаковке возможно наличие дополнительной папки aiges_demo_1.0.0.
Удалите директорию wrapper, созданную по умолчанию в текущей папке mnist, и замените её содержимым из демонстрационного проекта.
* ```rm -r wrapper```
* ```cp -ra aiges_demo/mnist/wrapper/ ./```
* ```cp -ra aiges_demo/mnist/requirements.txt mnist/```
* ```pip install -r requirements.txt```
* ```export AIGES_PLUGIN_MODE=python```
* ```export PYTHONPATH=/home/aiges/mnist/wrapper```
* ```Запустите движок снова ./AIservice -m 0 -c aiges.toml -s svcName```
Стандартный вывод:```bash
2022/11/15 21:26:29 widgetpy.go:26: Начало использования Python :
config.toml версия:
2022/11/15 21:26:29 utils.NewLocalLog успех. -> УРОВЕНЬ_ЛОГИРОВАНИЯ:debug, ИМЯ_ФАЙЛА_LOG:./log/aiges.log, MAXSIZE:3, MAXBACKUPS:3, MAXAGE:3
2022/11/15 21:26:29 host2ip->ip:0.0.0.0,port:5090
2022/11/15 21:26:29 finderSwitch:0,finderSwitchErr:<nil>
2022/11/15 21:26:29 готовы к работе с hermes.
2022/11/15 21:26:30 NewSessionManager успех.
2022/11/15 21:26:30 NewSidGenerator успех.
2022/11/15 21:26:30 fn:AbleTrace, able:false
2022/11/15 21:26:30 готовы к работе с finder.
2022/11/15 21:26:30 готовы к работе с метриками.
2022/11/15 21:26:30 метрики отключены
2022/11/15 21:26:30 готовы к работе с rateLimiter.
2022/11/15 21:26:30 готовы к работе с vCpuManager.
2022/11/15 21:26:30 готовы к работе с bvtVerifier.
2022/11/15 21:26:30 пространство имён не задано, используется значение по умолчанию
2022/11/15 21:26:30 bvt отключена
header pass list: []
[GIN-debug] [WARNING] Создание экземпляра движка Gin с уже присоединёнными middleware Logger и Recovery.
```[GIN-debug] [ВНИМАНИЕ] Запуск в режиме "debug". В производственной среде используйте режим "release".
- использование окружения: export GIN_MODE=release
- использование кода: gin.SetMode(gin.ReleaseMode)
```[GIN-debug] Получение GET /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Отправка POST /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Изменение PUT /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Обновление PATCH /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Запрос HEAD /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
2022-11-15T21:26:30.116+0800 [ПРЕДУПРЕЖДЕНИЕ] python-plugin: плагин настроен с пустым SecureConfig
2022-11-15T21:26:30.116+0800 [ОБСЛУЖИВАНИЕ] python-plugin: запуск плагина: path=/bin/sh args=[sh, -c, "/usr/bin/env python -m aiges.serve"]
[GIN-debug] Опция OPTIONS /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Удаление DELETE /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Подключение CONNECT /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Отслеживание TRACE /v1/svcName --> github.com/xfyun/aiges/httproto.(*Server).ginHandler.func1 (3 обработчика)
[GIN-debug] Получение GET /test.json --> github.com/xfyun/aiges/httproto.getDemo (3 обработчика)
2022-11-15T21:26:30.116+0800 [ОБСЛУЖИВАНИЕ] python-plugin: плагин запущен: path=/bin/sh pid=1081
2022-11-15T21:26:30.116+0800 [ОБСЛУЖИВАНИЕ] python-plugin: ожидание адреса RPC: path=/bin/sh
```[GIN-debug] Получение GET /swagger/*any --> github.com/swaggo/gin-swagger.CustomWrapHandler.func1 (3 обработчика)
2022-11-15T21:26:30.242+0800 [ОБСЛУЖИВАНИЕ] python-plugin: использование плагина: версия=1
2022-11-15T21:26:30.244+0800 [ОБСЛУЖИВАНИЕ] python-plugin.stdio: получено EOF, прекращение цикла приема данных: err="ошибка rpc: метод не реализован!"
2022-11-15T21:26:30.245+0800 [ОБСЛУЖИВАНИЕ] python-plugin.sh: root:wrapperInit:107 - ИНФОРМАЦИЯ: импортирование модуля из wrapper.py: wrapper
2022-11-15T21:26:31.642+0800 [ОБСЛУЖИВАНИЕ] python-plugin.sh: root:_check_path:151 - ВНИМАНИЕ: <класс 'FileNotFoundError'>
2022-11-15T21:26:31.643+0800 [ОБСЛУЖИВАНИЕ] python-plugin.sh: root:wrapperInit:112 - ИНФОРМАЦИЯ: Новый пользовательский обертыватель создан успешно. Запуск вызова функций инициализации пользователя...
2022-11-15T21:26:31.643+0800 [ОБСЛУЖИВАНИЕ] python-plugin.sh: root:wrapperInit:85 - ИНФОРМАЦИЯ: Инициализация...
2022-11-15T21:26:31.666+0800 [DEBUG] python-plugin.sh: root:wrapperSchema:141 - ИНФОРМАЦИЯ: Вхожу в wrapperSchema...
2022-11-15T21:26:31.672+0800 [DEBUG] python-plugin.sh: root:test_value:233 - ВНИМАНИЕ: test_data/0.png не существует. Проверьте это.
2022-11-15T21:26:31.672+0800 [DEBUG] python-plugin.sh: root:schema:434 - ИНФОРМАЦИЯ: Генерирую схему...
aiService.Init: инициализация завершена успешно!
2022/11/15 21:26:31 готов к выполнению x.run
2022/11/15 21:26:31 готов к инициализации interceptora
2022/11/15 21:26:31 успешная инициализация interceptora
2022/11/15 21:26:31 готов к вызову grpc.NewServer(opts...), maxRecv:4194304, maxSend:4194304
2022/11/15 21:26:31 готов к вызову utils.RegisterXsfCallServer(x.grpcserver, srv)
2022/11/15 21:26:31 готов к вызову reflection.Register(x.grpcserver)
2022/11/15 21:26:31 готов к выполнению userCallback
2022/11/15 21:26:31 работа с UserHighPriority
2022/11/15 21:26:31 работа с UserNormalPriority2022/11/15 21:26:31 работа с UserLowPriority
2022/11/15 21:26:31 готов к вызову x.grpcserver.Serve
2022/11/15 21:26:31 проверка запущенного gRPC сервиса ([::]:5090)
2022/11/15 21:26:31 gRPC сервер ([::]:5090) успешно запущен
2022/11/15 21:26:31 bvtVerifierInst отключен, игнорирую...
2022/11/15 21:26:31 готов к вызову finderadapter.Register([::]:5090)
2022/11/15 21:26:31 готов к выполнению fcDelayInst
2022/11/15 21:26:31 готов к вызову fc delay task
2022/11/15 21:26:31 блокировка для выполнения x.grpcserver.Serve```По умолчанию слушаемый HTTP порт равен 1888, что можно увидеть в файле aiges.toml
### 5. Отладка с помощью Postman
* API адрес: http://ваш_IP:1888/v1/имя_сервиса [конкретный адрес можно проверить через http://ваш_IP:1888 swagger]
```* POST запрос: часть body```json
{
"header": {
"appid": "123456",
"uid": "39769795890",
"did": "SR082321940000200",
"imei": "8664020318693660",
"imsi": "4600264952729100",
"mac": "6c:92:bf:65:c6:14",
"net_type": "wi-fi",
"net_isp": "CMCC",
"status": 3,
"res_id": ""
},
"parameter": {
"svcName": {
"result": {
"encoding": "utf8",
"compress": "raw",
"format": "plain",
"data_type": "текст"
}
}
},
"payload": {
"img": {
"encoding": "jpg",
"status": 3
}
}
}
``````"text":"iVBORw0KGgoAAAANSUhEUgAAAOEAAADgCAYAAAD17wHfAAANa0lEQVR4Xu3dr29USxyG8VpUExQOhcGRIAkGU1OFh/+gCZI/AEdSWdMEj0A2QW+CQyFRyAYFloS9eTf5hsm7c2a295w9c3484hPgnrvdbbvPzrYzc87J5eXl9uLiYvvmzRsAI3r9+vV2s9lsTxTgyckJgAZubm62JyrSDwAYx+fPn4kQaGkX4ePHj/cOABgHIyHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0BgRAo0RIdAYEQKNESHQGBECjREh0Bg}
}
Примечание: В данном случае отсутствует текст для перевода, поэтому остаётся только синтаксическая конструкция на языке программирования. Возврат ответа
{
"header": {
"code": 0,
"sid": "0d9115af-0c6b-4526-a539-05b3c8aa9cfa",
"status": 3
},
"payload": {
"result": {
"compress": "raw",
"encoding": "utf8",
"format": "plain",
"seq": "0",
"status": "3",
"text": "{\"result\": 7, \"msg\": \"Распознанный результат является числом: 7\"}"
}
}
}
```### 6. Отладка MNIST с помощью Swagger
В данный момент встроена версия Swagger 2.0 для OpenAPI 3.0.
После запуска доступна по адресу:
```http://<ваш_адрес_IP>:1888```
Как показано на следующих изображениях:

Пробуйте! Вы можете скопировать часть запроса из Postman для выполнения запроса.

Вы можете видеть, что результат распознавания возвращается.
* Таким образом, отдельный загрузчик AIGES завершил базовое выполнение.
Учитывая, что alpha — это обрезанный вариант, который недавно был объединён с HTTP-интерфейсами, многие функции ещё не завершены, но он уже может обеспечивать базовый уровень управления.
Знаемые проблемы:
* Отсутствие обработки выхода процесса Python, требуется автоматическое завершение вместе с родительским процессом.
* Некоторые ошибки во время выполнения временно не были учтены.
## Контакты
* Акцент делаем на:
[](https://github.com/iflytek)
* Контакт:

**Обратите внимание: отметьте источник - открытый проект**
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )