这两天在折腾AI,一个是目前比较火爆的SD,一个是内容生成的一些模型,比如ChatGLM等等。
心得就是部署越来越简单了。
这里记下两个非常方便简单的工具:GPT4All、秋叶SD Web UI
下载地址分别是:
1、https://github.com/nomic-ai/gpt4all
这个工具类似steam,它把一些常见的AIGC(内容生成)模型都放到了一个界面里,允许用户自由下载安装,省去配置步骤,比较方便。
2、https://github.com/djstla/novelai-webui-aki-v3
这是一个SD的启动器,用户无需配置命令,直接运行启动器就可以完成部署。启动器里面有关于SD的一些配置,还有插件下载界面,可惜的是我这里点击下载之后,下载不下来;好在还可以直接点击复制链接按钮然后自己去浏览器下载,之后就是点击安装按钮进行安装,所以总体还是比全自己部署要方便的多。
另外就是极力推荐一下ChatGLM-6B这个模型。虽然这个没有启动器,但使用也是非常简单,只需要下载下来然后按照说明把require里面的模块都用pip安装了,基本就可以开始运行了。推荐它的原因是因为这个模型对系统要求很低,我nvdia geforce 2070 ti的显卡都能带的动(前提是按照说明修改一下代码,把显存使用量降到6G),不好的一点就是编程能力太差,只能日常语音对个话。
还有,推荐两个东西,一个是azure的深度学习平台,可以免费使用一年,虽然现在还不会操作训练机器人,但也已经申请下了,希望能尽快开始训练自己的模型。第二是腾讯出的一个SD学习课程,地址是https://cloud.tencent.com/developer/article/2264456
还有一个:https://guide.novelai.dev/guide/install/sd-webui
建议去看一下,对比着看吧。
还有一个SD的模型库忘了说了:https://rentry.org/sdmodels#
值得一用的是:2.Stable Diffusion v1.4 [4af45990] [7460a6fa] [06c50424]

此外,如果用的是N卡,在使用上述工具之前,一定要自己安装好cuda环境。这个操作是比较复杂的,首先你得看自己的显卡支持哪个cuda,命令是nvidia-smi,右上角就写着cuda版本;然后去nvidia官网下载这个版本的cuda。但是在安装的时候,也经常会出现无法安装的情况,一定要仔细注意安装的整个过程,记录下来到底安装哪个模块的时候出的问题。在我的2070显卡上,出问题的模块就是执行到Nsight Visual Studio Edition安装的时候突然就失败了,然后就回过头来把Nsight VSE选项给取消掉,再安装就ok了。目前还没发现有什么不良影响,所有框架正常使用。

目前自己使用较多的仍然是aigc功能,主要是用的poe和chatGPT,但chatGPT发送和回复内容对长度要求限制很高,经常会出现不能发送完整的问题或者回复经常中断的现象,更不要说chatGPT无论是哪个版本都会瞎编乱造胡说八道,所以现在正在逐步转向POE平台。在文生图方面,我用的比较多的是Midjourney,需要下载或者在线在discord里面用,像聊天似的,总体来说还是比较方便,而且生成效果也确实好于本地部署的SD,但这一切都是由于我电脑配置太低导致的。如果能换成台式机,多装几块显卡、哪怕是纯计算卡,也可能让本地部署的SD强于Midjourney。

好了,下一步的计划就是利用azure尽快掌握AI训练过程,训练出几个自己的模型,方便自己的工作。

对了,还有语音生成、虚拟人物生成这些还没有搞,等以后有时间有心情了再说吧。目前最要紧的就是模型的训练。

