0%

仅记录QAnything安装过程

run.sh

1
$ bash ./run.sh -c local -i 0 -b default

异常处理

in connect sock.connect(self.unix_socket) PermissionError: [Errno 13] Permission denied

处理

将当前用户加入docker组,重启docker后刷新用户组

1
2
3
$ sudo usermod -aG docker $USER
$ sudo systemctl restart docker
$ newgrp docker

异常现象

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
来自 https://github.com/netease-youdao/QAnything
* branch master -> FETCH_HEAD
当前master分支已是最新,无需更新。
model_size=7B
GPUID1=0, GPUID2=0, device_id=0
GPU1 Model: NVIDIA GeForce RTX 3090
Compute Capability: 8.6
OCR_USE_GPU=True because 8.6 >= 7.5
====================================================
******************** 重要提示 ********************
====================================================

您当前的显存为 24576 MiB 推荐部署7B模型
llm_api is set to [local]
device_id is set to [0]
runtime_backend is set to [default]
model_name is set to []
conv_template is set to []
tensor_parallel is set to [1]
gpu_memory_utilization is set to [0.81]
models 文件夹已存在,无需下载。
检查模型版本成功,当前版本为 v2.1.0。
Model directories check passed. (0/8)
模型路径和模型版本检查通过. (0/8)
Do you want to use the previous host: ? (yes/no) 是否使用上次的host: ?(yes/no) 回车默认选yes,请输入:no
Are you running the code on a remote server or on your local machine? (remote/local) 您是在远程服务器上还是本地机器上启动代码?(remote/local) local
Running under native Linux
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3.10/http/client.py", line 1283, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1329, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 976, in send
self.connect()
File "/usr/lib/python3/dist-packages/docker/transport/unixconn.py", line 30, in connect
sock.connect(self.unix_socket)
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 532, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 718, in reraise
raise value.with_traceback(tb)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3.10/http/client.py", line 1283, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1329, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 976, in send
self.connect()
File "/usr/lib/python3/dist-packages/docker/transport/unixconn.py", line 30, in connect
sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', PermissionError(13, 'Permission denied'))

During handling of the above exception, another exception occurred:
......

could not select device driver “nvidia” with capabilities: [[gpu]]

处理

1
2
3
4
5
6
7
8
9
10
11
12
# 添加nvidia源
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装nvidia-container-toolkit
$ sudo apt-get update
$ sudo apt-get install -y nvidia-container-toolkit

# 重启docker
$ sudo systemctl restart docker

异常现象

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
自 https://github.com/netease-youdao/QAnything
* branch master -> FETCH_HEAD
当前master分支已是最新,无需更新。
model_size=7B
GPUID1=0, GPUID2=0, device_id=0
GPU1 Model: NVIDIA GeForce RTX 3090
Compute Capability: 8.6
OCR_USE_GPU=True because 8.6 >= 7.5
====================================================
******************** 重要提示 ********************
====================================================

您当前的显存为 24576 MiB 推荐部署7B模型
llm_api is set to [local]
device_id is set to [0]
runtime_backend is set to [default]
model_name is set to []
conv_template is set to []
tensor_parallel is set to [1]
gpu_memory_utilization is set to [0.81]
models 文件夹已存在,无需下载。
检查模型版本成功,当前版本为 v2.1.0。
Model directories check passed. (0/8)
模型路径和模型版本检查通过. (0/8)
Do you want to use the previous host: localhost? (yes/no) 是否使用上次的host: localhost?(yes/no) 回车默认选yes,请输入:
Running under native Linux
Removing network qanything_milvus_mysql_local
Network qanything_milvus_mysql_local not found.
Creating network "qanything_milvus_mysql_local" with the default driver
Pulling standalone (milvusdb/milvus:v2.3.4)...
v2.3.4: Pulling from milvusdb/milvus
000000000000: Pull complete
......
Digest: sha256:efd6ef720b6ad0de62d006319996ba18504842ffaa543e3b072aeb5963305907
Status: Downloaded newer image for milvusdb/milvus:v2.3.4
Pulling mysql (mysql:)...
latest: Pulling from library/mysql
000000000000: Pull complete
......
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
Pulling qanything_local (freeren/qanything:v1.1.1)...
v1.1.1: Pulling from freeren/qanything
000000000000: Pull complete
......
Digest: sha256:20a1ca0612b2187c308f900474aa1a1609d04e3c80c7d3c19926fddff6d143da
Status: Downloaded newer image for freeren/qanything:v1.1.1
Creating milvus-minio-local ... done
Creating milvus-etcd-local ... done
Creating mysql-container-local ... done
Creating milvus-standalone-local ... done
Creating qanything-container-local ... error

ERROR: for qanything-container-local Cannot start service qanything_local: could not select device driver "nvidia" with capabilities: [[gpu]]

ERROR: for qanything_local Cannot start service qanything_local: could not select device driver "nvidia" with capabilities: [[gpu]]
ERROR: Encountered errors while bringing up the project.
Attaching to qanything-container-local
qanything-container-local exited with code 128

(一)基础模型(Stable-Diffusion模型)

其实Stable-Diffusion是分版本的,不出意料咱用的大部分都是1.5的模型。
模型优先下载safetensors格式,如果没有则只能ckpt了。
问题是模型太多了,乱花渐欲迷人眼,怎么样才能选出合适的模型呢。

(1.1)ChilloutMix(仿真)


下载链接:🔗https://huggingface.co/hanafuusen2001/ChilloutMix

典型文件:Chilloutmix_NiPrunedFp32Fix.safetensors

合并模型,它是以SD官网模型1.5版本为基础进行训练的仿真的模型。
非常热门但可能有版权问题。作者删库跑路了。
用于生成照片质量的亚洲女性的特殊模型,可以配合ulzzang-6500-v1这种嵌入式模型生成韩国时尚女孩。
当然,很多真人的LoRA模型也是基于它的,总之就是小姐姐模型首选。

💡上图示例没有指定太多内容,可以看到生成的相貌还是挺西方的。
⚠️ 需要注意,这个模型有时会自动生成🔞NSFW内容,需要你提示词尽量提示dressed之类,反向提示词Nude
相对来说图才比较安全(但都不是绝对的)所以不适合进行随机演示。

1
wget https://civitai.com/api/download/models/11745 -O models/Stable-diffusion/chilloutmix_NiPrunedFp32Fix.safetensors

(1.2)BasilMix(仿真)


下载链接:🔗https://huggingface.co/nuigurumi/basil_mix
典型文件:Basil_mix_fixed.safetensors

合并模型,逼真的纹理和亚洲面孔,旨在保持对基于提示词的响应反应。
好像Chilloutmix也是部分来自它的,呃,颜色有点淡。禁止商用。

1
wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -P models/Stable-diffusion/

(1.3)BeautyProMix(仿真)

请添加图片描述
下载链接:🔗https://huggingface.co/hanafuusen2001/BeautyProMix
典型文件:BeautyProMix_v1.safetensors

作者Cherry_BeautyPro @ civitai.com。
模型经过约略1个月进行各项参数的调整并搭配大量的图库进行训练,前后进行了近百次的混合及比例调整,针对人像及光影表面十分令人赞赏。尤其是加入了BeautyPro首席穿搭顾问及彩妆师团队的协助,针对用于训练的每张照片进行细节的调整,使得面部表现更为优良。禁止商用。

1
wget https://huggingface.co/hanafuusen2001/BeautyProMix/resolve/main/BeautyProMix_v1.safetensors -P models/Stable-diffusion/

(1.4)ChikMix(仿真)


下载链接:🔗https://huggingface.co/hanafuusen2001/ChikMix
典型文件:Chikmix_v3.safetensors

这是一款2.5D模型,有比较好的脸部和身体比例,配合lora生成的人物比较适合亚洲人审美(抄的,难道你们不觉得眼睛太大了么)。看别人的评测文章,这款模型需要配合LoRA使用效果才好。

