Привет Связи,

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

Что такое контейнеризация?

Контейнеризация определяется как форма виртуализации операционной системы, посредством которой приложения запускаются в изолированных пользовательских пространствах, называемых контейнерами, и все они используют одну и ту же общую операционную систему (ОС).

Что такое Докер?

Docker — это программная платформа, позволяющая быстро создавать, тестировать и развертывать приложения. Docker упаковывает программное обеспечение в стандартизированные блоки, называемые контейнерами, в которых есть все необходимое для работы программного обеспечения, включая библиотеки, системные инструменты, код и среду выполнения. Используя Docker, вы можете быстро развертывать и масштабировать приложения в любой среде и знать, что ваш код будет работать.

Почему Докер?

Использование Docker позволяет быстрее отправлять код, стандартизировать операции приложений, беспрепятственно перемещать код и экономить деньги за счет улучшения использования ресурсов. С Docker вы получаете единый объект, который может надежно работать где угодно. Простой и понятный синтаксис Docker дает вам полный контроль. Широкое внедрение означает наличие надежной экосистемы инструментов и готовых приложений, готовых к использованию с Docker.

Что такое облако и инстанс AWS?

Amazon Web Services (AWS) – это безопасная платформа облачных сервисов, предлагающая вычислительную мощность, хранилище баз данных, доставку контента и другие функции, помогающие масштабировать и развивать бизнес.

Экземпляр – это виртуальный сервер в облаке AWS. С помощью Amazon EC2 вы можете устанавливать и настраивать операционную систему и приложения, работающие на вашем экземпляре.

Что такое машинное обучение?

Машинное обучение – это приложение искусственного интеллекта (ИИ), которое дает системам возможность учиться и совершенствоваться на основе опыта без явного программирования. Машинное обучение фокусируется на разработке компьютерных программ, которые могут получать доступ к данным и использовать их для самостоятельного обучения.

ML за кулисами использует математику для расчета веса или коэффициента на основе исторических данных. Математическая формула, которую машина использовала для прогнозирования зарплаты в этой статье, выглядит так:

y = b + wx
where,
y = dependent variable (what we are trying to predict)
b = Constant
w = weight/coefficient
x = Feature/independent variable (what we are using to make predictions)

AWS Linux не имеет механизма Docker по умолчанию, чтобы использовать Docker в среде AWS, нам нужно установить Docker вручную. В этом проекте я использовал python в качестве языка программирования для машинного обучения. Python — лучший язык программирования для приложений машинного обучения благодаря различным преимуществам. Приложения машинного обучения включают в себя сложные концепции, такие как исчисление и линейная алгебра, для реализации которых требуется много усилий и времени. Python помогает уменьшить эту нагрузку благодаря быстрой реализации для инженера по машинному обучению для проверки идеи.

Для запуска нашей модели машинного обучения нам нужна ОС, поэтому здесь мы используем экземпляр Amazon Linux (из AWS) для запуска докера, а поверх докера мы будем запускать нашу модель машинного обучения.

Создайте Amazon Linux:

Чтобы создать Amazon Linux на AWS, нажмите здесь.

Подключитесь к своему экземпляру Linux с помощью SSH:

ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name

Установить докер

sudo yum update -y 
sudo amazon-linux-extras install docker
sudo yum install docker

Для проверки установки используйте эту команду

docker info
   or
docker --version

Добавьте пользователя ec2-user в группу docker, чтобы вы могли выполнять команды Docker без использования sudo.

sudo usermod -a -G docker ec2-user

настроить докер и установить python

Запустите службу Docker:

sudo systemctl start docker

Проверьте состояние службы Docker:

systemctl status docker

Включить службу Docker:

systemctl enable docker

Извлеките образ контейнера Docker из образа CentOS из DockerHub и создайте новый контейнер

Получить Centos из Docker Hub:

sudo docker pull centos:latest

Разверните Centos и присвойте контейнеру имя ML_OS

sudo docker run -it --name ML_OS centos:latest

Установите программное обеспечение Python поверх док-контейнера

yum install python3 -y

Копирование файла данных CSV в экземпляр AWS

scp -i /path/my-key-pair.pem <CSV_file> my-instance-user-name@my-instance-public-dns-name

Копирование файла из ОС хоста в контейнер Docker

docker cp <file> <container_ID/name>:/path

Установите необходимые пакеты для модели машинного обучения

pip3 install pandas numpy joblib sklearn

Создание модели машинного обучения

Используйте редактор vi или vim для создания файлов Python.

salary_model.py

vim salary_model.py
import pandas as pd
import joblib
salary = pd.read_csv('Salary_Data.csv')
x = salary['YearsExperience'].values.reshape(-1,1)
y = salary['Salary']
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x,y)
joblib.dump(model, 'exp.pk1' )

Создание простой программы для этой модели:

salary_prog.py

vim salary_prog.py
import joblib
model = joblib.load('exp.pk1')
x = float(input("Enter Years of Experience: "))
result = int(model.predict([[x]]))
print(f"Salary will be : �~B�{result}")

Создайте и обучите модель:

python3 salary_model.py

Запустить обученную модель

python3 salary_prog.py

URL-адрес GitHub: https://github.com/yagyandatta/ML-model_on_docker/tree/master

Спасибо :)