Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

在 DataLogic Studio 中查看

DataLogic Studio 是 JSONLogic 的可视化编辑器和调试器,基于 datalogic-rs 构建,也就是平台运行你适配器所用的引擎。Studio 运行的就是竞技场的语言:它把你的适配器画成流程图,拿一个观测运行它,并逐节点单步跟踪求值。

本章的每个示例都有一个 Open in DataLogic Studio 链接。链接里带着表达式和数据,所以打开时该示例已经求值完毕,不需要账户,也没有什么要保存的。你自己生成的链接也一样:它带着你的适配器,你发给谁,谁就能读。

Studio 与裁判仍有几处细微差别,下面的表格一一列出。

打开你自己的适配器

  1. 打开 Studio。
  2. 勾选图表上方的 Templating。
  3. 把一个适配器粘贴进 Logic:也就是某个输入的 adapter 键的值,不带清单的其余部分。
  4. 把一个观测粘贴进 Data。
  5. Share 会复制一个指向屏幕上内容的链接。

可以粘贴的观测,模型看到什么里有一个小的;tinybrains adapt 会把每个参考观测写在它生成的张量旁边,文件名为 case-N/observation.json(方法)。

你看到的是什么

  • Logic、Data、Result。Result 是 Studio 的输出。对适配器来说,那是顶层的张量调用及其求值后的参数:{"scatter": [[[12, 30], [13, 30], [43, 66]], [64, 96], "i8"]} 表示节点的 scatter 将收到这三个点、这个形状和这个数据类型。
  • 图表。Studio 把每个操作符画成一个节点,它的输入流入其中。Flow 从左到右画数据流;Hierarchy 画的是 JSON 的嵌套结构。
  • 调试器。单步控件让求值逐节点推进,当前节点显示它产生的值。要观察 map 主体如何依次收到每个元素,或者 reduce 的累加器如何增长,单步是最快的办法。

Studio 与竞技场的差异

在 Studio 中在竞技场中
核心操作符:var、val、map、filter、reduce、if、算术、比较、merge 等等会求值以同样的方式求值,用的是同一个引擎
{"==": [0, null]}truetrue。竞技场也是 datalogic,所以 JavaScript 的类型强制转换规则在两边都适用
多于一个键的对象开启 Templating 时,是对象字面量是输出模板,与 Studio 一致,在 tinybrains 中也一样
键不是操作符的单键对象开启 Templating 时,是对象字面量是数据,与 Studio 一致。tinybrains 会对此发出警告,拼错的操作符就是这样被抓到的
用 $ 转义的键,{"$shape": [6, 7]}是数据,$ 原样保留,即 {"$shape": [6, 7]}:Studio 不做转义处理是数据 {"shape": [6, 7]},在节点上和 tinybrains 中都如此
张量操作符展示为参数已求值的调用节点构建张量,并对照你的声明检查形状和数据类型
操作计数不显示会计数,每个适配器上限 1,000,000
形状、数据类型、饱和、落在地图之外的散布点不模拟强制执行
Studio 的版本该网站最近一次部署的版本节点链接的版本,记录在你的版本上,字段为 orion_version

记住关于对象的那几行:对象在这三处都是数据,所以返回 {"mine": …, "theirs": …} 的表达式在 Studio 里会得到一个整齐的结果,而节点会拒绝它,因为它不是张量。请返回数组。

Studio 也会重现的陷阱

对 [row, col, owner] 三元组求 {"var": "3"} 得到的是 null,而 null 与 0 比较时相等。这个 filter 会保留每一个蚁丘,你的和对手的都在内,而 Studio 和竞技场都不会报任何问题:

{"filter": [{"var": "hills"}, {"==": [{"var": "3"}, 0]}]}

这是适配器能犯的代价最高的错误,而 Studio 展示它的方式与竞技场运行它的方式一致。要避免它,请用 === 比较,读取一个确实存在的字段,或者给 var 一个回退值:{"var": ["3", -1]}。

Studio 够用和不够用的时候

Studio 能告诉你 JSON 部分是否挑出了正确的东西:正确的列表、字段、坐标和形状。作用域错误、filter 用错了字段、形状拼装顺序不对,都会在 Result 面板里显露出来。

Studio 无法告诉你适配器构建的张量是否就是你的计算图训练时用的那个、是否在预算之内、计算图是否接受它。tinybrains adapt 会写出张量和每一个的计费,tinybrains check 测量的则正是审核所测量的东西。