很多事情,从0到1的过程往往是最难的,对于AI模型也一样。
这段时间,他一有空就开始训练的他的新模型“小攻”,这个模型也是前几天才训练出来的,和他之前预估的时间延期了差不多一二十天。
而这一二十天中,他基本上所有时间都是在研究模型的分布式问题。
没办法,之前他的想法还是太天真了一点,模型的训练并没有他想象中那么简单,特别是想要训练出符合自己要求的模型。
他第一个面临的问题就是模型分布式训练的问题。
虽然网上已经有了分布式训练框架可以供他使用,比如DeepSpeed这种开源框架。
但是实际的使用场景还是有很大区别,毕竟,别人的分布式系统所基于的服务器是相对稳定的,不像他现在所控制的服务器,随时可能存在断开链接的情况,或者被服务器的主人发现自己的服务器被人做了手脚,而把它部署的文件干掉。
除了这个,他面临的第二个问题,就是模型分布式部署的问题,和上面的分布式训练类似,就是怎么保证模型部署的完整性。
所谓的分布式,可以看做是一个化整为零的过程,相当于把一个大的任务分成数个小的任务,交给不同的人完成,这样每个人分到的任务就很少,也能够更快的完成。
这样做的好处就是能有效的降低对服务器的性能要求,原本需要用超级计算机实现的任务可能用很多普通的服务器就能够胜任了。
当然,在实际应用中比上面说的难多了,这不仅仅是化整为零的问题。
为了解决这两个问题,他可谓是绞尽了脑汁,在网上搜索资料学习,自己验证探索,再结合不停地尝试,终于让他暂时解决了这两个问题。
他暂时的解决方案就是,同样的部署方式在原来的基础上多部署两套套,一主两备用,如果某个模块上的服务器失去联系,由另外两台备用的随机一个替换。
当然,现在他实现的方式还很粗糙,单单只是能用,离好用还有比较长的一段距离,需要他持续的优化和改进。
毕竟一台服务器出问题和三台服务器同时出问题的概率相差可是非常大的。
肖然现在训练出的“小攻”模型其实只能算是人体的大脑,他其实还要一个执行工具,就好比人的手。
比如很简单的,他如果想要入侵一台服务器,那么他需要先知道他的IP地址,然后利用扫描工具探测是否存在漏洞,后续还可能需要用到密码暴力破解工具,这些都是模型所不具备的能力。
鉴于此,肖然专门弄了一个客户端软件,集成了他现在常用的一些入侵工具,然后再把模型输出的结果转化为软件能执行的命令。
其实软件的开发一般都是开发,调试,优化调整,调试,优化调整的过程,需要在实际使用中了解到软件的缺陷。