Docker 部署机器学习模型

news/2024/12/23 22:19:59 标签: docker, 机器学习, 容器

1.编写机器学习代码

(1)新建一个 mlmodel.py

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import joblib

# Load sample dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split into features and target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Train a Logistic Regression model
model = LogisticRegression(max_iter=200)
model.fit(X_train,y_train)

# Evaluate the model
y_pred=model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
joblib.dump(model,'logistic_regression_model.pkl')

执行上述代码,生成模型文件;

2. 编写机器学习服务

在mlmodel.py同级目录下,新建一个app.py文件,插入如下内容:

from flask import Flask,request, jsonify
import joblib

model = joblib.load('logistic_regression_model.pkl')

app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def predict():
  data = request.get_json()
  prediction = model.predict([data['features']])
  return jsonify({'prediction': int(prediction[0])})

if __name__ == '__main__':
  app.run(debug=True,port=6000,host="0.0.0.0")

注意这里host必须设置为0.0.0.0

3.编写Dockerfile文件

在app.py同级目录下,新建一个Dockerfile文件,插入如下内容:

FROM python:3.9-slim

WORKDIR /app

COPY . /app

RUN  pip install -r requirements.txt

EXPOSE 6000

CMD ["python", "app.py"]

4.编写依赖文件

在app.py同级目录下,新建一个requirements.txt文件,插入如下内容(该文件包含app.py运行所需要的库):

flask
joblib
scikit-learn

5.构建Docker镜像和运行容器

打开终端,进入app.py同级目录下,
(1) 构建Docker镜像

docker build -t ml-model-api .

(2)运行Docker容器

docker run -p 5000:5000 ml-model-api

到此,你就可以通过api工具,如:apifox,去调用你的docker服务了。


http://www.niftyadmin.cn/n/5797067.html

相关文章

127、SQLSERVE中union all 和union的使用场景

使用:在 SQL Server 中,UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。两者区别union all 会去重,union 不会去重例子: 两张表:stu:stu_id,name emplyee:em_id,name 需求1:sql实…

设计模式中单例模式中懒汉模式的问题

设计模式中单例模式中懒汉模式的问题 今天在项目中遇到了要使用懒汉模式的问题。百度之后,发现还有很多细节是自己之前没有见过的。于是记录一下。下面是在AI助手中的说明。 单例模式的懒汉模式(Lazy Singleton)是在需要时才创建实例&#…

深入了解Java在人工智能领域的最新应用

Java不仅是传统企业级开发的主要语言,在人工智能(AI)领域也表现出强大的适应能力。随着AI技术的飞速发展,Java在机器学习框架、大数据分析以及深度学习中发挥了重要作用。本文将重点介绍Java在AI领域的最新进展与实际应用场景。 …

初始化全部推断的寄存器、 SRL 和存储器

初始化全部推断的寄存器、 SRL 和存储器 GSR 网络用于根据 HDL 代码中规定的初始值完成所有寄存器的初始化。如果没有设定初始值,综合工具会自行将初始 状态赋值为 0 或 1 。除少数情况,比如 one-hot 状态机编码, Vivado 综合工具一…

随时随地编码,高效算法学习工具—E时代IDE

随着算法学习的日益普及以及在线竞赛的增多,越来越多的算法爱好者需要一个便捷、高效的在线编码工具。而E时代IDE的出现,正是为了满足这些需求。无论你是在地铁上、咖啡馆,还是在课堂间隙,都可以通过这个工具快速投入算法编程。本…

华为IPD流程6大阶段370个流程活动详解_第一阶段:概念阶段 — 81个活动

华为IPD流程涵盖了产品从概念到上市的完整过程,各阶段活动明确且相互衔接。在概念启动阶段,产品经理和项目经理分析可行性,PAC评审后成立PDT。概念阶段则包括产品描述、市场定位、投资期望等内容的确定,同时组建PDT核心组并准备项目环境。团队培训涵盖团队建设、流程、业务…

MVVM、MVC、MVP 的区别

MVVM(Model-View-ViewModel)、MVC(Model-View-Controller)和MVP(Model-View-Presenter)是三种常见的软件架构模式,它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…

CS 144 check5: down the stack (the network interface)

Lectures Note 略 Exercises TCP片段传输到对等方的过程: TCP-in-UDP-in-IP. Linux 提供了一种接口(即“数据报套接字”,UDPSocket),它允许应用程序仅提供用户数据报的有效载荷和目标地址,而内核则负责…