记错之后,谁去看第二眼
前几天写纳赛尔那篇时我留了一句话:说出去的话、报上去的数,都没有人负责回头改。当时我说机器里大概叫记忆漂移,过几天可能会写到。就是今天这篇。
先说一个细节,它比结果更让我在意。SPARK(arXiv:2611.00344)要研究「怎么改正已经建好的记忆」,而它基于的前作 Embodied-RAG,开源代码里是拿模拟器的真值建库的——每个物体的名字、位置、类别都准。作者把这个管线拆了,换成机器人自己拍到的 RGB-D:分割、深度反投影、视觉语言模型打标签,还专门加了随距离增长的深度噪声。
理由很直白:要研究改错,得先允许它犯错。 用真值喂出来的记忆永远是对的,纠错就无从谈起。这个决定比后面所有数字都勇敢,因为它主动放弃了「看起来成绩很好」的机会。
机器人靠一条条巡逻路线,攒出一份能用语言检索的记忆:这条路上大概有什么、在哪儿、彼此什么关系。麻烦在于,这份记忆是从一堆不完美的观测里长出来的。
所以错法很具体:标签贴错(「竖着的储罐」被叫成别的)、位置偏了(远处深度误差能把物体挪开好几米)、同一样东西记成两个、或者干脆漏掉。这些错会一直躺着,后面每轮观测都只是往上叠——叠得越多,错的越难看出 ...
民意是最难退货的东西
「当你真的按照网友评论操作时」——这句弹幕挂在一条讲纳赛尔的视频下面,五万多个赞。
视频分两集,上集讲苏伊士运河那场胜利,下集讲他怎么一路输到葬礼。我本来是当历史故事看的,看到一半才发现不对劲:这两集讲的其实是同一件事,一个人先被自己的胜利鼓舞,再被自己的口号捆住。
苏伊士那一场赢得挺漂亮。英法以三方打过来,最后靠美苏两边同时施压撤了军。不是埃及自己打赢的,但它没输,于是所有人都觉得这是赢麻了。可汗讲这段的时候语气很轻快,弹幕也轻快。
然后就是下集。为了拿到苏联的电子武器,纳赛尔愿意放弃不结盟这块招牌;苏联还是拒绝了。转头他接受罗杰斯计划,等于公开承认以色列存在——于是被他一手煽起来的阿拉伯电台骂成「叛徒、杀人犯、吸血鬼」。一个把巴勒斯坦解放当己任的人,最后被自己的人民用他教给他们的语言杀死。
看到这儿我盯着屏幕愣了一会儿。第二天又把画面抽了几帧出来看:黑白档案影像、叙利亚和埃及的旗子被拼成「共同领袖」、约旦国王走下飞机、坦克、人群。字幕里那几个词是打在纸上的,画面里是打在人群脸上的。那种东西光读文字感觉不到。
我原本以为这期的结论会是「他活该」。看完不这么觉得。
民意不是判断,是一股 ...
它慢,不是因为算得慢
20 Hz 的机器人,π0.5 推理一次大约 150 毫秒——等于它每走 8 步,就得站住 3 步,什么也不干,纯等着自己想明白下一步。
我第一次看到这种量化方式还挺意外。平时聊 VLA 的延迟,都是「推理要多少毫秒」,很少有人把它换算成「机器人白站了几步」。可换成步数之后,事情的性质就变了:这不是模型好不好,是它在浪费自己的生命。
这篇(Fuyi Chen,宁波诺丁汉,十一月一号)说,这类浪费还有第二种,而且更隐蔽:就算机器人不停,它也是按示教的速度在走。人类遥控示教时动作偏慢、偏谨慎,模型老老实实学会了这个节奏。
第二种浪费我觉得比第一种有意思。因为它意味着上限是被人为压低的——不是硬件不够快,不是模型不够好,是当初录数据的那个人手比较稳。
两个补丁为什么叠不出一个好延迟和慢速,各自都有人解过:异步执行消掉等待,动作提速消掉慢。
作者把两者叠起来试了,结果很难看——π0.5 在 LIBERO-Spatial 上从 45/50 掉到 20/50。但接下来这个操作很漂亮:他把提速的速率曲线原样保留,只把「按新速率重新采样」换成「把计划的增量一项项加起来」,成功率回到 ...
docker配置GPU
docker 配置 GPU1. 配置库curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2. 更新源sudo apt-get update
3. 安装 ...
docekr安装
基于 Ubuntu20.04 安装 docker1. 卸载旧版本 docker# 卸载旧版本
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 清除旧版 docker 占用的内存
sudo apt-get remove --auto-remove docker
# 删除无用的相关的配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
# 删除相关目录
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker # docker 数据存储地址
# 更新系统源
sudo apt-get update
2. 配置安装环境sudo apt-get install apt-transport-https ca-c ...
docker常用命令
docker常用命令显示当前正在运行的docker容器
docker ps # -a / --all: 显示所有容器
显示本地主机上的镜像
docker images
开启指定容器的交互式终端
docker exec -it 容器id /bin/bash
获取容器长ID
docker inspect -f '{{.ID}}' 容器名
拷贝主机文件到容器中
docker cp 主机文件路径 容器长ID:docker容器路径
拷贝容器文件到主机中
docker cp 容器长ID:docker容器路径 主机文件路径
提交容器副本使之成为一个新镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag]
导出镜像
docker save -o test.tar 镜像名:[tag]
导入镜像
docker load -i test.tar # 此时镜像名与标签不变
基于Dockerfile创建镜像
基于Dockerfile创建镜像创建镜像docker build -t {镜像名:镜像标签} . # docker build -t test:v1 .
上述命令会根据当前文件夹下的Dockerfile文件(文件内容如下)来创建镜像
FROM ubuntu:22.04 # 指定新镜像所基于的镜像
MAINTAINER By Abel # 说明新镜像的维护人信息
# 在所基于的镜像上执行命令
RUN cd ~ # 进入root根目录
RUN apt-get update && apt-get install -y wget # 更新 Ubuntu 包索引并安装 wget
系统镜像下载超时时可以进行docker换源
获取阿里镜像加速器地址(免费、面向个人开发者)
登录容器镜像服务控制台,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器界面获取加速器地址
例如: https://[系统分配前缀].mirror.aliyuncs.com
配置镜像加速器
针对Docker客户端版本大于1.10. ...
Gitalk
GitalkGitalk 是一个基于 Github Issue 和 Preact 开发的评论插件。详情请访问官网 Gitalk
安装
npm 安装
npm i gitalk --save
使用
需要选择一个公共 github 存储库用于存储评论;然后创建 Github Application,并填写相关信息
应用到页面上
<template>
<div id="gitalk-container"></div>
</template>
<script>
import 'gitalk/dist/gitalk.css'
import Gitalk from 'gitalk'
var gitalk = new Gitalk({
clientID: 'GitHub Application Client ID',
clientSecret: 'Git ...