Archive

‘学习笔记’ 分类存档

Ubuntu + Immich + GPU 加速完整部署

背景

之前一直在用群辉的synology photo,只能说还不错,但说不上优秀。因为查找照片不是很好找,不支持AI,外加最近为了让老婆也能直接自行使用otp,把home下面的photos挪到了根目录下,也就变成了共享照片。这个操作之前没操作过,我是直接用命令cp的,导致我之前编辑的人脸数据,以及相册数据都没了……要从1TB的照片和视频中重新把之前的相册聚起来,基本不太可能。所以就想看看是否有支持AI功能的个人相册,让我轻松找到想找的照片,因此才有了这篇文章。

经过查找,immich不错,比较符合我的要求,正好我还有一台老电脑没有卖,直接利旧了~ 我本想是安装黑群晖的,但经过对比后,果断直接linux + immich + gpu硬件加速了;这样除了把照片慢慢挪过去外,其他的一些非重要数据可以也都挪到老电脑上,老电脑直接装一个smb就可以满足我了,等群辉以后有更好的解决方案,到时再看是否回去。

磁盘规划

推荐分离系统盘和数据盘:

格式挂载点用途
NVMe 256GLVM/ext4/系统 + Docker + Immich 数据库/缓存
4T 机械盘ext4/mnt/photos照片/视频存储
1T 机械盘ext4/mnt/backup备份或扩展存储
完整阅读

论文总结:Alibaba HPN: A Data Center Network for Large Language Model Training

之前看完论文就完事了,过了一段时间后,很多细节就会忘记,需要重新看一遍……之前的兄弟习惯很好,看完会总结,忘记就看总结。所以趁着最近阿里发布的最新论文,我也总结下,为了以后复习用。

这篇论文写的很好,讲了很多阿里HPN的基础设施及架构细节,虽然不是全部,但也包含了大部分的内容,很难得。去堆叠部分我没写进去,这个在国内互联网已经很熟了,但目前看国外的互联网以及OCP上,还在讨论如何简化堆叠的双上联问题。论文也提到微软在2023年通过SmartNIC(w/ FPGA)来实现双活。

论文原文:

拓扑

DCN+拓扑

按照论文的说法,HPN是针对之前阿里DCN+架构进行优化演进而来的,DCN+是传统的3层CLOS架构(根据去年阿里发布灵骏的相关文章,架构应该不是这样的,应该更偏向HPN,架构从实践中演进~ ?):

完整阅读

RDMA测试脚本 by ChatGPT?!

背景

之前一直看到有人谈论用Chatgpt编程序,设计产品,做游戏,反正很神就是了。在我使用过程中,并没有感觉那么神,也许是提示字给的不标准吧。最近正好有个机会,需要搞一个All2all的测试脚本,可自动化提供大规模All2All的测试任务。因此就测试了下GPT的能力。

目前用的是最新版本GPT4o(自行花了20美金),整体使用下来,GPT确实可以协助编程,只是沟通起来比较费劲和费时间……如果真正要搞一个项目,就不太现实了。估计还要再迭代几轮吧。即使是最牛的GPT4o,在沟通交互中,仍然会有以下问题:

  • 强调过的内容,可能要重复说3-4遍,GPT才真的听进去了,但过了几轮后可能就又忘记了,比如”不着急出优化代码,先讨论问题“;
  • 为了提升效率,对于一些小优化,其实可以提供代码片段,但GPT有时候提供的片段跟代码本身没有强联系;
  • 为了排障,在脚本中增加了一些提示信息(增加执行log)。后面随着不断迭代优化,就会发现有些功能消失了。这种现象很明显,很可能会遇到之前解决过的问题再次出现……
完整阅读

NVSwitch/NVLink Interconnect

作为一个网工,每次查看Nvidia NVSwitch/NVLink的转发性能,都需要做两件事:1. NVLink和Serdes之间的映射关系;2. 把性能指标从存储的双向转发视角转换成单向转发,着实麻烦。再加上不同世代的GPU与NVLink/NVSwitch互联方案又有些不同,所以本篇就从网工的视角梳理下NVS3和NVS4以及后续NVS与不同世代GPU互联时的能力及方案,方便日后查阅。

NVS Compare

首先看下NVS不同版本间的参数对比:

