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

Почему контейнеры для машинного обучения?

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

Теперь начнем..

Здесь я использую свою операционную систему RHEL-8.

Поскольку в моей системе Docker (версия сообщества) уже установлен, я запущу службу Docker с помощью следующей команды.

systemctl start docker

Чтобы проверить состояние докера, используйте данную команду:

systemctl status docker

Здесь я собираюсь создать простой код Python для прогнозирования заработной платы на основе многолетнего опыта с использованием простого алгоритма линейной регрессии в машинном обучении. Я буду использовать набор данных о зарплате (CSV-файл), который вы можете получить из моего репозитория GitHub, упомянутого внизу:

https://github.com/lalita-rajpoot/Python-ML-Model-in-Docker.git

Здесь мы используем некоторые зависимости Python для запуска нашего кода. Для его установки используем

pip3 install pandas
pip3 install sklearn

зарплата_пред.py

import pandas
#extract content of dataset in an array
ds=pandas.read_csv('salaryData.csv')
#separate feature and target
x=ds['YearsExperience'].values.reshape(30,1)
y=ds['Salary']
from sklearn.linear_model import LinearRegression
#train the model
model=LinearRegression()
model.fit(x,y)
while True:
exp=float(input( "Enter your years of experience ="))
#exception handling
    if(exp==0):
        print("Better earn some experience first!!!")
    else:
        #predicting the value
        predicted_value=model.predict([[exp]])
        print("Predicted Salary of person with {} yrs of experience is".format(exp)+'\x1b[4;60;60m'+ " {}".format(predicted_value[0]) + " INR\n"+'\x1b[0m')
        
        term=input("Type exit to terminate and press enter to continue: ")
        if(term=="exit"):
            print("Container exited..")
            break

Теперь мы должны сделать этот файл python исполняемым, выполнив следующую команду:

chmod +x pythonfile.py
chmod +x salary_pred.py

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

FROM centos
RUN yum install python3 -y
RUN pip3 install sklearn
RUN pip3 install pandas
COPY salary_pred.py /salary_pred.py
COPY SalaryData.csv /SalaryData.csv
RUN chmod +x /salary_pred.py
ENTRYPOINT ["python3", "salary_pred.py"]

Этот Dockerfile создаст образ, используя образ centos в качестве базового образа, который я уже вытащил. Он создаст образ, скопировав все необходимые файлы и установив Python со всеми необходимыми зависимостями.

Для создания образа используйте следующую команду:

docker run -t imagename:version .
docker run -t model_prediction .

Наконец, в конце, чтобы запустить наш контейнер с обученной моделью внутри него, мы используем следующую команду:

docker run -it imagename:version 
dokcer run -it model_prediction

Здесь он автоматически возьмет последнюю версию изображения.

Итак, мы успешно предсказали нашу модель …..

Я надеюсь, что эта статья поможет вам….

Спасибо, что уделили время чтению этой статьи :)