1
wget https://huggingface.co/hanafuusen2001/ChikMix/resolve/main/chikmix_v3.safetensors -P models/Stable-diffusion/

(1.5)Dalcefo_Realistic_Tally_v3(仿真)


下载链接:🔗[https://huggingface.co/ll00292007/dalcefo 🔗dalcefo_realistic_tally_v3 - Dalcefo’s Ko-fi Shop - Ko-fi
典型文件:Dalcefo_Realistic_Tally_v3.ckpt

这是一款宝藏模型,名气虽然不如Chilloutmix,但生成的人物质量,场景质量,光影及质感来说都是顶级的。提示的可接受性方面也相对较好。。还是抄自别人的评测文章。但我怀疑它根本画不出男生啊,同时看起来也是彻底的亚洲。

1
wget https://huggingface.co/ll00292007/dalcefo/resolve/main/dalcefo_realistic_tally_v3.ckpt -P models/Stable-diffusion/

(1.6)Dreamlike-photoreal-2.0(仿真)

请添加图片描述
下载链接:🔗https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0
典型文件:Dreamlike-photoreal-2.0.safetensors

它是一款基于SD1.5的逼真模型,由 dreamlike.art 制作。很欧美了是不是:)
可以去上面抱脸链接里面看官方的更多例子:人,物件,场景都很真实。

1
wget https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0/resolve/main/dreamlike-photoreal-2.0.safetensors -P models/Stable-diffusion/

(1.7)MajicMixRealistic_v4(仿真)


下载链接:🔗https://huggingface.co/jtamph/magicmixRealistic
典型文件:MajicmixRealistic_v4.safetensors

我不知道怎么说,因为找不到别人对它的介绍或描述或感受。
依旧很亚洲,眼睛没有特别大,还是画不出男生,参考这里的作品看看?

1
wget https://huggingface.co/jtamph/magicmixRealistic/resolve/main/majicmixRealistic_v4.safetensors -P models/Stable-diffusion/

(1.8)Realdosmix(仿真)

请添加图片描述
下载链接:🔗https://huggingface.co/datamonet/RealDosMix
典型文件:Realdosmix_.safetensors

说是“伪”真人的模型,看上去时间相对比较早,应该是最早一批真人类型的模型。

1
wget https://huggingface.co/datamonet/RealDosMix/resolve/main/realdosmix_.safetensors -P models/Stable-diffusion/

(1.9)RealMax_V34(仿真)

请添加图片描述
下载链接:🔗https://huggingface.co/dawn6666/real-max-v3.4
典型文件:RealMax_V34.safetensors

我完全记不住哪儿来的了,只有访问不到的Civitai上的原始链接(因我访问不了,假如弄错了提前Say Sorry)。
我记得作者说主要是强化并适合输出半身像,希望没记错。
能输出男生,但是女生的样子也不是太真实。

补充吐槽一句它的名字,太简单的词,让你很难从网上搜到有用的内容。

1
wget https://huggingface.co/dawn6666/real-max-v3.4/resolve/main/real-max-v3.4.safetensors -P models/Stable-diffusion/

(1.10)URPM_v13(仿真)

请添加图片描述
下载链接:🔗https://huggingface.co/Dee565/urpm13
典型文件:urpm_v13.safetensors

直到我弄清这是个简称而它的全称非常NSFW,而且很欧美,不过已经下载了可以研究。
不适合演示,注意,注意,注意,即使用关键词也很难避开NSFW的内容,唉。

1
wget https://huggingface.co/Dee565/urpm13/resolve/main/urpmv13.safetensors -P models/Stable-diffusion/

(1.11)国风(2.5D)

请添加图片描述
下载链接:🔗https://huggingface.co/xiaolxl/GuoFeng3
典型文件:GuoFeng3.4.safetensorsGuoFeng3.3.safetensors

国风是系列,有多个大小版本,存在细微差别,也有LoRA模型,建议去作者网站了解详情。

这是个非常精品的模型系列,上面的图片只是我不用太多提示词直接画出来的一男一女。更多介绍,更精细的作品,还是去作者网站看看吧,总之这个系列非常值得拥有。

1
2
3
wget https://huggingface.co/xiaolxl/GuoFeng3/resolve/main/GuoFeng3.4.safetensors -P models/Stable-diffusion/
wget https://huggingface.co/xiaolxl/GuoFeng3/resolve/main/GuoFeng3.3.safetensors -P models/Stable-diffusion/
wget https://huggingface.co/xiaolxl/GuoFeng3/resolve/main/GuoFeng3.2.safetensors -P models/Stable-diffusion/

(1.12)Anything v5(2D卡通)

下载链接:🔗https://huggingface.co/KatarLegacy/anything_v5
典型文件:Anything_v5.safetensors

名字很霸气。介绍容我抄一下哈,主要生成高质量的二次元和动漫图片。虽然它的出图效果非常出色,但风格相对较为单一,对输入关键词的要求也不是很高。和之前版本相比训练集中人物的集中于年轻男性女性,比较难画年长的男性和女性。描边线条比4.5要明显一些更好看。总之是二次元比较有名的模型。

1
wget https://huggingface.co/KatarLegacy/anything_v5/resolve/main/anythngv5.safetensors -P models/Stable-diffusion/

(1.13)AbyssOrangeMix3(简称AOMv3 - 卡通)

请添加图片描述
下载链接:🔗https://huggingface.co/WarriorMama777/OrangeMixs/tree/main/Models/AbyssOrangeMix3
典型文件:AOM3_orangemixs.safetensors

是Civitai网站上人气最高的二次元模型,这一句话就够了,出图质量高,脸不易崩坏。

1
wget https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3_orangemixs.safetensors -P models/Stable-diffusion/

(1.14)Meinamix_meinaV9(卡通日漫)

请添加图片描述

下载链接:🔗https://huggingface.co/danbrown/MeinaMix-v9
典型文件:meinamix-v9.safetensors

呃,还是抄的,大片气质,面容精美,光影质感。对提示词不够敏感。

1
2
wget https://huggingface.co/danbrown/MeinaMix-v9/resolve/main/meinamix-v9.safetensors -P models/Stable-diffusion/
wget 'https://civitai.com/api/download/models/119057?type=Model&format=SafeTensor&size=pruned&fp=fp16' -O models/Stable-diffusion/meinamix-meinaV11.safetensors

(1.15)其它(Others)

上述每个模型的效果图几乎都是较少提示词输出的同样内容,不代表模型的最高质量。
模型太多了,我只能简单尝试一下,像整合包Nova-AI就不用说了。另外还有:

但是下面的基础模型,还是要稍微说一下的。

(1.X)stable-diffusion-v1-5(基础的基础)

在这里插入图片描述
下载链接:🔗https://huggingface.co/runwayml/stable-diffusion-v1-5
典型文件:v1-5-pruned.safetensors

可以算官方了,Stable Diffusion的官方模型V1.5与V1.4比起来,整体画面构成区别不大,色阶对比度和光源渲染提升,光源效果更加平滑合理(抄的)。它是其它模型的基础,比如你要进一步训练基础模型,可以从它7GB那个开始,如果只是绘图可以下载4GB的。

(1.Y)stable-diffusion-inpaint(重绘模型)

在这里插入图片描述
下载链接:🔗https://huggingface.co/runwayml/stable-diffusion-inpainting
典型文件:v1-5-inpainting.ckpt

也是“官方”的,用于局部重绘,画布扩绘等等。
特别是扩绘类型的,必须要inpainting模型,否则绝对是衔接失败,结果奇丑无比。

动漫比如:revAnimated_v121-inpainting.safetensors 只要带有inpainting字样就是。

(1.Z)instruct-pix2pix(重绘模型)