最近经常被一些很简单的事情绊住,天天把时间浪费在这些上面,很烦。
昨天遇到的问题是:我需要在linux(实际用的是sangoma linux 7)启动后直接进系统,无需登录,并且在进入系统后默认打开某些程序。我的系统是纯字符控制台。
以下是有效的做法:
一、系统自动登入
1、(先备份到合适位置后)修改gurb配置文件:
vi /etc/default/grub
在登陆命令行加入:quiet splash auto login=root
2、保存后使之生效:
grub2-mkconfig -o /etc/default/grub
3、重启就可以了。
二、系统启动后自动启动程序,并设置禁止关闭屏幕:
1、在默认登陆的用户主目录下,修改或者新建.bashrc文件:
vi ~/.bashrc
2、在文件末尾加入相应指令:
禁止关闭屏幕:setterm -blank 0
运行其它指令(自己随便写,每行一个)

前一段时间解决了一次ffmpeg拉大唐讯士的rtsp流出错的问题,之后又发现编码器时不时会没反应,拉取大唐讯士视频服务器rtsp流的时候总是一直等待;使用vlc播放却没问题。想了一下,应该是需要指定rtsp流类型。
试了一下指定rtsp流类型为tcp,就解决了。
具体做法是在-i前面加上:-rtsp_transport tcp。比如:
ffmpeg -rtsp_transport tcp -i...........

----20230220更新----
在我的系统里,我用的是udp。
使用tcp,会导致转换速率越来越慢、直至停止的情况。udp就直接丢弃错误,速度会比较快。

10日开始到现场设摊子,14日导播结束,15日休息了一天,16日下午自己把导播台提了上来开始改。根据这几天实际使用的心得,成功进行了以下改动和扩展:
1.输出接口从1个录机输出的sdi,扩展成为三个导播台直出的sdi、一个录机出的sdi,并且多了一个录机直出的hdmi接口。以后就不用带着sdi转hdmi盒子了。目前总共四路sdi输出,足够用了。
2.做了一根适配270摄像机的电源线,以后270摄像机也能用在便携式导播台系统里面了。
3.修复了导播台高清输入口。以前是因为高清线不知道被谁拔掉了,接上以后,三个高清输入全都能用了。目前是四个sdi输入、一个dvi输入(高清口变的),三个hdmi输入,还能进三路av信号,但是得在切换台上略微设置一下。切换台同时只能在上面任选八个信号。
4.修复了音频输入。目前可以输入三个音频,其中两个是单声道的三芯卡农,一个是大三芯3.5的,插了一个转2.5的孔,可以接笔记本电脑之类的设备。
5.去掉了一个本来就没有接线的通话器插座。目前还有一个通话器插座是空的,是个五芯的。以后有机会,买个五芯的插头给它接上。目前能用的通话是六路,以后还能扩展一路,凑够八路。
6.画了个说明图,贴到后面了,方便以后随时查看,免得再像以前那样需要不断的测试才能知道接口功能。
改动花了半个下午,17日早上上了班就装起来了。很简单的操作。
下一步,打算再做一根270的适配线,然后测试一下每一路的通话功能。

这个台子是单位买了很多年的设备。只支持到1080i,连1080p都不支持,早就落后的一塌糊涂。
但就是这么一个旧玩意,在这种地方也玩不转。
真是没法说。
现在都是wmix的时代了。以后有时间再好好搞一搞wmix,试试学一下会议导播之类的。到时候弄一个支持rtsp或者rtmp的网络摄像头,就能直接进wmix,方便极了。

在从大唐讯士编码器拉取rtsp流并编码成flv推送时,ffmpeg经常出现无反应和出错退出的现象。使用vlc player测试没问题。
在ffmpeg出错时,看到以下错误:
[aac @ 000001bed96fa240] Too many bits 8832.000000 > 6144 per frame requested, clamping to max
[libx264 @ 000001bed973bdc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 000001bed973bdc0] profile High, level 3.1, 4:2:0, 8-bit

以及:
Failed to update header with correct duration.
Failed to update header with correct filesize.

所以原因是在合成flv文件结束时,ffmpeg用该文件时长和大小值生成文件头(添加到文件开头)。但是在传输流时,就不存在文件时长和大小这两个参数,无法生成该文件头,所以就会出现这种问题。
解决办法是在编码参数中添加一个no_duration_filesize的标志,如下:
... -f flv -flvflags no_duration_filesize "..."

至此解决。