В мгновение ока наша техническая колонка в блоге также была выпущена в выпуск 23. Сяо Мо представил множество различных алгоритмов машинного обучения и реализаций в различных областях. Раньше наши сотрудники также проводили небольшое исследование со всеми в клубе Mo-AI ~ Я надеюсь создать больше тем, которые все захотят увидеть!
Первый это вы.Большое спасибо за ваше мнение.Сегодня мы посмотрим как развернуть обученную модель на платформе Мо,которую может вызывать непосредственно каждый.
1. Создайте новый проект
существуетверстакСоздайте новый проект и войдите на страницу разработки.Если вы хотите развернуть, вы должны выбрать Newпроект.
В текущем созданном проекте щелкните слеваFiles
, который отображает файлы и папки в текущем рабочем каталоге.
-
results
Папка, используемая для хранения моделей и контрольных точек, в которойtb_results
для при использованииTensorBoard
Сохраняет данные визуализации во время работы. -
_OVERVIEW.md
Файл уценки для отображения описаний проектов. -
_README.ipynb
Для вводного документа. - Открытым
coding_here.ipynb
или создать новыйnotebook
(обратитесь к справочной документацииосновная страницасередина开发环境
часть). Давайте начнем наш код.
2. Напишите код обучения и прогнозирования модели.
- Импортировать необходимые модули Python
import os
import sys
from sklearn.externals import joblib
from sklearn.cluster import KMeans
- написать класс модели
Общий алгоритм машинного обучения включает в себя две части: обучение и прогнозирование.После процесса обучения создается файл модели, и файл обученной модели вызывается для прогнозирования во время прогнозирования. Итак, мы делим программу на три метода: обучение, прогноз и load_model, Основная программа алгоритма кластеризации kmeans выглядит следующим образом.
# 定义一个kmeans聚类模型,注意设置传参接口
class howtodeploymodulemodel(object):
# 模型初始化函数,本例中参数皆为传参
def __init__(self, conf={}):
'''
:param conf:
'''
pass
# 模型训练函数
def train(self, conf={}):
'''
:param conf:
:return:
'''
# 获取传入参数 n_clusters聚类数 random_state随机状态
n_clusters = conf['n_clusters'] # value_type: int # description: number of clusters
random_state = conf['random_state'] # value_type: int # description: RandomState instance or None
if 'file_path' in conf:
file_path = conf['file_path'] # value_type: str # description: file path of data file
data = np.loadtxt(file_path, dtype=np.str, delimiter=",").astype(np.float)
if 'data' in conf:
data = conf['data'] # value_type: np.array # description: data for train
# 定义模型
kmeans = KMeans(n_clusters=n_clusters, random_state=random_state).fit(data)
# 保持模型
if 'save_path' in conf:
save_path = conf['save_path'] # value_type: str # description: save path of trained model
s = joblib.dump(kmeans, save_path)
else:
s = joblib.dump(kmeans, self.checkpoint_dir+'/howtodeploymodulemodel.pkl')
return '训练完成'
# 模型预测函数
def predict(self, conf={}):
'''
:param conf:
:return:
'''
data = conf['data'] # value_type: np.array # description: data for predict
if 'save_path' in conf:
save_path = conf['save_path'] # value_type: str # description: save path of trained model
kmeans = self.load_model(save_path)
else:
kmeans = self.load_model()
return kmeans.predict(data)
# 载入模型
def load_model(self, file="./results"+"/howtodeploymodulemodel.pkl"):
'''
:param conf:
:return:
'''
kmeans = joblib.load(file)
return kmeans
print('kmeans聚类算法类定义完成')
Определение класса алгоритма кластеризации kmeans завершено
- тренировочный процесс
Установите путь сохранения модели обучения, такие параметры, как данные обучения, и сгенерируйте файлы модели алгоритма после обучения.
conf = {"save_path": './results/xx.pkl', "data":[[1,1,1],[2,2,2]],"n_clusters":2,"random_state":0}
print(conf)
module = howtodeploymodulemodel(conf)
result = module.train(conf)
result
«тренировка завершена»
- процесс прогнозирования
conf = {"data":[[1,1,1]], "save_path": './results/xx.pkl'}
print(conf)
module = howtodeploymodulemodel(conf)
result = module.predict(conf)
result
Итак, наша модель прошла испытания!
Конечно, мы здесь просто пример, модель не очень большая, эпоха обучения тоже маленькая, и эффект не очевиден.Если используемый вами модельный модуль основан на глубокой нейронной сети, а структура сети большая , время обучения будет больше. , вы можете создать задание и использовать GPU для ускорения процесса обучения, см. подробностиздесь
3. Разверните приложение
Теперь самый важный шаг! Это шаг развертывания! В этом примере мы надеемся, что другие люди смогут напрямую использовать нашу обученную модель, чтобы делать прогнозы после вызова нашей службы Входные данные — это измеренное значение, а выходные данные — результат кластеризации.
После отладки кода нашей функции в Notebook мы можем щелкнуть значок развертывания слева и следовать инструкциям по развертыванию приложения.
1. Запустите развертывание
В Notebook щелкните значок развертывания в левом столбце, чтобы перейти на страницу развертывания.
2. Вставьте функцию ручки
Функция дескриптора является основной функцией функции приложения, а также функцией интерфейса, которая соответствует входным и выходным параметрам.Это метод обработки, позволяющий другим вызывать вашу службу после развертывания. Если выбран код ячейки, нажмите кнопку «Вставить» на первом шаге, чтобы вставить функцию дескриптора.
Как видите, в конце нашего блокнота добавлена функция дескриптора. Это самый важный шаг развертывания!
handle
Метод — это метод обработки, который другие будут вызывать весь наш проект после завершения развертывания. Например, в этом примере, если вы хотите, чтобы другие использовали нашу обученную модель для прогнозирования непосредственно после вызова нашего сервиса, вы должны вызвать функцию прогнозирования модели в функции дескриптора.module.predict
, возврат должен бытьresult
, Следующее:
def handle(conf):
module = howtodeploymodulemodel(conf)
result = module.predict(conf)
return {'ret1': result}
В текущей версии наши входные и выходные параметры могут выбирать следующие переменные, в этом примере параметры помещаются вconf
в словаре.
value_type : img, video, audio, str, int, float, [int], [str], [float]
Все написалиhandle
функцию, также проверьте ее в ноутбуке!
3. Подготовьте файлы развертывания
После завершения функции дескриптора нажмите кнопку «Пуск» на втором этапе, чтобы начать подготовку файлов, необходимых для развертывания.
Затем мы перейдем к первому этапу подготовки файла, выбору кода. На этом этапе мы должны обратить внимание на то, что обучающий код и тестовый код не нужно проверять.
Второй шаг, шаг предварительного просмотра кода, система преобразует ячейку блокнота, которую мы проверили, в файл Python.Если есть какая-либо ненужная часть, вы можете вернуться к исходному файлу для модификации.Третий шаг определяет параметры, этот шаг определит наш ввод и вывод. В соответствии с нашим примером, мы бы:
- введите параметр
data
, который представляет собой массив целых чисел, представляющий трехмерные координаты входной точки. - вывод
ret1
, который представляет собой целое число, представляющее категорию, к которой принадлежит наш ввод.
Наконец, на этапе предварительного просмотра параметров мы можем просмотреть определения наших параметров, а также предварительный просмотр нашего окончательного интерфейса службы:
4. Разверните проект приложения
После выполнения всех вышеперечисленных шагов нажмите на шаг 3部署
кнопку для развертывания проекта.
Во время развертывания система автоматически сгенерируетhandler.py
документы иapp_spec.yml
Файл конфигурации, вы можете выбрать файл, который хотите опубликовать, или отметьте, чтобы опубликоватьВерсия для разработчиков или официальная версия(После развертывания версии для разработки ее может использовать только владелец, а проект официальной версии является общедоступным и видимым для всех), а затем нажмите «Готово» для развертывания.
Здесь мы сначала выбираем публикациюdev
Версия для разработчиков, настройка для самопроверки.
После небольшого ожидания вернитесь на страницу сведений о приложении, и в правом верхнем углу появится уведомление об успешном развертывании. Поздравляем! Вы завершили развертывание своего первого приложения. Вернувшись на страницу сведений, мы также видим, что теперь есть пользовательский интерфейс!
4. Пройдите тест
Мы можем щелкнуть на панели развертывания测试项目
, введите параметры на веб-странице, запустите, чтобы получить результат вывода, если вы обнаружите проблему, вы можете вернуться к проекту для отладки.
Если тест пройден без проблем, мы можемпередислоцироватьОбщедоступная версия
Таким образом, сделайте проект общедоступным и создайте собственное описание.
Приходите и попробуйте развернуть собственную модель машинного обучения!
адрес проекта:https://momodel.cn/explore/5e9577f194a447b8519ae492?type=app
##о насMo(URL:momodel.cn) — это онлайн-платформа моделирования искусственного интеллекта, поддерживающая Python, которая может помочь вам быстро разрабатывать, обучать и развертывать модели.
недавнийMoМы также проводим вводные курсы и мероприятия по обмену документами, связанные с машинным обучением. Вы можете подписаться на нашу официальную учетную запись для получения последней информации!