请添加图片描述
下载链接:🔗https://huggingface.co/timbrooks/instruct-pix2pix
代码仓库:🔗https://github.com/timothybrooks/instruct-pix2pix
典型文件:instruct-pix2pix-00-22000.safetensors

通过文字提示更改图像中的内容,鲜花变土豆,白天变夜晚等等,请参考来源的介绍。

(二)人物模型(LoRA模型)

前面也说了Lora模型可以自己训练的,配合不同的基础模型还可以出不同的效果。
是的没错,同一个LoRA模型可以配合真人/动漫/3D呢。

在这里插入图片描述

虽然我们不严谨的叫它人物模型,其实LoRA也可以是风格模型,服装模型。
甚至是某些局部特征,动作的模型。

(2.1)各国家和地区女孩系列(DollLikeness)

在这里插入图片描述
下载链接:🔗https://huggingface.co/hanafuusen2001/LoRA_download
典型文件:XXXXXDollLikeness_v12345.safetensors

这不能叫一个系列,但是确实有很多类似的DollLikeness的LoRA模型。
比如:东南亚、中国,中国香港,中国台湾,韩国,日本,俄罗斯,等国家或地区……

最早在互联网上惊艳到大家的,以假乱真的图片,就是ChilloutMix配合这类LoRA做出来的,所以放在前面介绍。
然后你会发现LoRA实在太多了,组合起来,加上不同的权重,可能才能生成出你最喜欢的效果。

(2.2)汉服系列(hanfu)

在这里插入图片描述
下载链接:🔗https://huggingface.co/hanafuusen2001/HanFu
典型文件:Hanfu_v30Ming.safetensors 等等。

这也是非常惊艳的一个系列,但我不清楚原作者是把模型放哪儿的,难道还是Civitai么?

(2.3)高达Cosplay(GUNDAM)

请添加图片描述
下载链接:🔗https://huggingface.co/hanafuusen2001/Gundam/
典型文件:GundamChilloutMix_v10.safetensors

有种奇怪的感觉,看模型名字也是,可能真正的高达爱好者并不会喜欢(吧?)。
可以用汉语普通话对着它读出“GUNDAM”来表达不满,可能同系列其它模型要好些,我没有试过。

(2.4)盔甲(HiPoly3D)

在这里插入图片描述
下载链接:🔗https://huggingface.co/TrynaBeGood/hipoly/tree/main
典型文件:Hipoly3DModelLora_v20.safetensors

非常有自己的风格,触发词是hiqcgbody。我停在这里找了30分钟,希望没有写错。

(2.5)宫崎骏工作室风格(Studio Ghibli)

请添加图片描述
下载链接:🔗https://openai.wiki/lora-model-part-3.html
典型文件:studioGhibliStyle_offset.safetensors

这个除了LoRA也有基础模型,就像迪士尼风格一样。

(2.6)某某明星的模型(及其它)

凭直觉看,这部分应该有版权问题。
但是网上单独关于某个人的模型实在太多了,训练过于容易,未授权使用和滥用是很难杜绝的。
所以这里不放链接了。

其它的类型,风格,人物,实在不胜枚举,就不再逐一的介绍了。
地址?抱脸上面找呀,至少现在它还能从国内直接访问。

希望这些简单的介绍,有抛砖引玉的作用。
能换来大家举一反三和应用自如,而不是被砖头砸得晕晕的。😄

Happy creating!!!


适合的才是最好的,这不是我的益达,是你的益达!
🤪 to be continued…

OS、GPU等版本确认

Ubuntu 22.04.3 LTS + NVIDIA GeForce RTX 3090

更新阿里云加速源 [可选]

Ubuntu 22.04.3 LTS jammy

将加速源更新至 /etc/apt/sources.list

1
2
3
4
5
6
7
8
9
10
echo 'deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse' >/etc/apt/sources.list

获取OS版本

1
2
3
4
5
6
7
$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy

查看显卡型号

系统安装了 NVIDIA GeForce RTX 3090 显卡,推荐安装的驱动程序是 nvidia-driver-535

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ sudo ubuntu-drivers devices

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002204sv00007377sd0000120Bbc03sc00i00
vendor : NVIDIA Corporation
model : GA102 [GeForce RTX 3090]
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-525 - distro non-free
driver : nvidia-driver-525-open - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-535 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin

安装驱动和CUDA

因SD WebUI的webui.sh中指定的xFormers版本需要PyTorch 2.0.1+cu118,需要确保正确安装CUDA v11.8

通过 CUDA Toolkit 11.8 Downloads | NVIDIA Developer 检索发现 CUDA v11.8 配对的驱动最低为v520,且页面有对应的安装包地址

卸载错误的驱动(可选)

1
2
sudo apt-get remove --purge nvidia*
sudo apt autoremove

卸载错误的CUDA(可选)

1
sudo apt-get --purge remove "*cublas*" "cuda*"

若有卸载操作,执行以下安装前建议reboot

安装正确的驱动

如果接受 ubuntu-drivers 给到的驱动版本建议不低于v520,可以直接使用 ubuntu-drivers 进行安装

1
$ sudo ubuntu-drivers autoinstall

或者,使用命令有选择地安装所需的驱动程序,如

1
$ sudo apt install nvidia-driver-535

安装正确的CUDA

1
2
wget wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

完成安装后在~/.bashrc里加入环境变量:

1
2
export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"
异常处理

仍有其他方式安装的CUDA,nvcc -V仍有输出,如:

1
2
3
4
5
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0

可按以下方式继续尝试清理CUDA:

1
2
3
4
5
6
7
8
9
10
11
12
#进入cuda的安装目录
cd /usr/local/cuda/bin
#执行cuda自带的卸载程序
sudo ./cuda-uninstaller

#清理目录残余
# sudo rm -fr /usr/local/cuda-*
#清理安装包残余
# 检索安装包 sudo dpkg -l |grep cuda

#清理后重启
sudo reboot

CUDA包附带的显卡驱动不匹配:

sh cuda_x.x.x_y.y.y_linux.run时,提示Installation failed. See log at /var/log/cuda-installer.log for details.,而cuda-installer.log明确提示[ERROR]: Install of driver component failed.

因为funfile中带的驱动不兼容当前显卡,建议按sudo ubuntu-drivers devices给出的清单,选择大于y.y.y版本的驱动指定安装,如:

1
sudo apt install nvidia-driver-535

重启系统

安装完成后,重新启动系统即可完成。

1
sudo reboot

检查驱动和CUDA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 检查显卡驱动版本
# NVIDIA Driver v535.146.02
$ nvidia-smi
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.146.02 Driver Version: 535.146.02 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3090 Off | 00000000:01:00.0 Off | N/A |
| 0% 32C P8 18W / 350W | 26MiB / 24576MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1257 G /usr/lib/xorg/Xorg 9MiB |
| 0 N/A N/A 1414 G /usr/bin/gnome-shell 8MiB |
+---------------------------------------------------------------------------------------+

# 检查CUDA版本
# CUDA v12.1
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0

安装SD WebUI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# ENV
# GPU::GeForce RTX 3090
# OS::Ubuntu Server 22.04 LTS 64位

# update ubuntu package 安装依赖包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get build-dep gcc
sudo apt-get install build-essential

gcc --version

# install conda 安装 conda
# latest:https://docs.conda.io/projects/conda/en/stable/user-guide/install/linux.html
wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
bash Anaconda3-2023.09-0-Linux-x86_64.sh conda

# 回车&&yes
bash

# 升级最新conda
conda update conda

# 升级最新anaconda
conda update anaconda

# create env 创建环境
conda create -n sd python=3.10
conda activate sd

# show env 查看环境
conda info -e

# delete env 删除环境
# conda remoave -n sd --all

# download sd 下载 webui
# git clone https://ghproxy.com/https://github.com/AUTOMATIC1111/stable-diffusion-webui # 连不上用代理
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui

