V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jack139
V2EX  ›  Go 编程语言

Go 实现的模型推理和 API 部署框架

  •  
  •   jack139 ·
    jack139 · 2022-07-27 17:31:47 +08:00 · 2167 次点击
    这是一个创建于 831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    推销一下 :)

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

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

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

    其他功能:

    • 服务端配置使用 Yaml ,分布式部署时可进行针对性配置
    • API 验签支持 SHA256 和 SM2 算法
    • 模型示例
      • BERT 模型推理示例
      • CNN 模型推理示例
      • Tensorflow 模型权重转换示例
      • Keras 模型权重转换示例
    4 条回复    2022-07-28 09:14:20 +08:00
    Zhao70
        1
    Zhao70  
       2022-07-27 17:59:33 +08:00   ❤️ 2
    楼主做的这个东西和我工作领域有一些重合度,star 一下。

    不过有几个问题需要注意:
    1. tensorflow 版本有些低,是 1.15.4 ,貌似不支持 avx, avx2, fma 指令集,建议升级下,大概可以提升 20%的 CPU 打分性能。
    2. bert 算法使用了 github.com/buckhx/gobert 这个算法库,这个库在生产环境 Wordpiece Tokenize 存在字符串分片不会被 gc 的问题,再就是对于特殊 query 导致死循环,服务 OOM
    Juszoe
        2
    Juszoe  
       2022-07-27 18:32:45 +08:00
    看起来不错,有兼容 pytorch 或者 onnx 的打算吗
    jack139
        3
    jack139  
    OP
       2022-07-28 09:11:11 +08:00
    @Juszoe 已在 todo list 里,不过对 onnx 不熟,先要学习一下。好像也有 go torch 的路线,也可以尝试。
    jack139
        4
    jack139  
    OP
       2022-07-28 09:14:20 +08:00
    @Zhao70 1. 不好意思,因我的环境都还没升到 tf2 ,所以对 1.15 比较熟悉一些。2. 这个也是临时抓来的库做例子,还没有深究。我的生产还在用 py ,目标是要改 go ,所以才搞了这个项目。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   952 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:59 · PVG 04:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.