100天搞定机器学习 番外:使用FastAPI构建机器学习API

简介: 100天搞定机器学习 番外:使用FastAPI构建机器学习API

FastAPI


FastAPI 是一个高性能 Web 框架,用于构建 API。


640.png


FastAPI 建立在 StarlettePydantic 之上。


  • Starlette:轻量级的 ASGI 框架和工具包,用来构建高性能的 asyncio 服务
  • Pydantic:Python中用于数据接口schema定义与检查的库。通过它,可以更为规范地定义和使用数据接口。


想要深入学习这两个库,可以移步对应官方文档


https://pydantic-docs.helpmanual.io/

https://www.starlette.io/


实际应用中,FastAPI 需要与Uvicorn一起使用,Uvicorn主要用于加载和提供应用程序的服务器。


FastAPI和Uvicorn的使用方法


使用之前先安装


pip install fastapi
pip install uvicorn


看一个小例子,感受一下FastAPI 多方便,多简单:


from typing import Optional
from fastapi import FastAPI
import uvicorn
#创建FastAPI实例
app = FastAPI()
#创建访问路径
@app.get("/")
def read_root():#定义根目录方法
    return {"message": "Hello World"}#返回响应信息
#定义方法,处理请求
@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}
#运行
if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=8000)


uvicron服务器运行之后可以尝试访问


http://127.0.0.1:8000/items/666,返回:


640.png


也可进在文档中调试


打开交互文档(Swagger UI)http://127.0.0.1:8000/docs


也可以访问API文档(ReDoc)http://127.0.0.1:8080/redoc


640.png


FastAPI部署机器学习模型


第一步:准备模型


import numpy as np
import os
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
import joblib
from sklearn import datasets
def main():
    clf = LogisticRegression()
    p = Pipeline([('clf', clf)])
    print('Training model...')
    p.fit(X, y)
    print('Model trained!')
    filename_p = 'IrisClassifier.pkl'
    print('Saving model in %s' % filename_p)
    joblib.dump(p, filename_p)
    print('Model saved!')
if __name__ == "__main__":
    print('Loading iris data set...')
    iris = datasets.load_iris()
    X, y = iris.data, iris.target
    print('Dataset loaded!')
    main()


第二步:创建FastAPI实例


import uvicorn
from fastapi import FastAPI 
import joblib
from os.path import dirname, join, realpath
from typing import List
app = FastAPI(
    title="Iris Prediction Model API",
    description="A simple API that use LogisticRegression model to predict the Iris species",
    version="0.1",
)
# load  model
with open(
    join(dirname(realpath(__file__)), "models/IrisClassifier.pkl"), "rb"
) as f:
    model = joblib.load(f)
def data_clean(str):
    arr = str.split(',')
    arr = list(map(float,arr))
    return arr
# Create Prediction Endpoint
@app.get("/predict-result")
def predict_iris(request):
    # perform prediction
    request = data_clean(request)
    prediction = model.predict([request])
    output = int(prediction[0])
    probas = model.predict_proba([request])
    output_probability = "{:.2f}".format(float(probas[:, output]))
    # output dictionary
    species = {0: "Setosa", 1: "Versicolour", 2:"Virginica"}
    # show results
    result = {"prediction": species[output], "Probability": output_probability}
    return result
if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=8001)


第三步:传入参数


我们用模型预测属性为以下值时Iris应该属于哪一类,并输出预测概率。


sepal_length=7.233
sepal_width=4.652
petal_length=7.39
petal_width=0.324

打开网址,传入参数


http://127.0.0.1:8001/predict-result?request=7.233%2C4.652%2C7.39%2C0.324


640.png

bingo!

相关文章
|
4月前
|
运维 NoSQL Serverless
|
2月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
1391 16
构建AI智能体:一、初识AI大模型与API调用
|
5月前
|
机器学习/深度学习 JSON 监控
如何通过API技术提升电商客户忠诚度:构建智能化客户关系引擎
在电商竞争激烈的当下,客户忠诚度成为核心壁垒。通过API技术构建智能化客户关系系统,整合全渠道数据,实现个性化推荐与自动化运营,提升用户黏性与复购率。结合实时行为分析、差异化定价、积分系统等手段,打造高效忠诚度管理体系,助力企业实现长期增长。
114 1
|
5月前
|
监控 安全 数据挖掘
构建自定义电商数据分析API
在电商业务中,构建自定义数据分析API可实现销售、用户行为等指标的实时分析。本文介绍如何设计并搭建高效、可扩展的API,助力企业快速响应市场变化,提升决策效率。
168 0
|
2月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
|
3月前
|
安全 Java API
使用 Java 构建强大的 REST API 的四个基本技巧
本文结合探险领域案例,分享Java构建REST API的四大核心策略:统一资源命名、版本控制与自动化文档、安全防护及标准化异常处理,助力开发者打造易用、可维护、安全可靠的稳健API服务。
243 2
|
4月前
|
运维 NoSQL Serverless
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
在轻休闲游戏流量波动大、生命周期短的背景下,传统架构难以应对成本与扩展挑战。本文介绍了基于阿里云函数计算 FC 和 Redis 构建的新一代服务器架构,实现弹性伸缩、成本优化与高效运维,助力轻休闲游戏快速迭代与稳定运营,提升开发效率并降低运维复杂度。
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
|
3月前
|
监控 安全 API
构建坚不可摧的防线:全方位保障API接口数据安全
在数字化时代,API作为系统间数据沟通的桥梁,其安全性至关重要。本文系统解析API安全的四大基石:身份认证、授权管理、数据完整性与机密性,并深入探讨HTTPS加密、强认证机制、精细授权、数据保护及纵深防御等关键技术实践,帮助企业构建全面的API安全体系,防范数据泄露与攻击风险,保障数据传输安全与业务稳定运行。
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
580 14
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)