# accelerate pytorch torch 下载过慢可使用腾讯源
# pip install -i https://mirrors.cloud.tencent.com/pypi/simple torch
# 阿里:http://mirrors.aliyun.com/pypi/simple/
# 豆瓣:http://pypi.douban.com/simple/
# 清华:https://pypi.tuna.tsinghua.edu.cn/simple/
# 中科大:https://pypi.mirrors.ustc.edu.cn/simple/
# 中科大:http://pypi.mirrors.ustc.edu.cn/simple/

# install depend 安装依赖
# torchvision xformers相关的问题较多,先清理
pip uninstall torch torchvision xformers torchaudio -y
sudo apt-get install libgoogle-perftools4 libtcmalloc-minimal4 -y
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# pip install xformers

############################################################################################
## --xformers 一个可选的参数,它会启用Codeformer功能,这是一个可以生成和优化代码的人工智能模型。
## --listen 一个可选的参数,它会使服务器监听网络连接,这样本地网络或互联网上的其他计算机就可以访问Web UI。
## --port 一个可选的参数,它会指定服务器监听的端口号。默认值是7860,但如果该端口已被占用,可以使用其他端口。
## --share 一个可选的参数,它会使用Gradio的共享功能,生成一个可以从外部网络访问的URL。这是在Colab等在线平台上使用Web UI的一种方法。
## --enable-insecure-extension-access 一个可选的参数,它会允许Web UI访问一些不安全的扩展程序,例如运行自定义代码或使用ngrok。
## --disable-safe-unpickle 一个可选的参数,它会禁用对PyTorch模型的恶意代码检查。这可能会提高加载模型的速度,但也会增加安全风险。
############################################################################################
bash webui.sh --listen --xformers --port 7860 --enable-insecure-extension-access

异常处理

Style database not found: /data/AI/stable-diffusion-webui/styles.csv

styles.csv 下载后放入提示位置即可。

ImportError: Using SOCKS proxy

如果bash webui.sh运行中出现错误提示,证明当前session环境变量设置了代理,在运行webui.sh前先运行unset https_proxy http_proxy all_proxy

1
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.

Cannot locate TCMalloc (improves CPU memory usage)

如果出现红字错误提醒:Cannot locate TCMalloc (improves CPU memory usage),是因为系统缺少 libgoogle-perftools4 和 libtcmalloc-minimal4 这两个库,它们可以提高 CPU 的内存使用效率。可以通过以下命令安装它们:

1
sudo apt-get install libgoogle-perftools4 libtcmalloc-minimal4 -y

no module ‘xformers’. Processing without…

若出现以下提示,在启动命令添加--xformers参数,以强制使用xformers模块:bash webui.sh --xformers

1
2
3
4
Launching Web UI with arguments:
no module 'xformers'. Processing without...
no module 'xformers'. Processing without...
No module 'xformers'. Proceeding without it.

Running on local URL: http://127.0.0.1:7860

如果监听端口需要改为0.0.0.0,在启动命令添加--listen参数,将监听改为0.0.0.0bash webui.sh --listen

安装双语插件

由于SD WebUI的扩充功能发展太快,翻译可能跟不上,建议另外安装双语对照 sd-webui-bilingual-localization,同时显示中文和英文的文本,这样看教学时就不会找无按钮了。

双语扩充功能安装方法:在Extensions页面按Install from URL,填入https://github.com/journey-ad/sd-webui-bilingual-localization,再按Install

在激活双语扩充功能前,要到Settings → User interface → Localization设为None再重启WebUI才会生效。

AssertionError: extension access disabled because of command line flags

如果安装插件时提示:AssertionError: extension access disabled because of command line flags,以在启动 WebUI 的时候添加一个参数 --enable-insecure-extension-access,或者在 webui-user.sh 的 export COMMANDLINE_ARGS 参数中增加以下参数 --enable-insecure-extension-access

常用 model

主模型 Stable-diffusion

SD1.5 [基础模型,生成各种风格的图像]

1
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt -P models/Stable-diffusion/

pastel-Mix [生成柔和色彩的二次元风格的图像]

1
wget https://civitai.com/api/download/models/6297 -O models/Stable-diffusion/pastelMixStylizedAnime_pastelMixPrunedFP16.safetensors

MIX-Pro-V3 [生成写实风格的图像,适合人物、风景、动物等]

1
wget https://civitai.com/api/download/models/8511 -O models/Stable-diffusion/mixProV3_v3.safetensors

chilloutmix [生成清新风格的图像,适合人物、风景、动物等]

1
wget https://civitai.com/api/download/models/11745 -O models/Stable-diffusion/chilloutmix_NiPrunedFp32Fix.safetensors

Cetus-Mix [生成海洋生物和水下风景的图像]

1
wget https://civitai.com/api/download/models/18496 -O models/Stable-diffusion/cetusMix_cetusVersion3.safetensors

MeinaMix [生成美女风格的图像,适合人物、服装、化妆等]

1
wget https://civitai.com/api/download/models/16925 -O models/Stable-diffusion/meinamix_meinaV7.safetensors

Counterfeit-V2.5 [生成仿真风格的图像,适合人物、风景、动物等]

1
wget https://civitai.com/api/download/models/7425 -O models/Stable-diffusion/CounterfeitV25_25.safetensors

ligneClaireAnime-V1 [生成线条清晰的二次元风格的图像]

1
wget https://civitai.com/api/download/models/4279 -O models/Stable-diffusion/ligneClaireAnime_v1.safetensors

AnythingAndEverything [生成各种风格的图像,是一个通用的模型]

1
wget https://civitai.com/api/download/models/8365 -O models/Stable-diffusion/anythingAndEverything_anythingAndEverythingVer.safetensors

VAE模型 滤镜和微调使用

Pastel-Waifu-Diffusion [增加柔和色彩的效果]

1
wget https://civitai.com/api/download/models/6297?type=VAE -O models/VAE/pastel-waifu-diffusion.vae.pt

kl-f8-anime2 [增加二次元风格的效果]

1
wget https://civitai.com/api/download/models/8511?type=VAE -O models/VAE/kl-f8-anime2.ckpt

Lora模型 微调使用

moxin [固定墨心风格的效果]

1
wget https://civitai.com/api/download/models/14856 -O models/Lora/Moxin_10.safetensors

fashion-gir [固定时尚女孩风格的效果]

1
wget https://civitai.com/api/download/models/18070 -O models/Lora/fashionGirl_v47.safetensors

line [固定线条风格的效果]

1
wget https://civitai.com/api/download/models/19075 -O models/Lora/animeLineartStyle_v20Offset.safetensors

eyes [固定眼睛风格的效果]

1
2
wget https://civitai.com/api/download/models/6433 -O models/Lora/eyeLora_eyesV10.safetensors
wget https://civitai.com/api/download/models/19859 -O models/Lora/animeTarotCardArtStyleLora_v20Offset.safetensors

控制模型

control_canny [增加边缘检测的效果]

1
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors -P extensions/sd-webui-controlnet/models/

control_depth [增加深度检测的效果]

1
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors -P extensions/sd-webui-controlnet/models/

control_openpose [增加人体姿态检测的效果]

1
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors -P extensions/sd-webui-controlnet/models/

control_hed [增加全局边缘检测的效果]

1
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_hed-fp16.safetensors -P extensions/sd-webui-controlnet/models/

control_mlsd [增加多尺度线条检测的效果]

1
wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_mlsd-fp16.safetensors -P extensions/sd-webui-controlnet/models/

安装yt-dlp

1
2
brew install yt-dlp
brew install ffmpeg

查看需要下载的视频信息

1
2
3
yt-dlp -F [视频链接]
-F #查看视频格式构成
--proxy [系统代理] #填写你的系统代理设置,如果使用全局模式可不使用此语句。

