Обещаю, я буду краток.

Есть 3 типа развертывания:

  1. Локально - вы должны установить и настроить свое приложение, данные, среду выполнения, промежуточное ПО, ОС, серверы самостоятельно.
  2. IAAS - (Инфраструктура как услуга) Здесь вы должны предоставить только свое приложение, данные, среду выполнения и ОС. Другие детали, такие как серверы, сеть и т. Д., Обрабатываются самими платформами. Пример: AWS, Azure, GCP и т. Д.
  3. PAAS - (Платформа как услуга) Здесь вы предоставляете только свое приложение и данные. В остальном все важные вещи, подобные упомянутым в вышеупомянутых услугах, обрабатываются самой платформой.

Сегодня мы сосредоточимся только на PAAS с использованием python для бэкэнда и HTML с jinja2 для внешнего интерфейса на основе веб-фреймворка Flask.

Шаг 1

Сначала сделайте свою модель машинного обучения.

Сначала создайте один файл models.py в каталоге вашего проекта.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pickle 

dataset = pd.read_csv('dummy_data.csv') 
dataset['quality'].fillna(0, inplace=True) dataset['rating'].fillna(dataset['rating'].mean(),inplace=True) 
X = dataset.iloc[:, :3] #Converting words to integer values
y = dataset.iloc[:, -1] 
data. from sklearn.linear_model import LinearRegression
regressor = LinearRegression() #Fitting model with training data
regressor.fit(X, y)

Таким образом мы создаем простую модель для прогнозирования цены продукта в зависимости от качества и рейтинга продукта.

Шаг 2

Мы не хотим раскрывать определение нашей модели внешнему миру через наше Приложение. Итак, мы делаем файл рассола нашей модели. Файл Pickle в основном преобразует нашу модель в байты. вы увидите, что в вашем рабочем каталоге будет создан один файл model.pkl.

pickle.dump(regressor, open('model.pkl','wb'))

Шаг 3

Теперь мы создадим файл app.py, который будет точкой входа в наше приложение.

import numpy as np
from flask import Flask, request, jsonify, render_template
import pickle 
app = Flask(__name__)
model = pickle.load(open('model.pkl', 'rb')) 
@app.route('/')
def home():    
   return render_template('page.html') 
@app.route('/predict',methods=['POST'])
def predict():    
   '''    
    For rendering results on HTML GUI    
   '''    
   int_features = [int(x) for x in request.form.values()]
   final_features=[np.array(int_features)]
   prediction = model.predict(final_features)     
   output = round(prediction[0], 2)
   return render_template('page.html', prediction_text='Price of the
                          Product should be $ {}'.format(output))
if __name__ == "__main__":    
   app.run(debug=True)

Шаг 4

Теперь мы создадим файл шаблона с именем page.html и поместим его в папку шаблон в папке вашего проекта.

<!DOCTYPE html>
<html >
<!--From https://codepen.io/frytyler/pen/EGdtg-->
<head>  
<meta charset="UTF-8">  
<title>ML API</title>  
<link href='https://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Arimo' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Hind:300' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css'>  </head> 
<body> 
<div class="login"> 
<h1>Predict Salary Analysis</h1>      
<!-- Main Input For Receiving Query to our ML -->    
<form action="{{ url_for('predict')}}"method="post">
<input type="text" name="rating" placeholder="Rating" required="required" />
<input type="text" name="quality" placeholder="Quality" required="required" />
<input type="text" name="demand_value" placeholder="Demand" required="required" />
<button type="submit" class="btn btn-primary btn-block btn-large">Price Predictor</button>
</form>
<br>   
<br>   
{{ prediction_text }}  
</div>  
</body>
</html>

Шаг 5

Файлы конфигурации

  1. Сначала нам нужно предоставить файлы requirements.txt для операторов импорта, которые мы использовали в наших файлах python.

пример формата файла

Flask==1.1.1 
gunicorn==19.9.0
itsdangerous==1.1.0 
Jinja2==2.10.1 
MarkupSafe==1.1.1 
Werkzeug==0.15.5 
numpy>=1.9.2 
scipy>=0.15.1 
scikit-learn>=0.18 
matplotlib>=1.4.3 
pandas>=0.19

2. Нам нужно добавить один Procfile в наш проект.

web: gunicorn app:app

первое приложение - это имя файла для точки входа в приложение.

второе приложение - это имя приложения, которое мы назвали во время создания приложения Flask.

пример: app = Falsk (__ name__)

Загрузите все файлы с необходимой структурой в репозиторий github.

ШАГ 6

Теперь создайте учетную запись в Heroku. После входа в систему вы попадете на похожий экран, как показано ниже.

Нажмите Создать.

Введите имя вашего приложения в нижнем регистре.

Остальные разделы оставил как есть.

Вы попадете на этот экран.

Подключите свой репозиторий Github к проекту.

Теперь есть 2 варианта Автоматическое развертывание и Развертывание вручную.

Если вы выберете Автоматическое развертывание, каждый раз, когда вы объединяете свой код в упомянутую ветку, Heroku будет развертывать ваше приложение один раз, и в течение нескольких минут (5–10 минут) изменения будут отражены на вашем реальном сервере.

Если вы выберете Развертывание вручную, то после объединения кода в упомянутой ветке вам необходимо вручную развернуть приложение в облаке, нажав кнопку Развернуть ветку.

Я рекомендую в первый раз выбрать развертывание вручную и проверить журналы.

После сборки пакета вашего приложения, когда будет выполнено развертывание, будет сгенерирована ссылка для вашего приложения для запуска на живом сервере.

Это оно. Нажмите URL-адрес, созданный из журналов развертывания.

HOLA !!!!!!!!!!!!!!!!!

Ваше приложение запущено и работает. Поместите значения по вашему выбору, и ваша модель будет готова предсказать значение.

** Примечание. Вам не нужно размещать код models.py в Github. Каждый раз, когда вы меняете модель, генерируйте файл models.pkl и загружайте обновленный в github.