当前位置: 首页 > article >正文

如何在字节跳动的marscode上部署AI API,却意外地将功能搞废了?——分享踩坑经历

目录

解决过程

处理结果

经验总结

相关文章


你好,我是三桥君

最近我尝试用字节跳动的marscode来部署一个AI API,不得不说,字节的产品做得是真不错,用户体验超级棒,方方面面都考虑得很周到。用这个工具来做轻量级AI API的开发,简直不要太方便。

刚开始,我玩了几个入门级的尝试,感觉挺简单的。后来,我心想,要不要挑战一下自己,白嫖字节家的资源,把一个AI小模型部署成API,让大家都能玩玩。结果,这个过程简直是踩坑无数,我到处抱着电脑,在出租车、动车、地铁上各种尝试,最后还是卡在了部署这一步。

解决过程

虽然最后没成功,但这几天的废寝忘食也算是值了。那么,我是怎么解决问题的?

首先,遇到的第一个问题是开发空间限制。

为了跑一个基于PyTorch的AI模型,我需要安装一大堆依赖包,但marscode空间只有10G,老是提示我空间不够。我是这样解决的:

  1. 发现安装包的时候,缓存文件特别大,占用了大量空间。

  2. 我尝试了一个个单独安装依赖包,安装完一个就删掉缓存,终于把环境搭好了。

  3. 后来发现,用pip、poetry这些工具安装时,关闭缓存选项会更方便。

这样一来,开发空间受限的问题解决了,可以正常开发测试了。

接着,第二个问题是部署空间限制。

部署的时候,又遇到了空间不足的问题。我尝试了以下方法:

  1. 想修改部署命令,但发现行不通。

  2. 因为要安装torch,空间不够,所以我决定去掉对torch的依赖。

我手动实现了模型推理部分的所有代码,包括数据处理、tokenizer和inference,这个过程特别耗时,但最终把空间占用从十几G降到了几百MB,解决了空间不足的问题。

最后,第三个问题是部署打包文件总大小限制。

环境配置好了,但项目文件超过了250MB的限制。最大的文件是模型的onnx权重文件,所以我得想办法减小这个文件。

  1. 最初我以为单个文件不能超过250MB,就把800MB的onnx模型分成了四个文件,每个不超过200MB,运行时再合并。后来发现是整个项目部署后的文件大小不能超过250MB。

  2. 尝试用压缩方法减小模型大小,但发现还是超过限制。

  3. 最后,我采用了模型量化方法,尝试了fp16和int8量化,终于把文件大小降到了250MB以下。

处理结果

虽然解决了限制问题,但由于量化得太狠,模型效果也受到了很大影响,基本算是废了。

这个过程耗时几天,为了把这个AI功能塞进marscode,我成功地把这个功能给搞废了,哈哈。这也让我死了这条心,以后有类似的想法,还是直接用自己的服务器靠谱。

经验总结

几天地埋头苦干,虽然最后得出个“此路不通”的结论,但我觉得这经历也挺值的。毕竟,尝试过,努力过,才知道行不行。

最后,我还是决定不玩了,和之前玩coze那会儿一个样。一开始弄个工作流程,接接电路,填填数据,感觉操作简单又好玩。但一旦遇到点复杂的需求,就发现这东西不够使了。

各种限制太多,感觉就像是买了个高级玩具,看起来挺酷,但真要干点实事儿就不行了。

说实话,如果掏点钱就能解锁更多高级功能,我也愿意掏这个钱。但问题是,连个付费的渠道都没有,只能是心有余而力不足,只能选择放弃。

以上就是我用marscode部署AI API的踩坑经历,希望我的这些经验能给大家带来一些启示。三桥君觉得虽然过程曲折,但也是一种成长。毕竟,在AI这条路上,谁没踩过几个坑呢?

相关文章

2024年,搞AI就别卷模型了

Prompt:在AI时代,提问比答案更有价值

为什么说AI颠覆了用户场景?

如何成为AI超级个体?


http://www.kler.cn/news/327755.html

相关文章:

  • SpringCloud源码:服务端分析(二)- EurekaServer分析
  • 滚雪球学Oracle[1.1讲]:Oracle数据库基础概念
  • RabbitMQ高级特性-发送方确认
  • 使用scroll-behavior属性实现页面平滑滚动的几个问题
  • 力扣经典笔试题 最小K个数 小根堆 大根堆 快速排序 一题多解
  • C语言初识(二)
  • Springboot项目实现easyExcel批量导入到数据库
  • Python人工智能使用OpenCV进行图片形状的中心检测
  • linux 查看端口占用
  • 利用SpringBoot构建高效社区医院平台
  • 大数据埋点方案Openresty+Nginx+Lua踩坑日志
  • QSpice (9) --结合Python仿真
  • PostgreSQL是否有等待事件
  • Android常用C++特性之std::abs
  • Clickhouse分布式表初体验
  • python的内存管理机制
  • DOM元素导出图片与PDF:多种方案对比与实现
  • 数据集-目标检测系列-豹子 猎豹 检测数据集 leopard>> DataBall
  • 线程池:线程池的实现 | 日志
  • 普通人如何在未来市场中寻找赚钱机会?
  • 深信服2025届全球校招研发笔试-C卷(AK)
  • UE4/UE5开发资源
  • pyqt QGraphicsView 以鼠标为中心进行缩放
  • uniapp中实现评分组件,多用于购买商品后,对商品进行评价等场景
  • 数据结构-AC自动机
  • python 实现矩阵的Schur complement舒尔补算法
  • Goland无法使用debug的修复
  • 【源码+文档+调试讲解】无人超市系统python
  • 【Docker】02-数据卷
  • 【研1深度学习】《神经网络和深度学习》阅读笔记(记录中......