摘要:整整两天,上百场对弈,TA竟然未尝一败,真是让人拍案叫绝。

近日,一位神秘“人物”亮相华为昇腾CANN技术开放日现场,引得众人簇拥,吸粉无数。从现场AI棋艺大战的画面中我们可以看到,一边是眉头紧锁苦苦思考的玩家,一边则是本场的主角----基于昇腾CANN开发的AI对弈机器人。

和一筹莫展的小棋友相比,我们的主角着实看起来起来轻松不少,不仅能在短短十几秒内化解玩家攻势,还能防不胜防精心布局,让胜利的天平逐渐向自己倾斜。整整两天,上百场对弈,竟然未尝一败,真是让人拍案叫绝。

据了解,这款对弈机器人搭载Atlas 200 AI加速模块,其内集成昇腾310 AI处理器,可实现图像、视频等多种数据分析与推理计算,广泛用于智能监控、机器人、无人机、视频服务器等场景。

更重要的是,研发人员借助华为昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)提供高效易用的AscendCL编程接口,可针对多样化应用场景快速构建基于昇腾平台的AI应用和业务,并通过软硬件协同优化,大幅提升昇腾AI处理器的计算效率。

五大模块功能解读

机器人主要包含五个部分:中心控制、棋盘理解、对弈引擎、机械臂和UI界面。

  • 中心控制,好比人大脑中负责逻辑的部分,它主要用来协调各个模块的调用流程。
  • 棋盘理解,好比人类的视觉系统,通过安装在上方的摄像头采集当前对局信息,通过图像处理程序来理解“看到”的内容。
  • 对弈引擎,好比人脑中负责思考的部分,用来思考下一步最好的走法是什么。
  • 机械臂,就是机器人的手了,用来执行AI聪慧的走法,把棋盘上的棋子移动到正确的位置。
  • UI界面,则是给用户提供一个方便交互的界面,玩家方执红,通过平板的UI交互界面,由代表红方的机械臂将棋子移动到指定位置;AI方执黑,通过上方的摄像头看到当前的棋局,并通过搭载的AlphaZero算法软件计算出走法,由代表黑方的机械臂来执行。

当然你也可以抛弃UI和其中一个机械臂,亲自上阵和机械臂面对面大战三百回合,获得沉浸式的体验。此对弈机器人还提供了观棋模式,切换此模式就会让AI来执行计算,在当前的局面下为执棋方提供参考走法。

和机器人对弈是不是很酷?其实,基于异构计算架构CANN开发这款对弈机器人并不是很复杂,成功的关键就是控制好机器人的眼睛、大脑和手臂的功能。

火眼金睛精准识别棋子位置

机器人要想掌控全局,就要对整个棋盘的状态有认知能力,棋盘理解模块就是为此而存在的。位于上方的摄像头就像是机器人的眼睛一样,作为传感器捕捉当前的棋盘信息,并且将图像传入后台进行处理。

图像处理程序主要包含畸变矫正等预处理手段,以及圆检测算法用来获得当前全部棋子的坐标位置。最后,根据棋子的位置裁剪出一小块56x56的图片按批次传入分类模型进行推理,得到每一个位置上棋子的颜色和种类。

为实现这一过程,研发团队借助异构计算架构CANN,能够很容易将推理模型部署在Atlas 200上;同时在推理过程中,通过CANN内置的高性能算子自动加速计算,让机器人能快速精准地识别棋子位置,为后续博弈计算打下坚实的基础。

聪慧大脑快速进行博弈计算

如果说棋盘理解模块是机器人的眼睛,那么核心的对弈引擎就是机器人的大脑了,研发团队选择基于强化学习的AlphaZero算法作为对弈引擎的基础。AlphaZero算法是谷歌的DeepMind实验室在2017年提出的,主要流程包含蒙特卡洛搜索树(MCTS)以及神经网络构成。

MCTS全称 Monte Carlo Tree Search,是博弈决策规划中非常实用的一种算法。它根据模拟的最终输出结果,按照每一步节点构造搜索树,从而将随机性和完整性统一起来,为最优化决策提供帮助。

神经网络则是用来拟合通过自对弈生成的数据,不断迭代训练来优化模型。网络结构主要包含了两个head,一个是policy head,用来预测下一步走某一着的概率;另一个是 value head,用来预测当前局面下的胜率。训练流程就比较直接了,在得到了使用当前最优模型模拟自对弈的棋局记录之后,用这些数据作为训练样本,把当前最优模型作为预训练模型进行训练。

