找回密码
 加入我们
搜索
      
查看: 10255|回复: 16

[显卡] [DL使用指南2] 千年级3A大作

[复制链接]
发表于 2023-1-20 21:13 | 显示全部楼层 |阅读模式
本帖最后由 T.JOHN 于 2023-2-24 09:37 编辑

老样子,正确排版在此

前回CUDA环境部署和性能测试,此教程为部署Katago,目前最流行的开源AI围棋软件。完成后你可以出租算力供学棋的人士使用,也可以用于培养自家孩子等,如此让AI走进人们生活,变得更加实用。

围棋AI软件分为前端和后端,Katago是后端,作为开源软件,依旧在积极更新。国内两大围棋AI,星阵抄的就是它,绝艺也不如它,而参加AI围棋大赛的普遍多为Katago魔改。

目前Katago能够充分调用8卡3090/4090,运行模式堪比当年7970挖比特币。与之前那篇文章的AI性能测试程序大相径庭,Katago只占500M显存不到,但核心却是火力全开,永远拉满TDP

这里给一个Katago gpu benchmark,来自github,以TensorRT为后端的结果如下(忽略1080ti,它没tensor core)

可见拥有大量电阻丝的A100远超3090,这意味着什么?那就是4090 450w~600w的TDP终有用武之地!我相信此时90T的算力可以火力全开,充分利用,绝对不再喂狗!而改进过的tensor core更是可以大放异彩

实战中8卡3090对阵单卡3090即可吊打,可以充分满足土豪的优越感,有了胜负之后不再像3Dmark这种跑分软件空有数字,让人虚空而食之无味。

katago于2023年1月6日发布了1.12.x版本
  • 增加了对新的和改进的神经网络架构的支持
  • 新增B18C384权重。相比之前的权重如b40c256和b60c320,现在这个b18c384权重强度和b60c256强度差不多,但速度甚至和b40c256差不多块
    • 这里稍微普及下权重概念,就是函数的系数。目前AI干的活本质就是y=kx+b的矩阵乘法,k和b就是系数。b是block,c是channel。
  • 训练工具从tensorflow换成了pytorch

显然虽然alpha GO/Zero已经退役了,但围棋AI并没有停止发展,而是继续前行,配合强大的算力,水平也越来越高。根据katago官网的权重,目前最强的权重elo可达13.5k+,而2020年时不过4-5k的样子。这个数字官方虽然称和其他软件及人类没可比性,但也可以参考。目前人类最强棋手申真胥的elo为3800-3900,也是除轩工智能外下棋最接近AI的人。为了让大家对elo有更直接的概念,大致上elo差200,对弈的胜率大概就是82~91开。电子竞技游戏普遍采取这种算法,比如魔兽世界竞技场。

除了Katago这个后端,我们还需要一个前端,Katago官网推荐的有KaTrain和Lizzie等。国内有人魔改了lizzie,功能更强大,也更友善易用,同样发布在github上,我将以他的版