效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[liudongkai@MBPR DIR]$ yt-dlp -F 'https://www.youtube.com/watch?v=BfKhREVFLkQ'
[youtube] BfKhREVFLkQ: Downloading webpage
[youtube] BfKhREVFLkQ: Downloading android player API JSON
[info] Available formats for BfKhREVFLkQ:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27 0 │ mhtml │ images storyboard
sb1 mhtml 80x45 0 │ mhtml │ images storyboard
sb0 mhtml 160x90 0 │ mhtml │ images storyboard
139 m4a audio only 2 │ 14.75MiB 49k https │ audio only mp4a.40.5 49k 22k low, m4a_dash
249 webm audio only 2 │ 14.75MiB 49k https │ audio only opus 49k 48k low, webm_dash
250 webm audio only 2 │ 19.28MiB 64k https │ audio only opus 64k 48k low, webm_dash
140 m4a audio only 2 │ 39.16MiB 129k https │ audio only mp4a.40.2 129k 44k medium, m4a_dash
251 webm audio only 2 │ 37.87MiB 125k https │ audio only opus 125k 48k medium, webm_dash
17 3gp 176x144 6 1 │ 24.10MiB 80k https │ mp4v.20.3 80k mp4a.40.2 0k 22k 144p
394 mp4 256x144 25 │ 21.49MiB 71k https │ av01.0.00M.08 71k video only 144p, mp4_dash
160 mp4 256x144 25 │ 28.80MiB 95k https │ avc1.4d400c 95k video only 144p, mp4_dash
278 webm 256x144 25 │ 27.91MiB 92k https │ vp9 92k video only 144p, webm_dash
395 mp4 426x240 25 │ 42.74MiB 141k https │ av01.0.00M.08 141k video only 240p, mp4_dash
133 mp4 426x240 25 │ 64.43MiB 213k https │ avc1.4d4015 213k video only 240p, mp4_dash
242 webm 426x240 25 │ 53.42MiB 177k https │ vp9 177k video only 240p, webm_dash
396 mp4 640x360 25 │ 77.45MiB 256k https │ av01.0.01M.08 256k video only 360p, mp4_dash
134 mp4 640x360 25 │ 133.02MiB 440k https │ avc1.4d401e 440k video only 360p, mp4_dash
18 mp4 640x360 25 2 │ 176.85MiB 585k https │ avc1.42001E 585k mp4a.40.2 0k 44k 360p
243 webm 640x360 25 │ 94.81MiB 313k https │ vp9 313k video only 360p, webm_dash
397 mp4 854x480 25 │ 135.38MiB 448k https │ av01.0.04M.08 448k video only 480p, mp4_dash
135 mp4 854x480 25 │ 252.89MiB 836k https │ avc1.4d401e 836k video only 480p, mp4_dash
244 webm 854x480 25 │ 163.98MiB 542k https │ vp9 542k video only 480p, webm_dash
22 mp4 1280x720 25 2 │ ~562.06MiB 1815k https │ avc1.64001F 1815k mp4a.40.2 0k 44k 720p
398 mp4 1280x720 25 │ 273.87MiB 906k https │ av01.0.05M.08 906k video only 720p, mp4_dash
136 mp4 1280x720 25 │ 510.01MiB 1686k https │ avc1.4d401f 1686k video only 720p, mp4_dash
247 webm 1280x720 25 │ 308.25MiB 1019k https │ vp9 1019k video only 720p, webm_dash
399 mp4 1920x1080 25 │ 478.48MiB 1582k https │ av01.0.08M.08 1582k video only 1080p, mp4_dash
137 mp4 1920x1080 25 │ 961.41MiB 3179k https │ avc1.640028 3179k video only 1080p, mp4_dash
248 webm 1920x1080 25 │ 517.76MiB 1712k https │ vp9 1712k video only 1080p, webm_dash

从结果中可知最佳画质视频ID为mp4格式的137和webm格式的248(纯视频无音轨),最佳音轨ID为m4a格式的140和webm格式的251(纯音轨无视频)。如果你认为720p已经满足需求,则只下载ID22也可(已经包含视频和音轨)。

以webm为例,将最高质量的webm视频和webm音轨进行合并。

下载音视频并合并

1
2
3
4
5
6
yt-dlp -f [下载ID] [代理配置] [视频链接] [合并语句] [外部下载器选择] [下载器参数]
-f [id] #选择下载内容,注意和 -F 区分。以webm为例,可使用248+251,如果你只下载720p则填写22就好,后面的合并语句可不填写。
--proxy #代理配置 见前文
--merge-output-format [合并输出格式] #合并时可使用的容器格式,以“/”分隔,例如“mp4/mkv”。如果不需要合并,则忽略。(目前支持:avi、flv、mkv、mov、mp4、webm)
--downloader [指定外部下载器] #外部下载器名称或路径,目前支持原生、aria2c、avconv、axel、curl、ffmpeg、httpie、wget。
--downloader-args [下载器名称]:"[下载器配置]"

效果

1
2
3
4
5
6
7
8
9
10
11
[liudongkai@MBPR DIR]$ yt-dlp -f 248+251 'https://www.youtube.com/watch?v=BfKhREVFLkQ' --merge-output-format webm
[youtube] BfKhREVFLkQ: Downloading webpage
[youtube] BfKhREVFLkQ: Downloading android player API JSON
[info] BfKhREVFLkQ: Downloading 1 format(s): 248+251
[download] Destination: ENG SUB《陈情令 The Untamed》EP01——主演:肖战、王一博、孟子义 [BfKhREVFLkQ].f248.webm
[download] 100% of 517.76MiB in 01:45 at 4.91MiB/s
[download] Destination: ENG SUB《陈情令 The Untamed》EP01——主演:肖战、王一博、孟子义 [BfKhREVFLkQ].f251.webm
[download] 100% of 37.87MiB in 00:08 at 4.71MiB/s
[Merger] Merging formats into "ENG SUB《陈情令 The Untamed》EP01——主演:肖战、王一博、孟子义 [BfKhREVFLkQ].webm"
Deleting original file ENG SUB《陈情令 The Untamed》EP01——主演:肖战、王一博、孟子义 [BfKhREVFLkQ].f248.webm (pass -k to keep)
Deleting original file ENG SUB《陈情令 The Untamed》EP01——主演:肖战、王一博、孟子义 [BfKhREVFLkQ].f251.webm (pass -k to keep)

下载完成后ffmpeg合并视频和音轨,输出至你的cmd的当前路径。

安装youtubedr

1
2
brew install youtubedr
brew install ffmpeg

查看需要下载的视频信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[liudongkai@MBPR DIR]$ youtubedr info 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

Title: 第五季 | 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】
Author: 畫江湖動畫 Drawing Jianghu
Duration: 1m3s