如此复杂的过程依赖超高的计算算力,否则对弈机器人将会是一个让你抓狂的迟钝选手。而Atlas 200能提供最高22 TOPS的算力,也就是能达到每秒钟22万亿次计算,这让团队成员欣喜若狂,这个算力足够应付绝大多数玩家,同时也很好地解决了项目成本问题。

为了更为充分释放硬件算力,研发团队在软件层面借助异构计算架构CANN,对神经网络进行图级和算子级的编译优化和自动调优,让对弈引擎实际性能大大超出预期。

然而,目前对弈引擎的参数设置都比较小,感兴趣的读者可以参考文末的开源代码自行调整参数,让机器人拥有更强大的棋力。另外,倘若搭载Atlas系列更强算力硬件,再让异构计算架构CANN对对弈算法进行一轮深度优化和加速,下过世界冠军也是指日可待了!

灵活手臂精准控制运动细节

除此之外,展示中小巧灵活的机械臂有没有让你眼前一亮的感觉?项目中采用的是开塔米罗研发的的桌面级六轴机械臂,主要面向的是K12教育,其有效范围内精度可达0.2mm。结合厂商提供的API接口,研发团队对控制流程精心设计并且进行了优化,控制气泵开关来让吸盘提子落子,结合棋盘理解模块信息作为反馈,采用棋子的真实坐标,让机械臂“睁着眼睛”操作棋子,进一步减小了定位误差。

昇腾社区丰富资源助力高效开发

当然,整个开发过程也不是一气呵成的,研发团队也是遇到了不少困难。幸运的是,昇腾社区上有丰富的资源,让整个开发过程一路披荆斩棘。

昇腾社区提供了包括计算机视觉(CV)、自然语言处理(NLP)等在内的400+模型,能够全面覆盖典型场景应用,并可直接部署在昇腾系列硬件且高效执行。还有丰富的AI应用案例,为开发者打开思绪,助力开发者快速构建AI应用和业务。

而社区论坛更是为开发者们提供了相互交流的平台,并且响应迅速。遇到的bug、经验、成果等等都可以在论坛上分享,如果遇到了困难,先看看是不是有前人也遇到过,没准问题就解决了。

扫码即刻登陆昇腾社区

对弈机器人带来的启示

该项目的对弈机器人代码全部开源,感兴趣的小伙伴单击文末链接即可获取,欢迎大家参与项目交流和改进。

可能有小伙伴会说,何必这么麻烦呢,直接和人对弈它不香么?

这款简单的对弈机器人只是灵感的开始,实际上不光是下棋,通过AI加持的机器人可以协助人类完成更多领域的工作。如今,人工智能正在深刻改变我们的学习、工作和生活,并依然成为了数字经济发展的核心动力,只要你们有一颗澎湃的心,想要参与到AI改变世界的队伍中,借助昇腾AI软硬件平台,一定可以做出许许多多让人眼前一亮的项目。

CANN作为昇腾AI基础软硬件平台的核心,以极致性能、极简开发、开放生态为目标,助力昇腾构筑业界最强AI算力平台,同时也为每一个开发者点亮梦想,助力开发者在未来舞台上大放异彩,踏浪前行!

参考链接:

  1. 项目代码:

https://gitee.com/ascend/samples/tree/master/python/level3_multi_model/Robot_Play_Chess

  1. 昇腾社区:https://www.hiascend.com/
  2. 昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html

点击关注,第一时间了解华为云新鲜技术~

