fuuko
2023-12-10 00:20 deepin
其实这次折腾它还是蛮感慨的,debian社区的东西是真的大又全,不仅有numpy,opencv等计算、图像方面的python库,而且连pytorch这个庞然大物也给打包进去了(虽然使用它的最佳方式是拉docker =。=)。
是的,只要你的risc-v小板子内存够大,理论上是可以直接通过这个pytorch包启动一个stable diffusion或者llama模型的,虽然有点慢就是了。
Reply Like 0 View the author
上回说到我的vf2小板子启动deepin失败,最终投入了debian的怀抱,本帖就记录一下这周后续的折腾情况。
这周的主要目标如下:
网页前后端的代码我均在上周写完并在我的x86笔记本电脑上测试通过,目前的问题主要在如何把这些东西部署到开发板。
首先网页前端托管非常简单,直接扔给nginx即可。只是如果你是用的老版本vf2镜像,那么nginx是有可能起不来的,需要更新镜像到最新版本。而对于这类简单静态网页而言,在debian镜像里,nginx的部署也非常简单:
不出意外,复制完成后就能从局域网内访问它了,比如直接在手机或者PC上打开浏览器输入http://192.168.0.15,再回车,就能看到之前写的网页了。
由于我采用的是前后端分离策略,单独一个网页并不能分析图片的内容(如果配置了wasm就可以),于是这个时候开始折腾python后端。
这里需要注意的是,pypi上绝大部分的python包是没有risc-v版的,我所使用的推理框架ncnn就属于这类情况。如果直接执行pip3 install ncnn,在x86机器的risc-v docker里将会遭遇无穷无尽的编译地狱,而在vf2这种板子上,将会遭遇无法从pip安装cmake的问题,我折腾了两天,终于明白了最佳的处理方式:
std::atomic
替换为std::atomic_uint
以规避某个符号问题(对应的true,false,逻辑运算等也要修改,C++萌新可能会懵逼),又或者在cmake文件中设置额外链接到libatomic
这个库也行(增加链接库的方法未测试,我用修改源码的方式解决的)最后的最后,我终于在我手机上看到了结果:
至此第二阶段折腾完毕,我的vf2不仅运行了网页,而且还跑了一个基于深度学习的图片识别应用(虽然模型就10MB不到=。=)