+------+-----+---------+---------+----------+-----------+---------+--------------------------------------------+
| ITAG | FPS | VIDEO | AUDIO | AUDIO | SIZE [MB] | BITRATE | MIMETYPE |
| | | QUALITY | QUALITY | CHANNELS | | | |
+------+-----+---------+---------+----------+-----------+---------+--------------------------------------------+
| 271 | 25 | 1080p | | 0 | 17.2 | 2298678 | video/webm; codecs="vp9" |
| 400 | 25 | 1080p | | 0 | 15.5 | 2075227 | video/mp4; codecs="av01.0.08M.08" |
| 137 | 25 | 1080p | | 0 | 11.5 | 1540933 | video/mp4; codecs="avc1.640028" |
| 248 | 25 | 1080p | | 0 | 9.3 | 1246099 | video/webm; codecs="vp9" |
| 399 | 25 | 1080p | | 0 | 7.3 | 983101 | video/mp4; codecs="av01.0.08M.08" |
| 247 | 25 | 720p | | 0 | 5.3 | 710126 | video/webm; codecs="vp9" |
| 136 | 25 | 720p | | 0 | 4.6 | 613055 | video/mp4; codecs="avc1.4d401f" |
| 398 | 25 | 720p | | 0 | 4.2 | 562648 | video/mp4; codecs="av01.0.05M.08" |
| 22 | 25 | 720p | medium | 2 | 5.6 | 742192 | video/mp4; codecs="avc1.64001F, mp4a.40.2" |
| 135 | 25 | 480p | | 0 | 2.7 | 356167 | video/mp4; codecs="avc1.4d401e" |
| 244 | 25 | 480p | | 0 | 2.9 | 382376 | video/webm; codecs="vp9" |
| 18 | 25 | 360p | low | 2 | 3.6 | 487537 | video/mp4; codecs="avc1.42001E, mp4a.40.2" |
| 397 | 25 | 480p | | 0 | 2.2 | 298541 | video/mp4; codecs="av01.0.04M.08" |
| 134 | 25 | 360p | | 0 | 1.5 | 198119 | video/mp4; codecs="avc1.4d4015" |
| 243 | 25 | 360p | | 0 | 1.6 | 216536 | video/webm; codecs="vp9" |
| 396 | 25 | 360p | | 0 | 1.2 | 165822 | video/mp4; codecs="av01.0.01M.08" |
| 133 | 25 | 240p | | 0 | 0.7 | 100255 | video/mp4; codecs="avc1.4d400d" |
| 242 | 25 | 240p | | 0 | 0.8 | 103754 | video/webm; codecs="vp9" |
| 251 | 0 | | medium | 2 | 0.9 | 117014 | audio/webm; codecs="opus" |
| 140 | 0 | | medium | 2 | 1.0 | 129567 | audio/mp4; codecs="mp4a.40.2" |
| 395 | 25 | 240p | | 0 | 0.6 | 86192 | video/mp4; codecs="av01.0.00M.08" |
| 160 | 25 | 144p | | 0 | 0.4 | 47400 | video/mp4; codecs="avc1.4d400b" |
| 250 | 0 | | low | 2 | 0.4 | 58873 | audio/webm; codecs="opus" |
| 278 | 25 | 144p | | 0 | 0.4 | 55883 | video/webm; codecs="vp9" |
| 394 | 25 | 144p | | 0 | 0.4 | 48707 | video/mp4; codecs="av01.0.00M.08" |
| 249 | 0 | | low | 2 | 0.3 | 44740 | audio/webm; codecs="opus" |
+------+-----+---------+---------+----------+-----------+---------+--------------------------------------------+
  • 第三列的Video Quality,就是你想要下载的视频质量,也就是清晰度
  • 最后一列的MIMETYPE告诉你视频的文件类型,一般就选mp4

下载视频

1
youtubedr download -q 271 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

这只是下载了视频。。还没有下载音频!!
第五列 AUDIO CHANNELS 找那些为2的行,
第四行 AUDIO QUALITY 尽量选medium的,
第三行 VIDEO QUALITY 为空的,
最后一列 MIMETYPE 为audio/mp4,
我们定位到质量最好的音频ITAG为 140。

下载音频

1
youtubedr download -q 140 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

现在下载了一个视频和一个音频。。。还差合并这一步,我们得合并下就大功告成了!!

合并视频与音频

1
2
3
4
# 合并下载的音频与视频
ffmpeg -i '源视频文件.mp4' -i '源音频文件.m4a' -vcodec copy -acodec copy 输出文件.mp4

# 例:ffmpeg -i 'Peru 8K HDR 60FPS (FUHD).mp4' -i 'Peru 8K HDR 60FPS (FUHD).m4a' -vcodec copy -acodec copy output.mp4

Youtube-dl 这套强大的网络影片下载器,目前很多朋友可能会使用一些线上下载YouTube的网站,除了网页上满满的广告之外,还可能会常常遇到画质、音质不佳、下载速度慢,或是根本无法正常下载,毕竟 YouTube 也是随时在改版,虽然 Google 对于下载 YouTube 这件事算睁一只眼闭一只眼,但时不时还是会顺手防堵下载的漏洞。
而 youtube-dl 则是在 GitHub 上公开的开源软体,且他更新的频率相当惊人,几乎每隔几天就会更新,而更新内容大多都是针对各个影音网站的下载支持或功能修正。虽然 youtube-dl 没有 GUI,而是通过终端命令行操作,但非常轻量,且效率极佳。

安装 youtube-dl

请先安装 Homebrew,若你已经装好 Homebrew,则可以透过指令来安装 youtube-dl,打开终端并输入:

1
brew install youtube-dl

安装 ffmpeg

我们下载 YouTube 影片时可能会用到转档、嵌入字幕等功能,这些功能必须安装 ffmpeg 来达成。

1
brew install ffmpeg

运行

如上面所说,youtube-dl 没有GUI,而是通过终端操作,因此在应用程序里是找不到它的,必须使用终端来操作。

下载影片

在 macOS 中,终端预设目录是下载文件夹,但我们一般下载影片通常不会存在预设目录里,因此我们可以先指定下载目录。

选择好下载目录后,在终端输入 youtube-dl,后跟 YouTube 影片网址即可下载,以下载 YouTube 影片 第五季 | 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】 为例:

1
2
3
4
5
[liudongkai@MBPR DIR]$ youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

[youtube] aaIUjeg9MpY: Downloading webpage
[download] Destination: 第五季 _ 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】-aaIUjeg9MpY.mp4
[download] 3.9% of 5.54MiB at 64.92KiB/s ETA 01:23

按下回车之后 youtube-dl 便开始下载,在没有设定任何下载选项的状况下,可以看到这支影片以预设的 WebM 格式下载到下载项目资料夹中。在 YouTube 下载影片,来源的影片文件可能是各种格式、分段或是影音分开,这时通常都是靠 ffmpeg 将其转换为单一的影片文件。

影片转档

刚刚下载的影片是 WebM 格式储存(有时可能是 mov 或 mkv 等等)不过其实 WebM 通常用于网页播放,我们一般在电脑、手机播放或剪辑,其实还是以 mp4 最通用。因此,我们可以在 youtube-dl 下载影片时,在指令后方加入 -f mp4 即可指定下载成 mp4 文件格式:

1
youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' -f mp4

所以 -f 后面的文件格式也可以换成 3gp、aac、flv、m4a、mp3、mp4、ogg、wav、webm 等等。

下载完成的文件,以 YouTube 来说,下载的文件名称就是 影片名称-影片网址的编号.文件格式,如上文案例文件名为:第五季 _ 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】-aaIUjeg9MpY.mp4

指定最高质量下载