没想到,学棋五年的我竟然输给了昇腾CANN!的更多相关文章

  1. Mina、Netty、Twisted一起学(五):整合protobuf

    protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化.反序列化),一般应用于网络传输,可支持多种编程语言. protobuf如何使用这里不再介绍, ...

  2. 【原创】这道Java基础题真的有坑!我也没想到还有续集。

    前情回顾 自从我上次发了<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章后.我通过这样的一个行文结构: 解析了小马哥出的这道题,让大家明白了这题的坑在哪里,这题背后隐藏 ...

  3. 没想到 Google 排名第一的编程语言,为什么会这么火?

    没想到吧,Python 又拿第一了! 在 Google 公布的编程语言流行指数中,Python 依旧是全球范围内最受欢迎的技术语言!   01 为什么 Python 会这么火? 核心还是因为企业需要用 ...

  4. 字节跳动:[编程题]万万没想到之聪明的编辑 Java

    时间限制:1秒 空间限制:32768K 我叫王大锤,是一家出版社的编辑.我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误.但是,优秀的人总能在平凡的工作中发现真理.我发现 ...

  5. 从头开始学JavaScript (五)——操作符(二)

    原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:*      乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscri ...

  6. 在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来

    在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来 贴下课堂笔记: 在Java中使用NIO进行网络TCP套接字编程主要以下几个 ...

  7. centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多!

    centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多! 一.手动安装 1.下载(官网)    cd /soft     wget http://www.clam ...

  8. 头条编程题 万万没想到之抓捕孔连顺 JavaScript

    [编程题] 万万没想到之抓捕孔连顺 时间限制:1秒 空间限制:131072K 我叫王大锤,是一名特工.我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺.和我一起行动的还有另外两名特工,我提议 ...

  9. 杀死众筹的N种方法:没想到山寨大军也参与了

    ​ ​ 众筹作为当下创业者筹集资金,将创意变为现实的最重要手段之一,正面临着越来越多的困难,甚至衍生出杀死众筹的N种方法.甚至这些方法还分为了两类,就众筹本身看,杀死它们的主要方法是:创业者卷钱跑路. ...

  10. 没想到,Git居然有3种“后悔药”!

    没想到,Git居然有后悔药! 你知道Git版本控制系统中都有哪些"后悔药"吗? 本文通过案例讲解git reset . git revert . git checkout在版本控制 ...

随机推荐

  1. vscode/sublime 语法高亮定义和代码段的区别

    vscode插件数据格式基于json,sublime插件数据格式基于xml.sublime插件的官方文档说的不清楚,相关教程也很难找,遇到的一些坑记录一下 语法定义文件对比 同样使用TextMate定 ...

  2. matlab快速入门笔记

    命名规则: clc:清除命令行的所有命令 clear all:清除所有工作区的内容 注释:两个% + 空格 %% matlab的数据类型 1.数字 3 3 * 5 3 / 5 3 + 5 3 - 5 ...

  3. 使用单卡v100 32g或更低显存的卡,使用peft工具qlora或lora混合精度训练大模型chatGLM2-6b,torch混合精度加速稳定训练,解决qlora loss变成nan的问题!

    最近新换了工作,以后的工作内容会和大模型相关,所以先抽空跑了一下chatGLM2-6b的demo,使用Qlora或lora微调模型 今天简单写个文档记录一下,顺便也是一个简单的教程,并且踩了qlora ...

  4. easyre-153

    这里也是没有做出来,因为有隐藏函数的原因(第一次见) 攻防世界XCTF 3rd-RCTF-2017 easyre153学习笔记_rhelheg-CSDN博客 攻防世界逆向高手题之easyre-153- ...

  5. Java Lambda 表达式常见面试问题与解答

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在本文中,我们将讨论一些重要且常见的 Java Lambda 表达式面试问题和解答 1.什么是 Lambda 表达式? l ...

  6. A-B数对 (hash映射)

    题目大意: 第一行输入N,C 第二行输入n个数字 输出,求A - B = C的数对个数 样例 4 1 1 1 2 3 输出 3 思路:用STL容器map,map<num, times>,建 ...

  7. Python输入一行字符,分别统计出其中大小写英文字母、空格、数字和其它字符的个数。

    import string def SlowSnail(s): up = 0 low = 0 space = 0 digit = 0 others = 0 for c in s: if c.isupp ...

  8. P1029 最大公约数和最小公倍数问题(普及−) 题解

    题目传送门 想要做这题,我们要先了解一下最大公约数. 最大公因数,也称最大公约数.最大公因子,指两个或多 个整数共有约数中最大的一个.a,b的最大公约数记为 (a,b),同样的,a,b,c的最大公约数 ...

  9. wps表格求标准差怎么算?

    在WPS表格中,要计算标准差,可以使用STDEV函数.标准差是一种衡量数据集合离散程度的统计指标.下面我将详细介绍如何使用STDEV函数来计算标准差. STDEV函数的语法为:STDEV(range) ...

  10. HDU 4787 GRE Revenge

    Now Coach Pang is preparing for the Graduate Record Examinations as George did in 2011. At each day, ...