本为例作为部署教程的前端
  • Katago安装和调优

    • 由于katago的预编译二进制未必匹配你的系统环境,比如它需要libzip5,debian11上只有libzip4。CUDA版本和TensorRT版本也未必对的上,因此编译安装以获取最强性能。这里参考官方手册
      • 先安装cmake和git
        apt install cmake git
      • 克隆仓库,获取源代码
        git clone https://github.com/lightvector/KataGo.git
      • 进入编译目录
        cd KataGo/cpp
      • 使用tensorrt
        cmake . -DUSE_BACKEND=tensorrt -DCMAKE_CXX_FLAGS='-march=native'
        其他编译选项:-DUSE_BACKEND=OPENCL以opencl编译,A卡和10系以前卡的福音。-DUSE_BACKEND=EIGEN这个是CPU专用。-DUSE_TCMALLOC=1使用google开发的内存管理替代系统管理。-DBUILD_DISTRIBUTED=1贡献自己的数据给公众。-DUSE_AVX2=1启用AVX2。我用-march=native替代了avx2,根据本机CPU支持的指令集自适应识别。
      • 开始编译,等待一段时间后katago就是最后得到的二进制文件,需要和权重文件及配置文件放在一起配合使用
        Make
    • github下载预训练的权重 B**C***xxx.bin.gz
    • github下载预编译的二进制压缩包katago-v1.1x.x-***.zip,并提取配置文件default_gtp.cfg
    • 测试并且调优,输入以下命令跑分
      ./katago benchmark -model b18c384nbt-uec.bin.gz
      得到如下结果,其中nnEvals就是跑分的速度,并根据它推荐的线程数量,在defualt_gtp.cfg中修改为相同的数值,比如本例为
      Ordered summary of results:

      numSearchThreads =  5: 10 / 10 positions, visits/s = 768.55 nnEvals/s = 654.13 nnBatches/s = 262.88 avgBatchSize = 2.49 (10.5 secs) (EloDiff baseline)
      numSearchThreads = 10: 10 / 10 positions, visits/s = 1370.05 nnEvals/s = 1143.12 nnBatches/s = 231.34 avgBatchSize = 4.94 (5.9 secs) (EloDiff +204)
      numSearchThreads = 12: 10 / 10 positions, visits/s = 1520.07 nnEvals/s = 1265.04 nnBatches/s = 213.75 avgBatchSize = 5.92 (5.3 secs) (EloDiff +240)
      numSearchThreads = 16: 10 / 10 positions, visits/s = 1478.80 nnEvals/s = 1283.18 nnBatches/s = 163.62 avgBatchSize = 7.84 (5.5 secs) (EloDiff +222)
      numSearchThreads = 20: 10 / 10 positions, visits/s = 1668.26 nnEvals/s = 1449.97 nnBatches/s = 148.65 avgBatchSize = 9.75 (4.9 secs) (EloDiff +262)
      numSearchThreads = 24: 10 / 10 positions, visits/s = 1649.51 nnEvals/s = 1453.94 nnBatches/s = 124.69 avgBatchSize = 11.66 (5.0 secs) (EloDiff +251)
      numSearchThreads = 32: 10 / 10 positions, visits/s = 1835.77 nnEvals/s = 1658.07 nnBatches/s = 107.82 avgBatchSize = 15.38 (4.5 secs) (EloDiff +281)
      numSearchThreads = 40: 10 / 10 positions, visits/s = 1879.08 nnEvals/s = 1722.75 nnBatches/s = 89.39 avgBatchSize = 19.27 (4.5 secs) (EloDiff +279)
      numSearchThreads = 48: 10 / 10 positions, visits/s = 1885.12 nnEvals/s = 1761.32 nnBatches/s = 76.42 avgBatchSize = 23.05 (4.5 secs) (EloDiff +268)
      numSearchThreads = 64: 10 / 10 positions, visits/s = 1931.60 nnEvals/s = 1849.76 nnBatches/s = 61.38 avgBatchSize = 30.14 (4.4 secs) (EloDiff +256)
      numSearchThreads = 80: 10 / 10 positions, visits/s = 1938.04 nnEvals/s = 1898.51 nnBatches/s = 49.97 avgBatchSize = 38.00 (4.5 secs) (EloDiff +234)


      Based on some test data, each speed doubling gains perhaps ~250 Elo by searching deeper.
      Based on some test data, each thread costs perhaps 7 Elo if using 800 visits, and 2 Elo if using 5000 visits (by making MCTS worse).
      So APPROXIMATELY based on this benchmark, if you intend to do a 5 second search:
      numSearchThreads =  5: (baseline)
      numSearchThreads = 10:  +204 Elo
      numSearchThreads = 12:  +240 Elo
      numSearchThreads = 16:  +222 Elo
      numSearchThreads = 20:  +262 Elo
      numSearchThreads = 24:  +251 Elo
      numSearchThreads = 32:  +281 Elo (recommended)
      numSearchThreads = 40:  +279 Elo
      numSearchThreads = 48:  +268 Elo
      numSearchThreads = 64:  +256 Elo
      numSearchThreads = 80:  +234 Elo

      If you care about performance, you may want to edit numSearchThreads in default_gtp.cfg based on the above results!
      If you intend to do much longer searches, configure the seconds per game move you expect with the '-time' flag and benchmark again.
      If you intend to do short or fixed-visit searches, use lower numSearchThreads for better strength, high threads will weaken strength.
      If interested see also other notes about performance and mem usage in the top of default_gtp.cfg

      2023-01-18 19:54:40+0800: GPU -1 finishing, processed 32333 rows 1243 batches
      edit: (2023/2/24)更新4090算力:96num - 6902.92 visits,对比32num - 1835 visits,性能提升3.76倍,基本等于cuda和频率提升的幅度,可能随着katago的后续开发,这个差距会变大,因为4090的tensor core有改进
  • Lizzie安装和调优
    github下载 lizzie others system w/o engine.zip 这里我们已经有引擎,所以下载无引擎版本即可

    • 下载预编译包解压后,进入软件目录,在终端中输入下面命令即可打开
      java -jar lizzie-yzy2.5.1-shaded.jar
    • 初始化引擎,如果lizzie-yzy2.5.1-shaded.jar和katago及其配置文件和权重放在同一文件夹下,输入如下参数即可导入katago引擎
      ./katago gtp -model b18cd384nbt-uec.bin.gz -config default_gtp.cfg
    • 参数调优,虽然之前我们设置了KatagonumSearchThreads = 32,但这里未能生效,需要修改lizzie的设置,生效后可以显著提高标题栏上的每秒搜索数量
      设置 -> Katago引擎高级参数 -> 设置成32


至此我们已经完成全部操作,你可以开始和AI对弈,也可以试将棋谱导入Katago进行分析,ENJOY!