YouTube 通常会提供不同分辨率、不同码率的影片文件,我们可以通过指定编码序号进行下载。首先使用 -F 参数查看相关编码序号与质量(注意F为大写)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[liudongkai@MBPR DIR]$ youtube-dl -F 'https://www.youtube.com/watch?v=aaIUjeg9MpY' 
[youtube] aaIUjeg9MpY: Downloading webpage
[info] Available formats for aaIUjeg9MpY:
format code extension resolution note
249 webm audio only tiny 44k , webm_dash container, opus @ 44k (48000Hz), 342.00KiB
250 webm audio only tiny 58k , webm_dash container, opus @ 58k (48000Hz), 450.04KiB
251 webm audio only tiny 117k , webm_dash container, opus @117k (48000Hz), 894.48KiB
140 m4a audio only tiny 129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 990.85KiB
160 mp4 256x106 144p 47k , mp4_dash container, avc1.4d400b@ 47k, 25fps, video only, 362.21KiB
394 mp4 256x106 144p 48k , mp4_dash container, av01.0.00M.08@ 48k, 25fps, video only, 372.20KiB
278 webm 256x106 144p 55k , webm_dash container, vp9@ 55k, 25fps, video only, 427.04KiB
395 mp4 426x178 240p 86k , mp4_dash container, av01.0.00M.08@ 86k, 25fps, video only, 658.65KiB
133 mp4 426x178 240p 100k , mp4_dash container, avc1.4d400d@ 100k, 25fps, video only, 766.11KiB
242 webm 426x178 240p 103k , webm_dash container, vp9@ 103k, 25fps, video only, 792.85KiB
396 mp4 640x266 360p 165k , mp4_dash container, av01.0.01M.08@ 165k, 25fps, video only, 1.24MiB
134 mp4 640x266 360p 198k , mp4_dash container, avc1.4d4015@ 198k, 25fps, video only, 1.48MiB
243 webm 640x266 360p 216k , webm_dash container, vp9@ 216k, 25fps, video only, 1.62MiB
397 mp4 854x356 480p 298k , mp4_dash container, av01.0.04M.08@ 298k, 25fps, video only, 2.23MiB
135 mp4 854x356 480p 356k , mp4_dash container, avc1.4d401e@ 356k, 25fps, video only, 2.66MiB
244 webm 854x356 480p 382k , webm_dash container, vp9@ 382k, 25fps, video only, 2.85MiB
398 mp4 1280x532 720p 562k , mp4_dash container, av01.0.05M.08@ 562k, 25fps, video only, 4.20MiB
136 mp4 1280x532 720p 613k , mp4_dash container, avc1.4d401f@ 613k, 25fps, video only, 4.57MiB
247 webm 1280x532 720p 710k , webm_dash container, vp9@ 710k, 25fps, video only, 5.30MiB
399 mp4 1920x798 1080p 983k , mp4_dash container, av01.0.08M.08@ 983k, 25fps, video only, 7.34MiB
248 webm 1920x798 1080p 1246k , webm_dash container, vp9@1246k, 25fps, video only, 9.30MiB
137 mp4 1920x798 1080p 1540k , mp4_dash container, avc1.640028@1540k, 25fps, video only, 11.50MiB
400 mp4 2048x852 1080p 2075k , mp4_dash container, av01.0.08M.08@2075k, 25fps, video only, 15.49MiB
271 webm 2048x852 1080p 2298k , webm_dash container, vp9@2298k, 25fps, video only, 17.15MiB
18 mp4 640x266 360p 487k , avc1.42001E, 25fps, mp4a.40.2 (44100Hz), 3.64MiB
22 mp4 1280x532 720p 742k , avc1.64001F, 25fps, mp4a.40.2 (44100Hz) (best)

查看输出列表,找到画质音质最好的序号,案例中1920x798分辨率下视频最好的是271,音频最好的是140,得到这两个序号后,可以通过 youtube-dl -f 视频序号+音频序号 进行合并下载,这样下载后,视频和音频会自动合并。

1
2
3
4
5
6
[liudongkai@MBPR DIR]$ youtube-dl -f 271+140 'https://www.youtube.com/watch?v=aaIUjeg9MpY'
[youtube] aaIUjeg9MpY: Downloading webpage
WARNING: You have requested multiple formats but ffmpeg or avconv are not installed. The formats won't be merged.
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: 第五季 _ 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】-aaIUjeg9MpY.f271.webm
[download] 5.8% of 17.15MiB at 942.21KiB/s ETA 00:17

注意:-f 后跟的两个序号需要必须先视频后音频

嵌入字幕

有时 YouTube 影片会有不同语言的 CC 字幕可选择,我们可以透过 youtube-dl 将字幕嵌入到影片中。

首先我们先列出可以下载的字幕,以上文案例为例,在 youtube-dl 下载指令后方加入 –list-subs

1
youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' --list-subs

youtube-dl 分析 YouTube 网页后,在最下方 Available subtitles 列出可用的字幕包含:

  • zh-CN
  • en
  • zh
  • zh-TW

也就是简体中文、英文、中文、中文(台湾)这几种选择。

有关嵌入字幕的 youtube-dl 指令:

1
2
3
4
--write-sub #下载字幕
--embed-sub #嵌入字幕
—-sub-lang zh-CN #指定语言(以简体中文为例)
--all-subs #下载所有字幕(如果要将所有可用的字幕嵌入)

因此如果我们要下载嵌入简体中文字幕的 mp4 影片,指令为:

1
youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' --write-sub --embed-sub --sub-lang zh-CN -f mp4

支援嵌入字幕的影片格式包含:mp4、mkv 以及 webm;与格式工厂、HandBreak 那种将字幕直接写入在影片画面上的方式不同,使用 youtube-dl 嵌入的字幕是可以选择开启或关闭,以及选择不同语言的。此外,语系的代号大小写有别,必须一模一样,例如简体中文 zh-CN 的 CN 一定要是大写,非常重要!

下载完成后,以 QuickTime Player 打开,可以看到出现中文字幕的选项;若是以其他播放软体如 INNA 开启,也是可以选择字幕的,不过每个软件显示情况可能有所不同。

高级应用

指定格式以最优质量下载视频

1
2
3
4
5
6
# 指定视频为mp4格式、音频为m4a格式以最优质量下载youtube视频,其它网站暂未测试,官方说Windows下换单引号为双引号
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

# 或者直接使用默认设置,一般会下载两个webm文件,分别为视频和音频,
# 再自动合并成附带音轨的webm格式视频,测试发现也是最高分辨率,有4K就下4K版本
youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

以最优质量下载音频

1
2
3
4
5
6
7
8
# 默认下载音频为opus格式
youtube-dl -x 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

# 下载mp3格式的音频
youtube-dl -x --audio-format mp3 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

# 最优质量下载音频
youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

下载播放列表中的视频

1
2
3
4
5
6
7
8
# 使用默认,与下载单个视频格式一样
youtbue-dl 'https://www.youtube.com/watch?v=rbxjUvJjFhU&list=PLTQ0CcMHNrjudMnoc2wCxWk0el8AIhWhd'

# 可以使用选项--playlist-start, --playlist-end或者指定某个视频 --playlist-items
# --playlist-items 可设置多个值.如:"--playlist-items 1,2,5 下载1、2、5项

# 下载列表第二个及以后的所有视频
youtube-dl --playstart-start 2 'https://www.youtube.com/watch?v=rbxjUvJjFhU&list=PLTQ0CcMHNrjudMnoc2wCxWk0el8AIhWhd'

限定分辨率下载播放列表中的视频

1
2
# 以最高480P下载列表第3个及以后的所有视频
youtube-dl --playlist-start 3 -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' 'https://www.youtube.com/watch?v=rbxjUvJjFhU&list=PLTQ0CcMHNrjudMnoc2wCxWk0el8AIhWhd'

下载播放列表中视频的音轨

1
2
3
4
# 使用--playlist-start、--playlist-end、--playlist-items来限定

# 最优质量下载播放列表中3-6这四个视频的音频文件,并转换成mp3格式
youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --playlist-start 3 --playlist-end 6 'https://www.youtube.com/watch?v=rbxjUvJjFhU&list=PLTQ0CcMHNrjudMnoc2wCxWk0el8AIhWhd'

调用aria2加速下载

​解决使用youtube-dl默认下载时常常断开连接的问题。

1
youtube-dl --external-downloader aria2c --external-downloader-args "-x 16 -k 1M" 'https://www.youtube.com/watch?v=aaIUjeg9MpY'

参数说明:

1
2
3
4
--external-downloader aria2c # 调用外部下载工具
--external-downloader-args # 外部下载工具指定参数
-x 16 # 启用aria2 16个线程,最多就支持16线程
-K 1M # 指定块的大小

参考:

You can use

1
brew install coreutils

And then whenever you need timeout, use

1
gtimeout

..instead. To explain why here’s a snippet from the Homebrew Caveats section:

Caveats

All commands have been installed with the prefix ‘g’.

If you really need to use these commands with their normal names, you can add a “gnubin” directory to your PATH from your bashrc like:

1
>PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Additionally, you can access their man pages with normal names if you add the “gnuman” directory to your MANPATH from your bashrc as well:

