В этой статье мы развернем и построим простую модель машинного обучения с линейной регрессией в контейнере 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
Здесь он автоматически возьмет последнюю версию изображения.
Итак, мы успешно предсказали нашу модель …..
Я надеюсь, что эта статья поможет вам….
Спасибо, что уделили время чтению этой статьи :)