根据我5G 12400(900元CPU)及240w RTX3070(2000元的显卡)的测试,每秒搜索量为2k~2.5k,如果每步100k计算量,分析/复盘350手棋加起来约耗时4小时14分钟

最后,随着AI时代来临,推荐这篇文章很好的阐述了现在棋士们的心声,为何李世石选择退役,柯洁也不再勤奋。

下一篇文章可能是 "AI画图",懂得都懂
下下偏文章可能是 "AI换脸",懂得都懂

评分

参与人数 1邪恶指数 +10 收起 理由
醉酒棕熊 + 10

查看全部评分

发表于 2023-1-20 21:27 | 显示全部楼层
和人下已经没意思了,能不能办AI之间的有奖赛事呢
 楼主| 发表于 2023-1-20 21:28 | 显示全部楼层
毛茸茸 发表于 2023-1-20 21:27
和人下已经没意思了,能不能办AI之间的有奖赛事呢

有AI围棋大赛,比软件优化能力,之前星阵一直是冠军
发表于 2023-1-20 22:09 | 显示全部楼层
现在围棋是一点打谱的兴趣都没,胜负看AI吻合度。
发表于 2023-1-20 22:31 来自手机 | 显示全部楼层
当人类不能在围棋比赛中战胜计算机之后,再发展围棋AI意义不大了。
发表于 2023-1-20 22:38 | 显示全部楼层
AI作画马克一下
发表于 2023-1-20 22:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-1-20 22:52 | 显示全部楼层
科学家们能不能干点儿正事?! 整天下棋下棋下个头呀。啥时候能让 AI 把骑马拉下马呀?
发表于 2023-1-20 22:57 | 显示全部楼层
大佬你好,谢谢分享AI的围棋软件具体设置;
有没有中国象棋的开源AI软件?
发表于 2023-1-20 23:02 | 显示全部楼层
大胆,竟然黑我轩工智能!
 楼主| 发表于 2023-1-20 23:24 | 显示全部楼层
本帖最后由 T.JOHN 于 2023-1-21 00:09 编辑
yiyiyao 发表于 2023-1-20 22:31
当人类不能在围棋比赛中战胜计算机之后,再发展围棋AI意义不大了。


其实CNN算法的过程人类不能直观理解,效用函数,正向传播和反向传播是数学理论,但物理意义对人类来说是个黑匣子。现在好点了,图像识别能够输出每一层训练的结果,告知人类图形的变化,已解读深度学习干什么

这个视频是两个月前刚水的一篇高水平论文“使用对抗攻击诱导AI”在只有1/4算力情况下,可以80%胜率战胜每步2400搜即超越人类的katago。看上去是下棋,其实是算法有优化的地方,这就是科研的实现。我主楼提到应用新的神经网络构架的katago已经修复了这个问题

论文地址:https://openreview.net/forum?id=Kyz1SaAcnd

内容Page14
 楼主| 发表于 2023-1-20 23:25 | 显示全部楼层
fairness 发表于 2023-1-20 22:57
大佬你好,谢谢分享AI的围棋软件具体设置;
有没有中国象棋的开源AI软件? ...

自然是有的,我不知道。因为王天一下网棋天天被人干,而且中国象棋应该可以被穷举完,不需要AI
发表于 2023-1-21 08:36 来自手机 | 显示全部楼层
T.JOHN 发表于 2023-1-20 23:24
其实CNN算法的过程人类不能直观理解,效用函数,正向传播和反向传播是数学理论,但物理意义对人类来说是 ...

有道理,算法进步也是有意义的。
“你可以出租算力供学棋的人士使用”,这个如何实现呢?
 楼主| 发表于 2023-1-21 08:48 | 显示全部楼层
yiyiyao 发表于 2023-1-21 08:36
有道理,算法进步也是有意义的。
“你可以出租算力供学棋的人士使用”,这个如何实现呢? ...

你可以看到lizzie设置第一张图有个远程引擎,也就是说运行后端katago的机器配置好后,并且暴露一个公网端口,就可以给客户使用了。和玩网游一样你把前端lizzie理解为客户端,后端katago理解为服务端即可。

网络上很多使用lizzie复盘的都是租赁(白嫖)GCP Azure这种云服务器的N块A100跑的,自己可买不起A100。
发表于 2023-1-21 10:14 来自手机 | 显示全部楼层
T.JOHN 发表于 2023-1-21 08:48
你可以看到lizzie设置第一张图有个远程引擎,也就是说运行后端katago的机器配置好后,并且暴露一个公网端 ...

谢谢回复,有空学习一下。
发表于 2023-1-21 11:44 | 显示全部楼层
有没有象棋的,我想拿来趁王农民直播的时候教育教育他,教他懂点规矩,让他以后说话客气点。
发表于 2023-1-21 16:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-5-4 12:32 , Processed in 0.012880 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表