NVS VerNVS3NVS4NVS5NVS6
对应GPUH100B200Rubin(R200)Rubin Ultra
Transistors25.1B / TSMC 4N~50B / TSMC 4NPTBDTBD
Die Size294mm2~800mm2TBDTBD
Pacakage50mm x 50mm (2645 balls)TBDTBDTBD
NVLlink VerNVLink4NVLINK5NVLINK6NVLINK7
SerDes112Gbps/PAM4224Gbps/PAM4224Gbps/PAM4
Per NVLink200Gbps(2 x 112Gbps)400Gbps(2 x 224Gbps)400Gbps(1 x 448Gbps BiDirectional SerDes)
Total NVLinks647272(只用了36)
Throughput12.8Tbps28.8Tbps28.8Tbps
NVLinks/GPU 18 x 200 = 3.6Tbps
(3.6 x 2) / 8 = 900GB
18 x 400 = 7.2Tbps
(7.2 x 2) / 8 = 1.8TB
36 x 400(1 x 448Gbps BiDirectional SerDes) = 14.4Tbps
(14.4 x 2) / 8 = 3.6TB
完整阅读

SONiC 开发相关问题汇总

Check attribute is standard or Customize ?

问题是这样的,我们需要确认一个ECMP的attribute是否是标准的Sonic Sai。具体步骤如下:

root@Franks-MacBook-Pro Documents # git clone -b v1.11 https://github.com/opencomputeproject/SAI
root@Franks-MacBook-Pro Documents # cd SAI
root@Franks-MacBook-Pro SAI # cd inc 
root@Franks-MacBook-Pro inc # grep -rn 'SAI_SWITCH_ATTR_ECMP'
./saiswitch.h:185: * @brief Attribute data for #SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM
./saiswitch.h:697:    SAI_SWITCH_ATTR_ECMP_MEMBERS,
./saiswitch.h:1226:    SAI_SWITCH_ATTR_ECMP_HASH,
./saiswitch.h:1433:    SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM,
./saiswitch.h:1442:    SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED,
./saiswitch.h:1454:    SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET,
./saiswitch.h:1468:    SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH,
./saiswitch.h:1479:    SAI_SWITCH_ATTR_ECMP_HASH_IPV4,
./saiswitch.h:1490:    SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4,
./saiswitch.h:1501:    SAI_SWITCH_ATTR_ECMP_HASH_IPV6,
./saiswitch.h:2771:     * @brief Number of ECMP Members configured. SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT takes precedence over SAI_KEY_NUM_ECMP_GROUPS string. Default value is same as SAI_SWITCH_ATTR_ECMP_MEMBERS.
./saiswitch.h:2777:    SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT,

How to check SAI Attribute meaning

可以通过这个link进行社区SAI Attributes的检索以及确认其含义:https://sonic.software/sai/globals_s.html

How to check SAI Attribute

梳理过SAI Attribute:社区+自定义

如果梳理过自己需要的SAI Attribute,这里包含自定义和社区SAI。对于社区部分的SAI,按社区开发就好。对于自定义的部分,需要梳理需求文档,让厂商根据需求文档进行开发。

没有梳理过SAI Attribute

此时两个步骤,其一是使用sairec文件来确认使用的sai attributes,但这里有局限性,最好从现网使用的设备上获取sairec文件,这样被调用的attributes都会被记录在sairec文件中(如果某些特性在这台设备上没有启用,那么sairec文件中也是没有记录的),可以直接从下面路径中获取:

root@sonic:/var/log/swss# ls
sairedis.rec        sairedis.rec.2.gz  sairedis.rec.5.gz  sairedis.rec.8.gz
sairedis.rec.1      sairedis.rec.3.gz  sairedis.rec.6.gz  sairedis.rec.9.gz
sairedis.rec.10.gz  sairedis.rec.4.gz  sairedis.rec.7.gz  swss.rec

其次,可以从下面目录中找到对应的sai头文件,然后与社区的头文件进行对比,可以统计出哪些是自定义sai:

xxxx@Franks-MacBook-Pro SAI % ls -l
total 248
-rw-r--r--   1 root  staff  106691  2 28  2024 Doxyfile
-rw-r--r--   1 root  staff    2700  2 28  2024 LICENSE.txt
-rw-r--r--   1 root  staff    1785  2 28  2024 Makefile
-rw-r--r--   1 root  staff     463  2 28  2024 README.md
-rw-r--r--   1 root  staff     731  2 28  2024 azure-pipelines.yml
drwxr-xr-x   9 root  staff     288  2 28  2024 bm
drwxr-xr-x   3 root  staff      96  2 28  2024 data
drwxr-xr-x  14 root  staff     448  2 28  2024 debian
drwxr-xr-x  80 root  staff    2560  2 28  2024 doc
drwxr-xr-x   6 root  staff     192  2 28  2024 experimental
drwxr-xr-x   3 root  staff      96  2 28  2024 flexsai
drwxr-xr-x  54 root  staff    1728  2 28  2024 inc
drwxr-xr-x  35 root  staff    1120  2 28  2024 meta
drwxr-xr-x  41 root  staff    1312  2 28  2024 ptf
drwxr-xr-x  10 root  staff     320  2 28  2024 test
blonde teen swallows load.xxx videos