Golang Go语言中实现的模型推理和 API 部署框架

发布于 1周前 作者 h691938207 来自 Go语言

推销一下 :)

https://github.com/jack139/go-infer

深度学习模型在部署时通常以云方式部署,通过 API 对外体提供推理服务。这个框架提供了部署 API 时的基本架构组件,实现了几个目标:

  • API 处理模块与模型推理模块解耦,降低高并发造成的网络和计算阻塞风险
  • API 处理模块与模型推理模块可进行分布式部署,均可实现横向扩展
  • 使用 Go 语言实现,提高执行效率,简化部署和运维
  • 业务逻辑使用 callback 方式调用,隐藏通用逻辑,开发时只需关注业务逻辑

其他功能:

  • 服务端配置使用 Yaml ,分布式部署时可进行针对性配置
  • API 验签支持 SHA256 和 SM2 算法
  • 模型示例
    • BERT 模型推理示例
    • CNN 模型推理示例
    • Tensorflow 模型权重转换示例
    • Keras 模型权重转换示例

Golang Go语言中实现的模型推理和 API 部署框架

更多关于Golang Go语言中实现的模型推理和 API 部署框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

楼主做的这个东西和我工作领域有一些重合度,star 一下。

不过有几个问题需要注意:
1. tensorflow 版本有些低,是 1.15.4 ,貌似不支持 avx, avx2, fma 指令集,建议升级下,大概可以提升 20%的 CPU 打分性能。
2. bert 算法使用了 github.com/buckhx/gobert 这个算法库,这个库在生产环境 Wordpiece Tokenize 存在字符串分片不会被 gc 的问题,再就是对于特殊 query 导致死循环,服务 OOM

更多关于Golang Go语言中实现的模型推理和 API 部署框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


看起来不错,有兼容 pytorch 或者 onnx 的打算吗

已在 todo list 里,不过对 onnx 不熟,先要学习一下。好像也有 go torch 的路线,也可以尝试。

  1. 不好意思,因我的环境都还没升到 tf2 ,所以对 1.15 比较熟悉一些。2. 这个也是临时抓来的库做例子,还没有深究。我的生产还在用 py ,目标是要改 go ,所以才搞了这个项目。

在Golang中实现模型推理和API部署框架是一个既实用又富有挑战性的任务。Golang(又称Go语言)以其高效的并发处理能力、简洁的语法和强大的标准库,在构建高性能、可扩展的服务器端应用中表现出色。

针对模型推理,Go语言可以通过绑定外部库(如TensorFlow、PyTorch的C/C++ API)或使用专门的Go包(如gorgonia、gonum)来实现。这些库和包提供了丰富的机器学习算法和工具,使得在Go中运行深度学习模型成为可能。

在API部署方面,Go语言的net/http包提供了强大的HTTP服务器功能,可以轻松构建RESTful API。此外,还可以使用第三方框架(如Gin、Echo)来简化路由、中间件等功能的实现,提高开发效率。

为了实现一个完整的模型推理和API部署框架,通常需要以下步骤:

  1. 选择合适的机器学习库,并在Go中进行绑定或集成。
  2. 编写模型加载、预处理和后处理代码。
  3. 使用net/http或第三方框架构建API服务器,处理客户端请求并返回推理结果。
  4. 优化性能,包括并发处理、内存管理等。
  5. 部署和监控,确保系统稳定运行并提供高质量的服务。

总之,Go语言在模型推理和API部署方面具有丰富的工具和库支持,通过合理的架构设计和代码实现,可以构建出高效、可扩展的框架来满足各种应用场景的需求。

回到顶部