鉴于chat-gpt火爆,因而决心做一个简单的模型。我的目标是:
1、输入部分,至少能处理图像。
2、文本可以做到qa、闲聊等娱乐性功能,而图像处理则可以做强化学习任务(玩玩游戏之类)。
3、以中文为主。
由于家境贫寒,我只能以尽可能小的模型完成尽可能窄的任务,故不得不尝试用多台主机进行联合计算,不同主机的操作系统不同,主要的程序语言也不同,我只能尝试通过websocket解决问题。
目前可动用机器如下:
1)一台13700k+6900xt+32g,rocm暂时未支持windows,便定为ubuntu22.04lts,rocm版本5.4。请注意:rocm版本虽然是向下兼容,如本机5.4可以安装5.2的pytorch,但4.x版本使用时会报错,因为dll库链接时似乎会检查第一个首字母。
2)另一台5800x+3060ti+32g,该机器准备用作跑游戏环境,毕竟8g显存在nlp里几乎没用……
另外,我不准备也没有能力重新训练语言模型,而中文的语言模型本身就很少,满足条件且推理速度尚可的便更少了,综上,最终选择clip。接下来,进入正题。
环境的建设
1、两台机器间传输信息
我选择了NBA2k23 pc版作为强化学习的游戏环境,为减少运算量,游戏设置中或低效果,分辨率640*480。要在3060ti机器上跑游戏,6900xt上跑神经网络,就得把前者的信息传输给后者。出于对python性能的担忧,我使用C#在3060ti不断截取2k游戏画面,藉由socket的udp传给另一台机器的python程序,幸好opencv是跨平台包,感谢大佬们工作。
整个流程如下:
一、在较差的电脑,下载visualstudio2022,安装windows应用程序,打开winform,框架.net7,不要怀疑winform速度,哪怕调用一堆委托,实测也比python快了几个量级。在winform中添加socket的udp客户端,同时用spy++获取2k窗口句柄,截取窗口,用opencv在c#的官方库emgu.cv。
二、通过python计算再传值给C#,