1
>MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

永久使用Parallels Desktop 17

本方法已通过几百名Mac玩家验证,亲测有效,是目前最佳方案!
本方法支持苹果Intel机型,也支持M1机型!支持最新Monterey系统,支持最新的PD17,还可以更新!
本方法可以全新安装,也可以直接启动已经安装好的Win11虚拟机或者Linux虚拟机,不会丢失数据!
本方法联网正常、网银正常、U盾、加密狗等USB设备连接正常,数字证书正常,总之就是官方正版绕过激活而已,所有正版的功能都可以正常使用!

方法一:修改时间

关闭PD软件,完全关闭
修改MacOS系统时间为2021年2月2日
开启PD虚拟机即可继续使用

注:此方法可以把标准版PD自动变成专业版。但时间不正确,会影响访问https的一些网页,可进入虚拟机后恢复正确时间来解决,不会影响虚拟机的运行。

方法二:指令启动

打开终端
输入:prlctl start "虚拟机名称" , 回车后直接进入

注:此方法可以启动若干虚拟机,虚拟机的名称可以在PD控制中心里查看。例如:prlctl start "Windows 11" ,虚拟机暂停后需要重新输入命令,可修改虚拟机暂停时间来解决。

prlctl

方法三:工具引导

工具下载:

注:此方法是目前最佳方法,重启电脑依然可以用,不用改变电脑任何设置,脱离PD激活管控,直接可以进入Windows虚拟机或者Linux虚拟机。以后退出虚拟机后,直接运行以上的小工具进入。虚拟机暂停或者休眠也可以用这个小工具唤醒。

Win11激活方式

1
2
3
4
5
# 逐行执行
slmgr /upk
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr /skms zh.us.to
slmgr /ato

报错故障分析

因为无法验证开发者

第一种情况:首次运行这个小工具,可能会提示文件损坏,或提示无法验证开发者(如下图),记得在系统偏好设置—安全性和隐私中—通用允许这个程序即可

The command is available only in Parallels Desktop for Mac Pro or Business Edition

第二种情况:如果出现以上英文提示框报错,这是你的PD是标准版的,可以右键Docker栏的PD图标,选择关于Parallels Desktop,看是否有Pro Edition的标识,如果没有,就是标准版的,请安装专业版或者商业版的PD。或者用以上教程的第一种方法自动变成专业版,如果还是报错,说明的你的PD被锁定成标准版了。

Failed to get VM config

第三种情况:如果出现以上英文报错,就是你的虚拟机名称并非Windows 10,请关闭或者强行停止win10虚拟机,到PD控制中心重命名,注意大小写和空格。(Win10的标准名字是Windows 10,Win11的标准名字是Windows 11,Ubuntu的标准名字是Ubuntu Linux)

Failed to start the VM

第四种情况:如果出现类似以上的英文报错,说明你的虚拟机系统已经在 后台运行,可以手动运行PD,右键Docker栏的PD图标, 选择控制中心,查看虚拟机系统的运行状态,可以右键电源图标,选择关闭或者停止,然后重新运行我们的工具即可。 另外,如果你的虚拟机设置成融合模式,已经后台运行, 重复运行小工具也可能会有这个报错,建议关闭融合模式。

一、Orchestrator简介

简介

Orchestrator是一款开源对MySQL复制提供高可用、拓扑的可视化管理工具,采用go语言编写,它能够主动发现当前拓扑结构和主从复制状态,支持MySQL主从复制拓扑关系的调整、支持MySQL主库故障自动切换(failover)、手动主从切换(switchover)等功能。

Orchestrator后台依赖于MySQL存储元数据,能够提供Web界面展示MySQL集群的拓扑关系及实例状态,可以通过Web界面可更改MySQL实例的部分配置信息,同时也提供命令行和api接口,以便更加灵活的自动化运维管理。

Orchestrator对MySQL主库的故障切换分为自动切换和手动切换。手动切换又分为recover、force-master-failover、force-master-takeover以及graceful-master-takeover.

相比于MHA,Orchestrator更加偏重于复制拓扑关系的管理,能够实现MySQL任一复制拓扑关系的调整,并在此基础上,实现MySQL高可用。Orchestrator本身也可以部署多个节点,通过raft分布式一致性协议,保证其自身高可用性。

项目地址:https://github.com/github/orchestrator
相关文档:
GitHub的MySQL高可用性实践
MySQL高可用实现:Orchestrator在MyData中的应用与优化
MySQL高可用实现:主从结构下ProxySQL中的读写分离
MySQL高可用复制管理工具 —— Orchestrator使用
Graceful Master Switchover With ProxySQL And Orchestrator

对比

对比项 Orchestrator MHA
高可用 共享后端/raft 自身单点,且仅支持一次自动failover
数据一致性 半同步保证 半同步保证和复制reley_log
优雅主从切换 支持 支持
运维管理 支持可视化、api管理,自动发现复制拓扑,丰富的hooks,故障管理 配置复杂,至少三台MySQL实例
社区活跃 活跃 停止维护

部署

部署结构

选择Orchestrator/raft,后端数据库选择sqlite,命令行工具选择orchestrator-client
可参考:https://github.com/github/orchestrator/blob/master/docs/raft.md
node1:172.16.9.2、node2:172.16.9.3、node3:172.16.9.4

部署过程

当前版本(update:20210909):

版本
orchestrator 3.2.6 epel
orchestrator-client 3.2.6 epel
jq 1.6 epel
oniguruma 6.8.2 epel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# rpm安装
yum -y install orchestrator orchestrator-client jq oniguruma

# 配置orchestrator-client
cat >> /etc/profile.d/orchestrator-client.sh << EOF
ORCHESTRATOR_AUTH_USER=admin
ORCHESTRATOR_AUTH_PASSWORD=admin
ORCHESTRATOR_API="http://172.16.9.2:3000/api http://172.16.9.3:3000/api http://172.16.9.4:3000/api"
EOF

# 启动
cp orchestrator.conf.json /etc
mkdir -p /opt/orchestrator
mkdir -p /opt/orchestrator/raft
mkdir -p /opt/orchestrator/hooks
systemctl start orchestrator


# 访问
orchestrator-client -c raft-leader
http://leader:3000

配置

实例关联配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# orchestrator账号权限
CREATE USER 'orchestrator'@'orch_host' IDENTIFIED BY 'orch_topology_password';
GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orchestrator'@'orch_host';
GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'orch_host'; -- 获取replication的访问凭证
GRANT SELECT ON meta.* TO 'orchestrator'@'%'; -- 获取集群的元数据信息

-- 元数据信息,用于orch的集群信息展示,目前仅作为展示,未直接使用
create database meta;
CREATE TABLE `cluster` (
`anchor` tinyint(4) NOT NULL COMMENT '集群标识',
`cluster_name` varchar(128) NOT NULL DEFAULT '' COMMENT '集群名称',
`cluster_domain` varchar(128) NOT NULL DEFAULT '' COMMENT '集群名称',
PRIMARY KEY (`anchor`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 被监控的实例配置要求
# 配置用于发现从库信息
report_host和report_port

# 用于获取replication的访问凭证
master_info_repository = table

# 缩短故障检测时间 ,注意MASTER_HEARTBEAT_PERIOD的配置,默认为slave_net_timeout的一半,如果MASTER_HEARTBEAT_PERIOD大于slave_net_timeout,会出现主从频繁断开链接,导致MySQL实例错误日志增加的问题
slave_net_timeout = 4
CHANGE MASTER TO MASTER_CONNECT_RETRY=1, MASTER_RETRY_COUNT=86400, MASTER_HEARTBEAT_PERIOD=2;

# 搭配ProxySQL使用还需要默认设置实例read_only=1
# 启用GTID
Percona with GTID: promotable servers must have log_bin and log_slave_updates enabled. Replicas must be using AUTO_POSITION=1