日知录

看看自己能够坚持多久

Posted by tianchen on January 1, 2048

日知录

这个习俗大概来自于高中?FXB让我们记录下每天学到的东西,高中时候没有记住,不知道之后能不能记下来

TODO

迁移到了Notion 现在又回到了这里,有的时候把todo放到slack上面 笑死,反复横跳

Weekly Assignment

  1. 周末批改作业 Mooc - 课程管理
  2. CVPR以及后续
    • Supp [DONE]
    • Clean代码
    • 思考需要把Implmention解释的多清楚,不想讲明白votr
    • generalizaiton的曲线实验
    • Cluster的一系列图 - clean代码准备开源 - 跑更多的实验
    • votr更高一点
    • 我们的更clean一点
    • setup nuscnens
  3. 开题 [DONE]
    • 周日上午正式
    • 充实文档,打印
    • 网上系统提交
    • 改PPT,练习!

LongTermFlag

  1. 网管
    • 熟悉学习网站
  2. 学习
    • ML基础,整理toolbox
    • 整合各种资料公开课
  3. 写书

  4. 开始整理Proposal,学期之前做规划
    • 开始有了一些思考
  • 更新推理小说流派sumamry到dream的post中
  • 思考ray这边的项目进展和推进

2021-11-26 ~ 2021-11-30

  1. 生病了,终于好一些了
  2. 整理了一些文档,对proposal有了一些思路,需要继续推进(开了个头)
  3. 推进写书的工作

  • 尝试修正rootfs,但是因为不能apt失败了,需要进一步搞定
    • 在整理老文档的时候找到了solution,直接将老的rootfs给连接到/var/lib/lxc中,并且复制一份config过来直接start container就可以了,这样就等效开了一个新的container,因为是软连接也会直接改动那个rootfs文件
    • 在eva1上开了一个mark0的container,挂载了rootfs,并进行了一些修改,apt安装了几个基本包,并且增加了一个/home/resources来放了auth-thu
  • transient hostname的测试与理解 [TODO]
    • 简单来说static hostname就是我们通常认知里设置的那个,而transient hostname是在dhcp或者dns的途中给赋予的,如果被赋予了,就会覆盖掉static hostname,所以本质上还是网络相关的一个问题
    • 现在eoe1好像又挂了……还是测试不了,先理解以下原理把
  • vim-plug的尝试
    • 尝试好了,并且将网管的配置用到了本地,开始使用,如果测试起来感觉好的话可以考虑应用到remote
    • 一个solution
  • 测试了一下personality
  • disable the fuckin windows terminal bell!
  • 学习一些linux知识
  • VPN knowledge
      1. VPN: Virtual private network 其实本质只是翻墙的一种方法,即通过租用他人备案假设的虚拟私有网络(数据加密,相对难以探测)
      1. SS/V2Ray/Trojan: 本地服务器加密流量传到远程服务器,主要fail方式是被检测到过墙的加密流量,加密方式从早期的AES到Vmess+TLS,GFW并不通过解密流量来检测,而是探测意图,不用在意协议(应用层)
        • 软件:(区分协议和软件)
        • 其中软件服务的全局代理,无法接触到一些跑在更底层的应用(比如UWP应用,以及Oculus,游戏流量等)
      1. 硬件(路由器翻墙):实现真正的全局代理,可以帮助一些无法搭建翻墙软件的设备进行翻墙,路由器的算力本身很低,导致网络卡顿
        • 使用软路由:本质上是改造过的路由器,或者直接用电脑来搭,自己鼓捣
      1. 网关模式翻墙
        • 通过某台机器上的软件来完成路由 Clash/Surge 在本地局域网中加了一台用软件的网关
        • 比较方便集中管理
  • Intro of Networking in Linux
    • LAN: Local Network, the LAN(within router) transforms the ip to the ip in LAN-
    • tcpdump -i $NETWORK_NAME(eno1) dump the packages
    • netstat -nr(the n means real IP instead of link name/r menas route)
      • netstat -i: means the number of packs
      • netstat -ta: look for active sockests and their status
    • host file /etc/hosts`
    • traceroute
    • nmap

  • (possible) 买车

2021-11-25

  1. 收了实验结果整理到了google doc里面去,清理了前几天asign的文章BASIC,是利用language的模型做zero-shot的vision训练
  2. git issue on eva1/3 [DONE] if free clean code
  3. clean more post:
    • git
    • docker [DONE]
  4. Setup写书的东西,寻找素材

2021-11-24

  1. 上午起来补充了文字 [DONE]

  2. 继续进行S3DIS的文字实验

  3. git issue on eva1/3 [DELAY]

  4. hostanme issue on eoe1
    • 用webpvn登录usereg如果没有的话可以直接将完整的带http的域名丢到空白处
    • 现在是空白的
  5. install dokcer
  6. thu vpn
    • guide
    • 选UAC的mode,并且名称和网址都是 sslvpn.tsinghua.edu.cn
    • 登录的时候用户名是学号
  7. clean post
    • linux commands together, linux basics together

2021-11-23

  1. 起来收了一波实验,多少带点问题
    • 做好可视化,画好几个图,梳理好过程
    • 继续调S3DIS
  • debug sample as downsample
    • torch 的randint不是 sample with replacement!
  • 新的服务器上很愚蠢的仍然git需要反复merge,好蠢,之后不commit -am,只能说好蠢
  • freeze python环境到一个文本 pipreqs
  • 批量杀python卡死的multiprocess kill ps -a | grep python | awk '{print $1}'

2021-11-22

  1. 上午列举了Supp的大纲
  2. 下午开会,尝试setup nuscenes,还比较麻烦
  3. 尝试使用上海的服务器
    • 好不容易要了个临时的sudo权限,去debug他们的服务器为啥docker起不来 docker start fail debug

重新开始ref自己的博客开始看docker的使用

  1. docker的使用,他们预先pull了一下cuda-11.1的nvidia-image,是一个全裸的ubuntu系统应该是
    • 通过索引docker image ls中的ID,执行 docker container run -it --name "ztc" $IMAGE_ID
    • 进来之后第一时间
    • 在root用户下,passwd设定密码
    • 创建一个自己的用户并设定密码 - 安装一系列软件
    • sudo - 要是上面使用apt装的太慢了,可以从主机上 docker cp进来 - 目录挂载可能需要container
    • tutorial in docker doc
    • how 2 mount on a existing container
      • 说人话就是先commit再启动,把老的关了用新的
      • 没有办法对running的container做mount,只能docker cp进去,但是对于数据集这种的大场合就不太适合了 - 在container的apt源中remove掉nvidia的源,因为他好慢,且我们大概率不会这样更新cuda
    • /etc/apt/sources.list.d# mv cuda.list cuda.list.bak - 安装不上git,说是有perl依赖
    • 可能换源换早了,aliyun的mirror可能缺乏一些常用库,而原本的可能就有,所以我们切换回ubuntu本身的源进行安装(这种apt的dep问题大概率都是用了私自的源不好使的原因) - tmux里的新panel没有用bashrc
    • 增加一个~/.profile并且将内容填入
    • solution - TERM no color - because use SCREEN instead of xterm
    • qs - docker cp -a是从外面复制目录,然后这种经常会出权限问题需要处理
    • 比如拷贝ssh文件夹的话就会出现 bad owner permission of ssh , 最合适的解决方案就是直接用sudo chown $USER ./*

2021-11-21

  1. 开题
  2. 和老爹开会
  3. 晚上接着开会

TODO: 推进spp的试验,找个机会和弋老师sync

2021-11-20

  1. 改开题论文,改开题PPT,写稿子,练
  2. 读了MAE,做了笔记
  3. 晚上和妃神讨论了Nerf,误解很多,很缺基础

2021-11-1 ~ 2021-11-19

赶完CVPR了,身心疲劳

  1. CVPR2022  
    • 需要修改的主要部分: 第一部分的逻辑走向
    • Method中重写geo-aware一章,并且重新formulate geo-pattern以保证其对称性
    • ablation需要添加possible的其他一些简单的改进opt优化问题的方法(SAM & ConvViT)
    • 在RW中需要对比现有的所有文章,辨析与他们的区别
    • check VoTR的实现方式,起一个adapt到我们版本里的实验
    • 继续调SPVCNN实验
    • 继续调两个final实验
  2. 开题: 基于图结构卷积神经网络SAR图像目标识别分析方法 (有一个限制条件)
    • 因为是黑盒,所以需要做可解释性的分析,如果在题目中提出可能会过于大了*
    • 重点放在ACE,TCAV环节的完善,如何提Visual descriptor,对于SAR图像目标应该怎么做descriptor,在信的环境中的增量
    • 调研目前用于SAR图像目标识别的卷积神经网络模型,基本都是典型CNN结构,我们自己建立并复现了,作为分析对象;(找一些比较具有代表性的,SJTU,UESTC,德国宇航); 需要有一个这样的解决
    • 研究内容:
      • Visual Concept的提取
      • Graph建模的问题,最终是图结构的表征
      • 决策树的分析
    • 机器学习方法与SAR的结合,应用很多,但是可解释性的工作很少,说明我的研究是有意义的
    • PPT先从应用角度将人吸引住
    • 开题对我们的文献综述调研进行缩略,文献调研需要概括,而且说明研究目的有意义v

Qs:

  • 利用图结构(GNN)它本质上是一种拟合方式,但是依旧是NN?
  • 可以展示的东西:
    • concept matching
    • 关联性(*)
    • Explicit Rule (robust to noise)
    • Improve the model: better robust; guide how to modify(获得困难样本,指导augmentation的选取)
  • domain specific:
    • how to utilize the complex*
    • 提高稳定性* 更加白盒*

  • 强调图,特征表征本身可以和图关系比较小;
    • 特征上是数据不一样,如何利用幅度相位
  • 推理:
    • 从learning层面说,细节信息不显著,如何分析学习过程

CK: 模板确定一下

  1. 特征提取 (以一种具象方式 - 热力图与具体concept - 提取神经网络所学习到的特征)
    • concept本身可能和解释关系不大
    • 注意力: 我们对conecpt本身也是在解释 : concept大概率是抽象的,目标某一个区域的特征; conecpt表示了什么东西,具体有什么含义;
    • 热图的特点 对concept本身的物理意义做诠释,和人能够理解的建立一定的映射关系。
  2. 决策推断 (以一种具象方式 - 图 提取神经网络的决策过程)
    • 2.1: 基于GNN的解释,生成图pos/neg图: 我们把神经网络的决策过程建模成了这张图作为人能理解的中间态
    • 它并不是去解释决策,从原文摘句子
  3. 决策:(以显式方式)
    • 2.2 : fc中的非线性处理是怎么做的: 保险的plan是 拟合和显示的提取出决策过程
    • 对fc来说是一个拉成1-d的特征向量,想解释多层感知机的决策, - 具体的再展开,多层之后带来了什么样子的变化
  1. Handbrake用来压制视频
    • 中间还需要安装 .net的支持
    • 或者直接ffmpeg - 直接terminal搞定
  2. 轻量化的HTTP服务器模型
  3. wsl装不了g++??
    • 结果是apt的源出问题了,更新到正常的之后好了
    • win下记得安装build-essential库
  4. Detex detex PaperForReview.tex | grep -v '^\s*$' > PaperForReview.raw
    • sudo apt-get install libfl-dev
    • sudo apt-get install make gcc flex
  5. 不要把右手无名指的指甲咬的太短,敲回车好疼

2021-10-31 ~ 2021-11-1

  1. 写完了abs以及method
  2. 实现了一些小方法,还没有跑

    

2021-10-30

  1. 参与讨论,搭建文章大纲(之后的内容在上面更新把)
  2. 北航开会,解决一些issue

2021-10-29

  1. 早起把PPT做了得,找雷讨论
  2. 整理好开题报告以及文献调研中的paper
  3. 起文章大纲,与弋老师讨论

2021-10-28

  1. 跑实验,上午重新起了一版promising的scannet
  2. 开会,share 3dTR相关的内容,继续开会讨论Eff3d的问题
  3. 写完了开题报告!

2021-10-27

  1. 上课 - 科学写作大作业
    • 需要读一篇paper写一个summary(*)
    • 课程资料
    • 写好了定时发送了
  2. 必须写开题的提纲了!下午
  3. 整理了dataset-size的ablation

2021-10-26

  1. 继续实验并且填充Ablation的结果
    • 还缺Visulization, 需要把它变得更加clear好看一点*
  2. 上课 - 科学写作大作业
    • 需要读一篇paper写一个summary(*)
  3. 开会,汇报
  4. 下午做DVTR的motivationPPT,改图; 晚上把Ablation的信息给填写完了

2021-10-25

  1. 与弋老师开会
    • S3DIS好像确实比较费劲
    • 讨论了其他的几个点,我们还是将其包装成一个比较类似Plugin的故事去讲,这样就可以不用比SOTA
    • CVPR一定得投出去
    • 在eva2上配置一个环境,也可以跑一些KITTI的proxy实验作为参考
    • 启动了新的SemKITTI实验了* - check新的KITTI实验是否valid,是否有继续跑的必要(1天基本上跑了10k个iter,短的是2/3,长的是1/3); 看起来一味的加深并不能提升性能*
    • semKITTI-b
  2. 需要准备开题
    • 参考了两份已经写好的文档
    • 需要给一个大纲,周五约了讨论

  1. Mix3d
    • 学习他们的实验以及讲故事方式

2021-10-24

  • LDAP
  • 整理了ablation的相关可视化,往里面填了一些东西
  • 继续跑实验,调试S3DIS - 感觉确实难度要打过PoinTR难度比较大,转换思路*

2021-10-23

  • PPT使用
  • 起了一组对比试验,继续调试数据集上的大模型*
  • 具体setup了S3DIS的dataset,开始跑结果*

2021-10-22

  1. 头疼,休息
  2. 昨天关于如何往里补充参数的实验貌似失败了*,尝试了几条其他possible有效的path
    • 看看wd的影响*,感觉我们的方案中是一个类depthwiseConv的结构,类似mobilenet,可能会对wd敏感(存疑)
    • directly将深度变深,貌似效果有限
    • 或者直接用Convolution as codebook, 貌似又有一些too much
    • 在前面QV的阶段引入Convolution?

2021-10-21

  1. re-form
  2. 听了戴导的文章撰写分享
    • Google metric找会议
    • Goggle Scholar首页找信息
    • PPT排列等技巧
  3. 妃神的小组会报告 Evaluating NAS estimators
    • Go through the background of the One-shot NAS / Zero-shot Estimators
    • 4 qs?
      • what arch are underestimate(how OSE are biased)
      • ZSE is not powerful enough
      • summation of parameter sensitivity of the arch’s ability
      • Improve ZSE
    • Analysis
      • p at topK / p at BottomK
      • 5 banchmarks: nasbench & NDS (resnet macro nontopological)
    • improving sample fairness: deisomorphic sampling (why failed? any insght?)
    • reducing sharing extent: one-shot ss pruning is very effective, drop archs with lower one-shot score
    • ZSEs
      • parameter-wise sensitivity: Synflow:low kendaull tau; even less than parameter size
      • has clear bias: prefer archs with grad explosion, which is archs has no shortcuts
      • arch-level ZSEs: jacob_conv/relu_logdet;
      • Zero-shot Estimators are not consistent on different benchs(synFlow is better for non-topo)
    • Lupu的darts相关
      • DARTs under constraint:
        • SoftReg
        • HardConstiant: FW Algo, Frank wolfe, 线性约束

2021-10-20

  1. 集中在写文字,做PPT画图,准备proposal
  2. 继续看了一下S3DIS,感觉难办
  3. 晚上讨论了,故事没有大问题,但是核心的问题是
    • 一定要把性能先调上去,找到我们mem大的核心原因
    • 加上SVD的reg(可能由于不是cuda算子而缓慢?)

2021-10-19

  1. 整理eva实验结果
    • debug-tr4比较fail
    • ScanNet上的模型基本比res20 valid acc低一些*
  2. debug.pth setup起来S3DIS实验
  • 个人恶趣味的搞了一个Terminal的颜色标签来便于指示窗口
  • 看一下ssh怎么eclude特定文件
    • rsync -av -e ssh --exclude="*.pth" zhaotianchen@ztc.eva1.nics.cc:/home/zhaotianchen/project/point-transformer/SpatioTemporalSegmentation-ScanNet/outputs/ ./eva1
      • a表示递归,v是verbose,–exclude比较关键
  • Track某文件的修改历史
    • git log -p file 可以看到每次的diff

2021-10-18

  1. 需要rm掉一些文件来方便在服务器之间sync
    • git update-index --skip-worktree kitti-train-mp.sh
  2. 跑实验,更新PPT
  3. EOE0又被拿过来挖矿了,我服了
  4. 开会了,发现问题很大,我们可能需要做S3DIS,ScanNet上的大模型也不太好
    • 看dataloading慢的bug的时候看到一个这个: GitGist

2021-10-17

  1. eva7的服务器出问题了
    • 由于超发,导致硬盘满了,然后container内部报readonly fs,外面显示这个container完全满了…,将一个container移之后(wcy的,大概率不会用到了),重新mount之后勉强能够登录上
    • mount的时候各种报错,我先停了所有的container,然后看到还是用,用了lsof /data2,发现了是我的一个sudo进程还在上面,kill了之后好了
  2. 修理好了服务器,并且update了文档
  3. 整理3d TR需要跑的实验个数
  4. debug了val-iou的问题,好像scannet下这个有点问题

2021-10-16

  1. 上午修车洗衣服…
  2. 3d TR
    • 过来就发现昨晚的实验基本都没有正面结果…很难受
  3. 打印发票,周一报销
  4. 开overleaf,整体需要跑的实验

  • 整理一下如何连接打印机*
    • 首先需要连接到4-205的WiFi
    • 在WIN的控制面板中打开
      • 一路继续就可以了,可以打印一个测试页面
      • 之后打印的时候选择这个”HP Laser”就可以了
  • 批改作业

2012-10-15

  1. dev新的reg方式
  2. 跑新的conAttn的实验
  3. 准备重投TNNLS
    • 注册账户(貌似应该整个什么小u盘存一些confidential的东西)
    • IEEE的各个part里的账户是不通用的…你很可能需要重新填写很多author信息
    • 各种文本框复制进去很容易出问题,请检查
    • 机构 funding注意空格可能会影响匹配
  4. 做PPT
    • 算法小组的以及网管部的
  5. 报销:
    • 住宿: 发票+水单
    • 高铁: 蓝色的行程单
    • 飞机: 登机牌(行程单)+发票
  • Kill defunct进程
    • 在eva1上突然出现了一个defunc进程一直占显存,还kill不掉(PID491932)
    • 使用ps -A | grep defunct | more 找他爹,把他爹kill -9了,它就没了

2021-10-14

  1. 配置新服务器 EVA3
    • 联网出现了问题,登录成功之后ping不通baidu,等了一段时间好了
    • 打包了一系列自己的配置文件到eva3的/data/eva_share_users当中去
    • 另外conda-pack产生的一个env环境也一起打包到了eva7:~/conda-tr.tar.gz当中
    • 还有一份在eva1:/home/zhaotianchen/miniconda3/envs/conda-env-tr.tar.gz
    • 在使用tar命令的时候用~来索引home目录报错了
    • 参考diary之前的一些内容在eva3上配置好了Mink的环境,会需要改一个minkEngine底层的代码
  2. 拯救EVA2
    • 重启之后一段时间不能准入,准入之后一段时间tinc不同,导致ldap服务没有起来,又等了一段时间自动恢复了
    • 中途尝试了一个简单的workaround是让/etc/nslcd.conf中吧uri ldapi:///给取消注释,让他优从本地的ldap-slave server中获得登录信息

  • vim查找模糊匹配,之后有时间配置一下

2021-10-13

  1. 3d TR跑试验,继续整理PPT,和弋老师sync
  2. 大晚上回去debug 服务器问题,需要更新驱动…太难了
  3. 接了PPT的锅

2021-10-12

  1. Dev 3d TR
  2. 补充readme文档
  3. 开会
  4. 带新同学熟悉环境

2021-10-11

  1. 讨论如何顺便修改一下BARS
    • intro部分值得加一个衔接,从binarization存在hardware not efficient开始
    • 方法部分值得改进一下说法
  2. 3d TR
    • profiling DiscreteAttn memory,好像没啥值得优化的空间…挺难
    • 跑大的convnet的模型
    • 搞limit-num-points,摸索如何调整
    • [TODO] 搞dataset-subsampling,跑大实验
  3. 商量讨论了投稿TNNLS的计划,小改文章

2021-10-10

  1. 团建day,摸了
  2. 吃了一个inmediate rej,麻了

2021-10-09

Valse Day2

  1. 听了一些报告见了一些人

2021-10-08

Valse Day1

  1. 简答记录一下见闻
  2. 报告层面:
    • 上午下午主会场的环境实在是很差,所以没听到很多有效的信息
    • huang gao老师的报告听了一下
    • chengjian的老师的报告
    • 做类脑以及做3d reconstruction的基本划过去了
  3. Social层面
    • 和HuangGao老师的学生交流了一下
    • 关于DynmaicNetwork的硬件协同相关 - 引荐了一下云鹤 - 听了几个企业的相关
    • 自动驾驶相关: 见到了autox的CEO,肖老师(RGN-D,Shape等一系列很早期的3d DL的工作都是他做的),貌似是MIT的phd,在peinceton当了一段时间教授,现在创业; 他们做的RoboTaxi试点。pursue比较高L级别的自动驾驶,他们对大的硬件平台比较感兴趣,也有FPGA,不过FPGA其实使用只是做一些数字前端之类的。赞许了Nvidia-CUDA的牛逼。
    • 和图森走过的时候正好在聊汪老师的硕士生…我们切入问了一下,技术层面学到的主要东西是: 毫米波雷达比较鸡肋,各个厂之间的算法解决方案不一(算法系统如何构建,Sensor如何Fusion)。主要遇到的问题是长尾的问题,有一些突发事件车比较难判定,比如说一个人突然从树后面走过去出来。
    • 有一个叫超参数的做游戏AI的公司和我们聊了挺久,加了v,他们做的是MARL以及一些游戏自动生成的(比较朴素,像是文字类或者是三消这样的),聊了一些如何落地的,比如说有一些FPS等游戏的AI,可以有一些机器人加入,如何让它菜的真实。
  4. 晚上两个出租车司机很好玩
    • 一个是免费搭了我们一路,说是没电了要去上城区充电,稍我们一程。路上一直在推销卖丝绸的店,然后给我们放店附近了,迷了。
    • 第二个是狂喷马云,怒斥996,阿里吸血。
    • 还说了临江新区近几年发展很好)

2021-10-07

  1. 出发去杭州,争取在飞机上做一下给汪总汇报的PPT
  2. 跑实验,收拾行李,开小组会

2021-10-06

  1. 实验domain-specific的思想,刚刚确定
  2. 看了一下custom-kernel,在新版本貌似还是没有特别好的支持
  3. 继续debug SemKITTI,我们的TR模型看起来稍低了一些
    • 确定是bs还是iter的原因

2021-10-05

  1. 写周报
  2. 批作业
  3. 下午有时间的话开始看VRX

2021-01-4

  1. debug semKITTI
  2. review
  3. for pid in ps aux grep multiproce awk ‘{print $2}’; do echo PID:$pid; done 删除掉gpu的残留线程
  4. ipynb文件坏了,报错NotJSONError('Notebook does not appear to be JSON: \'{\\n "cells": [\\n {\\n "cell_type": "c...')

2021-10-03

  1. 批作业(居然还没更新),回答问题(从默认界面的讨论区进入)
  2. 接了一个review任务
  3. 安装torchsparse的时候发现他们的trouble-shooting还是很鉴的

2021-09-30

  1. 和年崧开会分进度,需要阅读整理SPVNAS的setting,尝试在semanticKITTI上setup起我们的baseline
  2. 更新proposal PPT

2021-09-29

  1. 做prposal PPT
  2. 整理试验,ldap素材

2021-09-28

  1. 上午de了几个bug,又作了很蠢的往avgmeter里丢的不是loss.item()的bug导致炸显存
  2. 下午整理思路,补充word
  3. 发病看到了一个eva的插画 pixiv
  4. 又去救服务器了…

2021-09-27

  1. 继续推进实验
  2. 整理了一系列实验,debug了diverseReg
  3. 花了一些时间写且跑了label embedding方案,感觉好像不是特别有效(方案不是很对)
  4. 晚上修改aux-head,整理思路
  5. 下午去帮忙安装新服务器

2021-09-26

  1. 上午开会
    • 确定了我们目前对VisualConcept的理解,先通过GradCAM获得了gradientMAP之后再做SLIC
    • 需要对着VRX来复现了
  2. 下午开会
    • 顺便推进了一些3d TR项目的整理
    • 起了几个新实验
    • 推进了一系列开发

2021-09-25

  1. 将eva7上scannet的环境迁移到了eva1上
    • conda-pack并且安装新的
    • MinkEngine安装有一些奇怪问题: 找不到了几个库
    • export LD_LIBRARY_PATH="/opt/cuda/lib64:$LD_LIBRARY_PATH"
    • sudo apt-get install libopenblas-dev -
    • 这个point炸了,直接从对应位置直接拷贝过来了
  2. 安装ninja
wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force 

2021-09-24

  • 撰写bash script中的错误: 自己定义了一个变量叫PATH,把原本的一些命令的环境变量给覆盖了,导致报错说没有该命令,很蠢,引以为戒

2021-09-23

  • 落枕依旧
  1. 清理了一下我们TR的算子
    • 除了过Substract的那个Linear,按理说follow原本的TR,这里用内积甚至不需要那个linear层,别的地方其实本质上直接加expansion貌似就相当于扩大num_head了
  2. 组会: ICRA投稿
    • ExploreBench: 一个Explore任务(找一个frontier - 机器人去哪里的决策问题),由于室内室外,以及仿真器等环节都存在很大的区别,所以需要统一的bench
    • 探索数据集: 有一些basic的scenario(类似迷宫)
    • 评价指标: 覆盖率达90% (meta来看有一些像surgery中P@k这样的指标)
    • 3-level平台,DRL算法训练慢,引入了一个grid-nased的simulator(有点像p roxy的获得evaluation)提出了一个比迷宫层,更加低层的一个grid-based的粗粒度的仿真器
    • 统一接口,快速迁移 - MA Endurance-limited-CPP system
    • 针对无人机的续航受限的问题,对不同区域的重要程度打分得到一个heatmap
    • 将地图刻画为一张graph:,将整个空间做seg,得到一个heatmap,并将heatmap的权重传递到边和点上
  3. 下午开小组会,分锅写书的任务

  4. 查询ldap服务器,记录笔记,Transfer repo的ownership到thu-nics下

2021-09-22

一年一度的落枕又来了

  1. clean代码和年崧讨论kITTI
  2. 阅读了妃哥提供的几篇TR相关的文献
  3. 修服务器,起新container

2021-09-21

  1. 早上起来发现205居然挂了,发现是实验室断电了
  2. 和年崧分了一下开发任务,主要bottleneck在我这里
    • 完成之前没有完成的非load_whole的aux(估计不一定会用得到)
    • 测试discreteAttn方案的DDP!(作为之后实验的基础)
    • 实现各种新功能
    • TODO: clean代码

2021-09-19 ~ 2021-09-20

  1. 不负众望的终于感冒了,卧床休息
  2. 期间写好了一整个nicsefc-readme的repo
    • 还需要补充一些额外的内容

2021-09-18

  1. 给雷老师汇报进度:
    • 安装VRX
    • 分割
    • 提交了助教申请
  2. 修水管…
  3. 修服务器发现是校园网的dns挂了…
  4. 晚上需要批作业

2021-09-17

  • “eva care”
    • 整了一个gpu-burn的程序测试gpu,放在了eva7的我的用户的home目录上
      • 在make的时候可能会报错找不到lib-cuda.so,将ln -s /usr/local/nvidia/lib/* /usr/local/lib以及/usr/lib中应该就可以
      • make完了之后直接./gpu-burn -d 3600
    • 早上又出现了auth-thu无效的情况,但是莫名的在usereg上是可以的
  • 调试信息:
    • 存在的最麻烦的问题:如果楼下的东西炸了,是否能正常更新IP?

2021-09-16

一堆破事

  • 早上去机房看服务器,厂家解决电源问题
  • 刚开始clean了一部分代码
  • 下午开会,接助教的锅
  • 修老机器,报了些硬件错误
  • 需要周六和雷老师约一次讨论,签字

  • “eva-care”:

2021-09-15

  • Paper reading: Voxel Transformer for 3D Object Detection
    • contribution: voxel-tr for 3d det; local & dilated receptive field; Fast Query(hash table like MinkowskiEngine)
    • Perf.:(KITTI & Waymo, outdoor )not better than Voxel-RCNN(SparseConv)
    • Det只有一个encoder?只需要做representation;decoder是一个pixel-wise的prediction(这个层面上可能有区别,所以需要引入auxliary supervision)
      • 之前也出来过一篇Pointformer(CVPR20), 性能与该篇文章类似,flow也类似。
    • 4 Multihead (之前我们做实验的时候为了控制计算量类似,如果用到多head会减少channel数目)
      • param size与Conv类似
    • ?这篇文章是否说明了tr不存在优化难的问题?det和sseg任务的backbone优化是否有本质区别?
      • 之前使用distill将点数提升,是建立在KNN的情况下,换成SparseNeighbor差距减少了一些
      • KNN-based和SparseQuery-based的区别(neighbor在物理上绝对坐标是一致的,PosEnc会更容易得到,以及更容易learn)
  • PV-RCNN比VoxelRCNN低,也早
  • Voxel+TR的文章也逐渐在出
  • 如何体现TR更优秀?
    • 目前大家都是点数稍微高一些,很多人强调global的感受野重要

2021-09-14

  1. 低比特论坛

1.1 杜子东老师,ISCAS21

  • Cambricon-Q,hybrid Arch以支持低比特训练
  • 很多现有量化算法没有很好加速效果,额外引入了CPU/GPU之间的大量数据搬运,统计信息
  • Adaptive QAT。随着训练深入,逐渐放低量化频率(早期多更新,后期晚更新)
  • 用一阶统计量的差异,来决定位宽
  • 观察了训练过程中最值的变化范围,前期有剧烈变化
  • 局部量化
  • 多路量化
  • 高位宽数据做PIM,省dram和加速器之间的data transmission
  • Duzidong

1.2 李国齐 1.3 程健

![](https://github.com/A-suozhang/MyPicBed/raw/master//img/20210914105745.png

1.4 陈健飞

  • quantization variance随着比特数减少比特级别增加
  • 在理想情况quantization grad相对于QAT,是zeor-bias的,因为其中都是线性操作(在backward的chaim rule中); 理论上需要更小的lr训更久
  • Variance-reduced Quantizer,以减小花很多的精度去存储0

回去发现老eoe0又出现了卡死重启的情况(ip准入不好可能是服务器本身卡死了)

2021-09-13

  1. 梳理思路
  2. 早上开会
  3. 下午去帮忙组织workshop
  • bug report,我自己的服务器不能入网了,从主机进入之后attach的时候很卡;

2021-09-12

  1. 茶余饭后阅读鸟哥的linux指南
    • 恶补一些linux的背景知识,还挺有趣的
    • 目前看的部分主要和磁盘有关
  2. 调试3d TR的项目
    • Profiling
    • DiscreteQK的方案
  3. 看实验室网管文件,ldap服务目前在eoe0上好像还没有起来
  • Pytorch的profiling
    • 官方文档上的,但是貌似只支持新版本,直接是torch.profiler,文档
    • 老版本的地方在torch.autograd.profiler上,有一个简书教程
  • 报错了trying to backward through a graph twice的错误,如果简单不知道问题,思考是不是存在了跨batch的变量
    • 这次我的原因是因为一个reg的term没有在每个iter清零

2021-09-11

以后涉及到服务器维护的手动打一个”eva-care”的tag把)

  1. 起老的服务器EOE0,以及修正修改域名
    • 老eva7(EOE0)的网线应该插在这个口上,目前的IP是101.6.69.4
    • 登录用户名zhaotianchen-admin,密码不是常用的那个kl
    • 参考了凯哥的网管总结 - 网络配置
    • 修改hostname: 需要修改 /etc/hostname 以及 /etc/hosts ,使用hostname命令就可以看到hostname,由于实验室用到了tinc服务,在/etc/tinc/tinc.conf中也做了修改
  • 遇到的最大问题是,当我登录服务器的时候,报错了host key changed!以及很多warning,用报错信息提示的ssh-key-gen -f xxx可以暂时解决,但是发现登录到了一个别的container中
  • 原因是老eva7和新eva7的container的lxc config中使用了一样的hw addr,在dhcp这一步出错了(DHCP的是用你的MAC地址去拿IP,而我们的lxc给两个不同的container了一样的mac地址,IP分配层面就产生了问题),从而间接导致因为ip的出错。(本质上是两个不同的linux系统,所以ssh搞不清楚了),妃神提及这相当于ARP攻击了。
  • 紧急将所有的container进行了stop,并且修改其config(注意目前我只将eoe0中的wcy container进行了修改,其他的老container如果需要启动之前记得需要修改!)

  • 批量启动/停container,直接用bash script: for name in $(lxc-ls); do lxc-start $name; done
  1. 中途出现了登录205报错 too many logins for zhaotiancehn
    • 把我的terminal关了重启就好了,原因未知
  2. bug report:

wcy container以及我本地从42222端口scp auth-linux脚本,结果只返回一行欢迎文字? ./auth-thu脚本在上面表现诡异,无法正常准入 以及这台服务器的ldap服务还没有正常

2021-09-10

  1. 和ray开会,更新讨论的内容到ppt
  2. 处理被hack的事情
  3. 上传助教材料
  4. 准备低比特论坛问题

2021-09-09

  1. 继续调试服务器
  2. 写了DiscretQK的方案,性能很差,需要debug

2021-09-08

  1. 少许尝试看一下ip route的问题

如何给containre设置静态ip 在主机上可以修改/var/lib/lxc的config去取消掉lxc-bridge的效果,但是实际上不能这么做因为ldap也是走的bridge 尝试修改container内部的/etc/network/interfaces文件内部eth0以及eth1的metric,但是发现实际上container并不是用的这个文件 尝试在主机上修改dhcp的文件的config的metric,无法修改

(使用service networking start发现container内部的networking服务被mask掉了,使用/etc/init.d/networking restart可以执行操作,但是没用)

最后直接crontab

Crontab-tutorial

通过service cron restart/status来观察crontab service的情况 crontab silently没作用的原因是:用了一些命令,比如说route,它本质上是在某个bin文件夹下的,默认的crontab不会将这些加到PATH里,也不会报错,就silently fail了 以及不建议用crontab内部进行sudo操作,如果要涉及到root权限的可以直接sudo crontab去修改root用户的crontab

之后妃神解决了这个问题,在/etc/networkd-dispatcher/routable.d中添加了一个脚本,内容为ifmetric eth1 200 (通过ifmetric库实现,需要加到我们的默认rootfs里)

TODO: 十分缺乏计算机网络的相关知识,需要抽时间,搞清楚这些东西到底是在干啥 Netplan

  1. cuda环境标准化

由于我们的cuda以及nvidia-driver的位置与标准的不一样,正常都是在/usr/local/lib或者是/usr/lib当中,但是我们的cuda在/opt/cuda中,而nvidia-driver在/usr/local/nvidai/lib这样的位置,所以有一些例程会很容易报错在/usr/lib的位置找不到某些cuda.h或者是libcuda.so文件这样的问题。解决方案是手动添加软连接。

ln -s /usr/local/nvidia/lib/* /usr/local/lib/ ln -s /opt/cuda-11.1/ /usr/local/cuda

2021-09-07

  1. 整理了3d项目的TODO,但是没有时间do
  2. 修服务器

整理一下修理服务器过程中遇到的问题以及solution

  1. 老eva7的密码找不到了

搞半天想通过u盘登录之后重装系统,我好蠢 实际上可以通过u盘的系统来“加入”到老的系统中新建用户或者改密码

通过chroot命令可以修改root密码

实现方式是通过插入u盘并从u盘启动,进入空系统,将原本的文件系统挂载,比如 sudo mount /dev/sda1 /media/sda 然后通过 chroot /media/sda1 之后你就相当于”attach”到了原本的文件系统中 passwd或者正常的useradd -m somebody并且将其passwd somebody 这一步可以通过查看/etc/passwd的文件中看是否有新用户被加入了,来check是否合理 做完了操作之后给exit再remount了

  1. 正常登录进了eva7之后发现其他都正常但是ssh服务起不来了

查看systemctl ssh status 以及 sudo service sshd start命令发现都是failed (需要找一个systemctl以及service xxx这几个命令的区别) 查阅了一些post之后发现可以看 sshd -T来检测错误,发现有一个sshd config中AllowUsers中报错,进入/etc/sshd_config中把那行注释了好了 但是之后启动仍然有错误,报错是too many opened files查阅资料之后

看到了一个和inotify相关的opst,然而并不是在这个问题 后来参考了这个串 查看最大open的文件数ulimit -n -H, 然后用ulimit -n 4096修改 这之后进行了测试sshd正常起来了,可以登录


服务器相关的知识以及今天遇到的问题解决方案:

  1. 老eva7(叫EOE0把)

开机之后用F11以及F12进bios kubuntu图形界面可能开着可能没开,如果没开全黑的话,用CTRL+ALT+F1来开terminal进行登录 网线很关键(4-101的好几个网口都不行),凯哥座位底下的可以 连接网线之后ifconfig应该是可以在第一个位置看到一个101开头的ip,应该就可以用绝对ip进行登录了

  1. LDAP系统

本质上是开机之后我们会与一个远程的服务器进行数据共通,拉取我们实验室账户的用户名密码,然后同步到服务器本地主机。(相当于全部用户都给useradd上去了) 另外container内部本质上也是通过和主机共享LDAP服务以达成的账户。

以及其实/etc/login.user.allow,本质上是一个与LXC或者LDAP invariant的东西,就是和ssh管理这一层的; 不过要注意自己useradd的用户不要和LDAP的用户重名

  1. 联网相关

a) ping的通域名,但是登录丝毫没有反应,基本是域名没有准入 b) ping不同域名,寄了,ip route出问题了,联系网管给解决

  1. 登录相关

a) 能输入密码,一直报错Permission Denied,大概率是自己不在这个container的login.user.allow里面

  1. CUDA相关

服务器刚开机需要进行两次deviceQuery,一次是在主机上: 主机上的cuda路径在/usr/local/lib/cuda 第二次是在container内部,注意一定要用sudo执行命令,在/opt/cuda-xx.x

  1. Container相关

一个container如果拿不到ip了,可以从主机attach进去执行一下dhcp基本上就有了


又在孙博的空白服务器上尝试安装cuda

然后没有gcc和cmake,手动安装一下 去eva7拷贝driver安装 犯了一个很愚蠢的错误,就是先执行了run.sh文件,但是好像问题不大? 修正之后好了,这个部分参考凯哥的网管部的安装指南 新服务器IP(101.6.69.84),主要是找了一些文件拉过来直接跑了

2021-09-06

  1. 上午开小组会,带了一下写书的事情
  2. 中午sync,关于3d 项目的新方案
  3. 下午出门了,奥森好看
  4. 晚上写周报,选课

2021-09-05

  1. debug了DDP,现在终于behave正常了
  2. 文章,思考,准备sync素材
  3. 晚上读SAR paper,准备约明天sync

  1. TR的参数量trade-off相关

HaloNet

LeVIT

  1. Seg的Loss相关: 大多数都是与imbalance以及metric相关的(Dice Loss,或者注重怎么修正FP,TN)

有一个需要stress的问题是low-level的boundary与high-level的context在Seg中大家经常分开处理

2021-09-03 ~ 2021-09-04

  1. 阅读与Seg本身较为相关的Loss func设计的文章,思考是否可以加入intermediate supervision
  2. 继续推进VQ的debug
  3. CodeDev:(一步步做吧):
    • Align DDP train & our method
    • 将aux信息的引入revisit并调试清楚
    • 看KITTI-related stuff
  4. SAR图像相关的知识,下午开会时候看看整理一下

papers that cited the MinkowskiNet

VMNet: Voxel-Mesh Network for Geodesic-Aware 3D Semantic Segmentation

RandLANet - CVPR20 Oral:

[CVPR 2020 Oral] RandLA-Net:大场景三维点云语义分割新框架(已开源) - Qingyong Hu的文章 - 知乎](https://zhuanlan.zhihu.com/p/105433460)

2021-09-02

  1. 昨晚发现实验出问题,sparse_mask生成错了
    • 需要实现一版本输入是k的StraightThrough
    • 实验一个之前的dicreteAttn的多vec_dim的版本 (done)
    • 发现了conv_weight和直接rand初始化channelwiseConv的效果不一样:
    • ck了一下conv weight的默认初始化方式是xavier,发现幅值层面好像差距比较大(done)
    • - pytorch repeat以及expand的梯度关系 (done) - 关于参数量大小的思考: - 感觉可以尝试加一个带squeeze的ChannelConv,能比一般的channelConv带来多少优势? (等卡)
  2. 昨天没完成的:寻找文章,并且阅读思考
  3. 需要看一些SAR图像相关的内容,看zhihu和那个素材

机核的乐理电台:

  • 毕达哥拉斯: 五度相生率 (由于存在开方问题导致某几个音是用不了的,没有中音!)
  • 巴赫: 十二平均律 (7音+5中音,对应着钢琴的5个黑键)
    • 将一个8度平均分为12份,每个等分叫做半音,一个8度表示了频率x2,所以每个半音之间组成一个等比级数,q=1/2^(1/12)
    • C,G,D,A,E,B,F^#
  • 音阶:
    • 传统中国和日本都采用五声音阶(少了两个音) - do,re,mi,sol,la - 宫商角徵羽,计算方式是”三分损益法”
    • 7声音阶(Heptachord): do-Si -> (CDEFGAB) 对应着八度音程
  • 调式
    • 自然的大调,C大调是最简单的((表示这个调式从do也就是C开始,其实可以从任何一个音开始),内部没有升(#)降(b)符号,可以只用钢琴的白键完成
    • 比某个大调低3度就叫小调
    • 多利安(Dorian)调式: 从大调音阶的第二级开始的,以D为开始和结束,吟诵音(比起始上5度,为A)
      • 例子是魔兽里的酒馆音乐,欧洲系,欢快,轻松,然而诞生之初它是代表宗教庄重的
    • 弗里吉安(Phrygian)以E开始的,吟诵音是B
      • 肃穆,有种埃及感,神话与东欧感
    • Mixolydian米索利安,G开头,吟诵音(+4)为D,为blues以及rock、pop的base
  • 对于音程和和弦,人天然其实是没有prefer的,有一个社会学实验

Paper reading of 2021-09-02

  1. TR相关的新文章:

Exploring and Improving Mobile Level Vision Transformers

We study the vision transformer structure in the mobile level in this paper. We find a dramatic performance drop. We propose a novel irregular patch embedding module and adaptive patch merging module to improve the performance.

文章在讲一个在mobile-level apply TR的故事,把现有的其他方法拉到很小的FLOPs数目一起比,发现大家崩溃了: 0.1 ~ 1G的FLOPs(resnet的一半size) 摘要中也提到了说SelfAttn更适合用来capture相对HighLevel的信息,而LowLevel做不好,所以提出了一个Irregular patch embedding(多个reso进行patch切分) + mergeing(concat起来做一个linear)的方式,将后续的结果作为TR输入(个人感觉本质上和前几层用Conv有些类似)

Vision Transformers with Patch Diversification

Vision transformer has demonstrated promising performance on challenging computer vision tasks. But directly training the vision transformers may give sub-optimal results. We introduce novel loss functions in vision transformer training to encourage diversity across patchrepresentations for more discriminative feature extraction.

也是在改进TR的训练,但是不是从修改架构层面(加入Conv),而是从一个正交的方向(Training Techs).核心Motivation是发现了TR各个patch representation的相似性,表示了其实self-attention block将不同的patches给映射为了类似的latent representation。claim说引入了所谓的Novel loss(目标是divresify feature)之后,能够stabilize training以及能够训练更大的width以及depth的TR

(diversify feature的思路之前的DeepViT中也提到过,它是发现深层的feature map很类似。)

如何去评估?就是算了个patch-wise的consine similarity,在token的维度分别计算(排除掉class token* - 说明它follow的是最朴素的ViT-like的非Conv的方案, 后面还有Swin)都与Resnet对比,发现差距很大;而且随着层数变深,越来越差。

提出了几种loss,最简单的就是pairwise的contrastive loss,提出了更adavanced版本,比如contrastive loss: 由于前层的similarity相对还比较好,所以鼓励每个patch的embedding都更接近自己的前一层,而远离同一层的其他patch的embedding。以及一种结合CutMix的方法: 将两个图片给mix在一起作为输入,这样mixing loss会让patch only attend to part; 最后把所有的loss加权在一起

顺便看了一下几种常见的aug方式:

  1. MixUp整图片两张叠加
  2. Mosiac: 将4张图片拼在一起
  3. CutMix: 将一个图片的一小部分贴在另外一个图片上
  4. Cutout:切掉一小块
  5. FMix: 通过对灰度图的分析,来将灰度图在一定阈值的部分贴到另外一张图上(类似CutMix但是更加柔和)

Geometry-Free View Synthesis: Transformers and no 3D Priors

A transformer-based model can synthesize entirely novel views without any hand-engineered 3Dbiases. This is achieved by (i) a global attention mechanism for implicitlylearning long-range 3D correspondences between source and target views, and (ii) a probabilistic formulation

对于一个SceneSyn的任务,之前的CNN-based的方法需要一些3d的biases,但是它用TR所实现,claim不需要额外的内容直接训。

  1. 如何合理的分析3种架构的优劣?

推送

本文是中科大&MSRA在DNN的CNN、Transformer以及MLP三大流派纷争方面的一点深入思考。为分析不同架构的特性,作者首先构建了一个统一架构SPACH将Mixing做成可配置型,以此为基础上CNN、Transformer以及MLP进行挖掘得出:多阶段优于单阶段、局部建模非常重要以及CNN与Transformer的互补性。基于所挖掘特性构建了一种CNN与Transformer混合模型,所得模型仅需63M参数量即可在ImageNet数据集上取得83.9%的top1精度,优于Swin-B、CaiT-S36。

将三种算子合并到一个框架中并作对比,叫做SPACH,将聚合过程抽象为了Spatial以及ChannelMixing的过程,对Conv使用了DepthChannelWise的Conv(由于大家其实都有Linear层作为ChannelMixing),有效规避了ChannelSize的问题。提了两种macro,有Multi-Stage的和Single-Stage的(结论是multi-stage带downsample的一定更好)。通过改channel_size, block数目,内部的expansion ratio。其中由于(绝对位置编码会破坏translation invariance,所以采用了Conv-based的PosEnc)并且给MLP也加上了。

mention了利用Parameter Sharing来减少参数量,发现了MLP模型过拟合很严重。 结论是Conv generalize better,认为在TR中,sparse connectivity(本文中指代的是Conv的local连接,不是连接到所有的token)可以帮助提升generalization ability,而dynamic weight以及global的receptive filed是增加capacity的 表达TR与Conv很大程度上是Complementary的。

提出了一些能sota的hybrid method,就是用sepconv3x3去替换某些TR,发现其实性能和某些结合Conv的TR方法其实是on-par的。

  1. ICCV21的Seg的loss修正,看看能不能对supervision带来指导

看起来主要针对Det和InsSeg等涉及到regression的操作,感觉参考价值没那么大

RSLOSS 文章解读

以及其他的几篇TR+Seg(好多用在Med中的基本都是直接用)

2021-09-01

  1. 早起和年崧sync开会,看了一下sematicKITTI(有空自己也熟悉一下)
  2. debug了VecQuant的问题,将问题锁定到codebook式的操作不与channelwiseConv等效
    • 继续调试其他的配置,晚上得挂一组
  3. 帮zixuan改图

fake_screen_shot插件改截图

需要阅读的几篇文章:

  • 整理推送中的文章到zotero,并且整理出需要看的文章
  • 找到那篇ICCV oral的Seg的涨点文章
  • 读懂Detr那篇文章

2021-08-31

  1. 3d TR紧的事情:
    • debug VQ到底为啥低
    • 实验Codebook
  2. 写文档,梳理思路,准备开会

  3. 开完会了,整理会议纪要!然后争取睡觉前起一个小baseline(好像vecQuant还是没有debug好)

2021-08-28 ~ 2021-0829

  1. 继续推进3d TR实验,内容基本在slack更新了
  2. 推进可解释性项目,讨论,讲survey

[TODO] 需要check一下助教录入的事情 - 找到了邮件记录,问题不大吧大概


  1. pytorch的broadcast机制,如果某个dim的size是1可以直接broadcast,但是如果是能被整除的并不会默认直接广播(合理),需要reshape出一个具体的broadcastable的维度 实测之后发现用repeat会消耗更多的显存。
[N, 16]*[N, 4]   ->   [N, 4, 4]* [N,1,4]

2021-08-27

  1. 完成可解释性项目的总结与推进
    • DT相关内容的整理,多看一些baseline文章(?)
    • 我们的方案的列举与实验结果
    • VRX文章阅读
    • Survey的整理
  2. 继续实验3d TR:
    • 目前显存炸了的问题(没有问题就是被挤爆了)
    • 需要起的实验:
    • ContinuousTR的SoftmaxK问题好像还是比较难解决…
    • param + multiChannelConv能好多少,确定是capacity还是optimization的问题
    • 构思一个Vector Quant的版本
  3. 将学期规划写到文档上并

2021-08-26

  1. 调试TR,与妃神讨论,还是得从优化角度切入看看,是capacity还是training的问题(按说ChannelConv来说,capacity是够的, 而且如果说dynamic采样没有变好的话,那么capacity其实本质没有变大)
  2. 部分开始了可解释新这边的整理

2021-08-25

  1. 实现了一些新的版本的TR,连续的TR,继续调试
  2. 与飞哥一起讨论TR+NAS相关的idea
    • 扫到了ICCV的这篇AutoFormer: 结果82.x比较一般,用的是纯ViT的SS
  3. 阅读VQ-VAE找思路

VQ-VAE: Neural Discrete Representation Learning

将原始VAE中的输出discrete化(discrete latent),so the prior is learnt rather than static 能够解决”posterior collapse”的问题: 当autoregressively的decoder很强的时候,一些latent被直接ignore掉了

  • preliminary of VAE

input data x prior p(z) post & prior is normally gaussian with diag covariance (for Gaussian Reparameterization) encoder that parameterize the posterior dist. q(z|x) (z is the discrete latent) decoder that p(x|z)

other tricks: autoregressice prior and posterior, normalizing flows

  • 离散化的latent空间

训练了embedding space e - [K,D], 用KNN的discrete look up,posteriorq(z=k|x)就是一个one-hot的形式,在argmin(z_e(x) - ej)的时候为1. 将这个模型作为VAE的posterior并且给一个z的uniform prior。

  • 梯度

后验用argmax,没有梯度,用STE,认为decoder输入的梯度就是encoder输出的梯度 对于encoder的输出ei,由于reconstruction loss没有梯度导向它,所以需要用VQ(Vector Quantization - Dictionary Learning中的一个经典方法),用ei与encoder输出的L2 error。由于需要不断更新,我们可以用encoder输出的moving avg.

另外,由于embedding soace是dimensionless的,(?) 我们需要保证embedding ei与encoder param同步训练,所以加了一个commitment loss (为了不让e直接uniformly expand到整个空间?而是在输出的附近去找聚类中心?)

Loss: logp(x|zq(x)) + || Sg(ze(x)) - e || + \beta* || ze(x) - sg(e) || SG - 表示straight through,反向梯度为identity

(实际实验中的K取的是32x32 for ImageNet)

整个模型的Log-likelyhood log(p(x)) = log( \sum_{k}{p(x z_k)p(z_k)} )
decoder - p(x z)是通过encoder训练(z = zq_(x)),所以当训练收敛之后decoder应该不会在非z_q(x)有值的地方(聚类中心点)产生很大的prob。因此我们近似 log(p(x)) ~= logp(x|z_q(x))p(z_q(x))

(?) - prior is uniform, autoregressive distribution over z?

2021-08-24

  1. 补了昨晚没review完成的文章
  2. 实现新的Q的方式,加入新的SplitCodebook的方案
    • 有没有可能用Conv来实现?ME-playground里写个case验证一下
  3. 整理可解释性的paper
  4. 读VQ-VAE以及是MInkNet的原文

2021-08-23

  1. 准备讨论,继续沿着DiscreteAttn来走
    • 需要fix一下QK的操作(不会引入新的param)
      • for循环一下neighbor map,去手动做一下操作
    • 之前想做的改进
      • Split
      • Regu;arization Neighbor
    • 需要setup上数据集Semantic KITTI,并且做可视化
  2. 整理3d TR项目进度在案
  3. 周报
  4. ST的低比特讲座,给一个文档
  5. review文章

(忙里偷闲上个传说*)

  • 早上起来push代码突然发现github不能用密码auth了,remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
    • 参考官方教程
    • 生成之后放在了本机的~/.git/git-tokens

听了一个talk

Yueqi Duan (stanford.edu)


听了一个商汤的关于低比特相关的Talk

  1. 通用量化方式(各种通用平台所支持的)

    1. 非均匀量化: 乘法变加法,加法变索引
    2. 非对称量化: x_q = clip(round(x/s - z),n,p)
      1. 存在参数scale以及zero-point
    3. Per Tensor或者是Channel
  2. 部署的等级

    1. 无数据的离线量化: 不需要BackProp,provide一个浮点模型,直接进行量化生成
    2. 有数据的离线量化,需要一定(几百张)的校准数据,校准BN或者激活值的分布,不做BackProp
    3. QAT: 需要数据且需要反传,通过完整的训练和超参数调整
    4. 修改网络结构的QAT: (Improved quantize method)

  3. 获得实质的推理性能提升

    1. 必要条件: 硬件支持INT的高效计算(GPU pascal架构下支持dp4a的指令),下图表格中的是理论加速比,不考虑数据搬运(经验是TensorRT8bit2x左右加速比)

    2. 需要软件推理库的优化:

      1. 手工优化
      2. 编译优化
    3. (然而实际更多的是等待硬件厂商支持)很多时候工具支持有限,有时候需要自己将量化参数塞入

    4. Qualcomm的DSP的SNPE(需要将ONNX的模型转化为对应的模式)

    5. TernsorRT,MNN(Ali),ncnn,Tengine

  4. 如何挽救精度损失?

  1. PTQ的现状

    1. 如何给定一个Tensor获得截断范围:
      1. Percentile使用分位点(需要遍历一些分位点)
    2. 存在问题:
      1. 校准数据有限,可能domain(夜间和白天/RGB以及红外)
      2. 异常数据分布: weight的outlier
      3. 优化空间有限: 只能调整量化参数
      4. 优化的细粒度选择: (逐tensor还是layer还是end2end)
    3. 上限是不是会被QAT所bottleneck
    • 提到了学术场景和工业场景的差距,学术界将问题极端化:
      • 无数据的量化:
        • 直接借助BN的值来确定截断值
        • 利用BN等信息生成图片之后校准
      • image-20210823193136626
        • 生成图片
      • CrossDomain的量化: Yuhaihao
        • 训练和测试都用DomainA,但是量化时用domainB
        • 用A的数据去更新校准BN参数
  2. 一些额外的问题:

  • weight异常,BN统计量奇怪,mergeBN之后参数可能会出现异常值
  • 特殊层会设计tensor合并(Concat以及ElementWise),会改变; 难解决,靠引入QAT的约束,最坏方案是使用混合比特
  1. 额外的优化空间: Adaround:
    1. 不仅仅是找到Activation和weight的scale和zero-point,rounding方式也是可以优化的
      1. 有实验结果说明Stochastic Rounding能够比一般的更好
      2. 能够在PTQ中训练rounding,学习一个额外的w加在scale里面(涉及了反传,但是能够独立于训练进行)
  2. 优化粒度的选择

  1. Benchmark

  1. 做的比较好的组
  • Intel以及高通的Marcus组

2021-08-22

  1. 学校的教材杂活,出题目

  2. 准备review文章

  3. 推进整理实验结果。


其他TR相关文章的近期整理

[2103.12957] Multi-view 3D Reconstruction with Transformer (arxiv.org)

[2108.08839] PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers (arxiv.org)

[[2107.13108] PlaneTR: Structure-Guided Transformers for 3D Plane Recovery (arxiv.org)](https://arxiv.org/abs/2107.13108)

[2103.11816] Incorporating Convolution Designs into Visual Transformers (arxiv.org)

[2108.04444] SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer (arxiv.org)


Huang Qixing老师的Hybrid的Paper

  1. ICCV21: 2105.10620] HPNet: Deep Primitive Segmentation Using Hybrid Representations (arxiv.org)

Task: 3d Primitive Patches

从predicted的geometric-parameter中导出: semantic descriptor. spectral descriptor

HPNet包含了

  • Dense Prediction module - Type: bianry,描述了每个点的primitive type - Params: 预测neighbor的shape parameter - Normals: (Optional)
  • Spectral Embedding
    • Consistency: 针对每种primitive,设计一种d(pi, si),p与s分别为输入点和相关于其他点j的shape parameter, pi与sj之间的weight是exp^( -d(pi,sj)^2 / 2\sigma
    • Smooth Matrix: 对于一个邻居图,定义一个Adj Matrix,内容是含超参数的预定义形式 exp^( ||ni - nj|| / 2\sigma
    • 通过前面的intermediate representation生成两个matrix,并用以加权Point-wise的Semantic feature
    • Clustering

six primitive types: Plane, Sphere, Cylinder, Cone, Bspline-OPen

image-20210822204143683

  1. ECCV20: 2006.05682] H3DNet: 3D Object Detection Using Hybrid Geometric Primitives (arxiv.org)

Task: 3d Det

predict a hybrid set of geometric primitives

- centers
- face centers
- edge centers

define a distance between the object and geo primitives(to enable object and geometric primitives)

matching and refinement module

![](https://github.com/A-suozhang/MyPicBed/raw/master//img/20210822213141.png

  1. CVPR20: 2001.01869 HybridPose: 6D Object Pose Estimation under Hybrid Representations (arxiv.org)

Task: 6d Pose estimation: 从一张2d图片中产生某个物体的xyz位置以及朝向(translation & rotation)

Multi-Input intermediate representation guide

- KeyPoints (widely used): predict 2d coordinate of predefined K points(Key-point based pose estimator network like PVnet)
- Edge Vectors: edge vectors along pre-defined graph, 建模every pair of keypoints的displacement(直接用全连接图)
- Symmetric correspondence: 在一个Mask区域的预测pixel-wise的flow(Extended Ver. of FlowNet)

再加一个Refinement & Regression的Module

  1. CVPR20 1912.11695] Extreme Relative Pose Network under Hybrid Representations (arxiv.org)

2021-08-21

  1. 实现一版本新的类似MOE的,加上linear层并过Softmax之后加noise
    • 依据结果思考相比MOE,我们的case中认为这个多Set of weights作为point-wise的MOE是否合理(一半的Dynamic Inference也没有这么高的自由度)
    • 将当前的one-hot采样的arg给改成多个的版本,并取消 - 实现好了
  2. 实现MultiStageSplitting的代码实现(TODO),属于是对QK的训练技巧
    • 一开始是一个Conv,然后复制kernel作为初始化更新为多个Conv,让他们独立(但是怎么让他们选中不同的呢?),加一个小noise?
    • 会动态append新的codebook,在inferenece的时候需要兼容
  3. Hybrid Represent文章阅读
  4. 下午帮妃哥看两篇文章
  5. 服务器的磁盘写入bounded了,看一看,更新了一下eva服务器的文档
  6. ICCV的新TR+3d的文章阅读
  7. 帮忙做虚拟仿真实验,work work

2021-08-20

  1. 狂暴实验,验证方案,约sync
    • 整理梳理了现有的思路
    • 核心问题提升是如何去优化这M Set of AttnWeight
  2. 阅读文献的flag
    • 简单看了一下MOE,没有太多的技巧,思路很朴素

MOE

  • 最早的一篇文章是Outrageously large neural networks: The sparsely-gated mixture-of-experts layer.
    • 多个Subnet的输出过一个Softmax,然后再加一个TopK的限制
    • 是为了进一步提升网络效率(当已经性能饱和的时候,用更少的参数量来获得性能提升),常被用做超大规模的模型设计
    • 批缩小问题: 由于平均每个expert接触到的样本少于N,所以需要更大的DataParallel; 以及存在一个平衡的问题(直接乘一个系数)
  • Google - SwitchTR: 超大规模的TR模型
  • Code Example

2021-08-19

  1. 解决了几个之前的bug,在relu之后直接用BN好像是不合理的操作
  2. 尝试了anneal的参数,并没有明显好转
  3. 现在距离好的结果还有两层
    • 尝试多Conv是否能够和单conv一样甚至更好: 需要参考的是更多参数的训练方式,以及MixtureOfExpert有没有引入一些额外的计算方式
    • 动态的choice是否能够起到好处
    • 以及多次卷积的计算消耗能不能减少一些
  4. 修改书本

  5. 目前已经有的一些结论
    • PosEnc不如Conv,可以用一些参数的代价来更好的*(不用减法直接用conv还可以省显存)
    • Vec_dim可以小一些
    • ChannelWise的Convolution在当前场景和一般的Conv差不多效果,但是参数冗余很大

2021-08-18

  1. 实现可以annealing的操作
  2. 实现基于减法的
  3. 继续实验
  4. 读MixtureOfExpert类的训练方式
  5. 整理HybridRpresen的文章

2021-08-17

lofi-cafe 不错的BGM网站,可以挂着

  1. 整理寝室
  2. 完成了做字幕工作流:
    1. 讯飞听见,0.5元/分钟生成字幕文件并矫正,生成SRT文件
    2. Arctime进行位置,字号调整并压制,导出MP4
  3. 实现好了Attn列举好了Attn的方式
  • 查看intermediate的variable的grad,在调用backward()之前对对应tensor执行y.retain_grad()

2021-08-16

  • 重写了SelfAttn的操作,grad上遇到一些问题没有完结
  • 还需要整jun的PPT,看了一下流程,还没有具体展开
  • 需要准备给ray的report,整理一下之前的项目进展
  • xiangsheng出了修改版,需要进一步修正

2021-08-15

2021-08-14 暑期研讨会

  1. 戴导 - 异构计算

异构计算与虚拟化

专用加速器(图)

  • 图算子层
  • 任务专用加速器

后摩尔时代的高能效 - 数据搬运占了很多消耗,近存计算

- (基于忆阻器RRAM,可变电阻,电导表示数据,并不需要逐个读出,从O(N^2)到O(1)的计算复杂度)
- 稀疏图计算的主要瓶颈也是数据搬运

电路与系统在应用与器件之间(计算pattern在随着应用变化)

  • 我们会认为图和稀疏是未来的主流计算模式
  • 加速器的未来: 大的数据平台
  • 忆阻器的存在数模混合接口,以及存储模拟量的问题,所以难以大规

GNN的应用点

  • 典型应用场景,相对传统方法,以更大的复杂度获得了更好性能;推荐算法(对精度要求高的场景,比如广告)中等规模的推荐算法比较多
  1. 余老板 协同智能

PATH1: 地图相关

最开始起源: 单机建图 - SLAM

(in 建图)机器人探索策略,Froniter式的,后转向多机器的分布式算法(SPMM ICRA21)

拓扑地图的构建,主要还是单机,没发展到多机

  1. 超姐: 多机RL

任务应用: 多机交互与人机交互

2021-08-14 3d det讲座

TechBeat

  1. 听了一个3d Det的talk,关于PVRCNN

点云3d检测背景: 输入是pointcloud,输出是3d的bbox(Localizatiom-xyz, dimension-hwl, orientation-heading direction)

  1. PVRCNN(PointVoxel Feature Representation CVPR20) 两种主流的point cloud feature learning方法,1) pointnet++ like的 Flexible receptive field以及accurate的point location 2) Voxel-based的SparseConv: high quality and efficient 提出了Keypoint-based的方法去融合两者,是一个2-stage的,第一部分是voxel2point,基于SparseConv的CNN做multi-scale的smenatic feature learining,之后接一个2d的RPN。另外一条路用FPS采样出少量的Keypoint,用于最后的proposal refinement。用一个VoxelSetAbstraction模块去融合point以及multiscale的voxel特征(Keypoint作为中心去聚合SparseVoxel的,用类似point的方式来grouping); ROI Grid Pooling: 将Keypoint的特征给aggregate到离散的grid point的点。


PVRCNN++

去对特定方法提速PVRCNN的加速版

image-20210814090249398

  1. 做了一个Profiling之后发现FPS步骤本身很耗时,发现FPS其实采样了很多背景点,其实后续用不到; 另外Uniform Sampling非常关键。提出了一种Sectorized Proposal-Centric的Sampling。(Proposal Filter: 只集中在Roi的附近,以及sectorized的FPS,将Lidar场景均匀切分为扇形,并保证各个sector的内部做FPS)

其实还有很多种possible的采样方法

  1. 显存消耗(GPU Memory)的瓶颈,因为用到了[N,nsample, C_in](类似pointnet++的操作)改进为了VectorPoolAggregation的操作,将周围的点通过AvgPool到Voxel中心,然后再做SeparableConv(不同位置的用不同的通道)而不是SharedMLP来做set abstraction,最后concat起来,来encode整个空间的予以信息。

  1. 其他工作:
    • VoxelRCNN(AAAI21): 相比PVRCNN简单一些,全voxel的
    • BRNet(CVPR21): 将GridRoiPooling用在室内3d det中
    • ST3D: Domain Adaptive 3d Det
    • 代码框架在OpenPCDet
      • image-20210814090504220

一些Terminology:

  • set abstraction: 点云的set操作的抽象化特征提取
  • BEV:(Bird Eye View) 2d的BEV feature-map
    • 会对高度进行切片成M份?
    • 这样是否说明不会出现垂直堆叠的obj?
  • FV:
    • 将雷达投影到圆柱体之后再展开到二维平面

2021-08-13

  1. 补看了3d Hybrid的Talk
  2. 帮忙Debug服务器,改PPT
  3. 修改代码框架
  • 忙里偷闲看了Eva,修了点图

Slack的使用方式

2021-08-12

  1. 整理之前BUAA项目的到石墨文档
  2. 改PPT,加知名组信息

  3. 听3d hybrid Representation的Talk

MVS2D: Efficient Multi-view Stereo via Attention-Driven 2D Convolutions. - paper - 2d conv efficient - depth esitimation on ScanNet Learning View Selection for 3D Scenes.

focus on the hybrid representation, combine multiple single representation various input / output form of 3d representations

orgin: relative pos problem, learning the relative pose(through a translation / rotation) Application:Depth/Pose Estimation, Completion Earlier works: relative pose / Pair wise matching in feature

  1. CVPR2020 work: Hybrid representation Completion Task: combine multuple intermediate representations
    • 2d Top View, plane features(provide complemennteary feature for far-away invisible features)

  1. CVPR2020 - HybridPose Pose Estimation Task: input a image, output depth/obj_pose popular framework: Input image -> keypoints(edges between keypoints) -> pose_regression(with geometric constraints)
    • intermediate supervision
    • feature learning + geometric constraints
    • hybrid learning: hybrid of 3 intermediate represenation: keypoint, edge vectors & symmetry correspoendence
  2. H3DNet: 3d Det using hybrid gemoetric primitives 3d Det Task: given a scene, output multi-bboxes extend the representation of box: box center, face center, edge center(gemoetric primitive)
  • Analysis of Hybrid 3d Representations(Insight of why it is useful)
    1. Predictions under different representations are not correlated
      • Plot the convariance of 2 datasets, very nguinique
    2. Variance is bigger than the Bias
  1. with unlabeled multi-representation source using a graph to describe relations of different data sources

Rich Relations, A toy Exmaple

From Unlabeled Data

CVPR19 Path-invarainet Map Networks for different resolution’s voxel & point representations, network learn differnet features exp shows use subset of labeled data, could achieve good results(8% labeled + unlabeld -> 30% labeled)


  • 弱智的Word的Mathtype依赖,直接删除了这个文件 C:\Program Files\Microsoft Office\root\Office16\STARTUP\
    • 看看还会不会反复了

2021-08-11

  1. 早上帮忙debug了一个apt的bug,貌似是把dpkg给搞崩了
    • 感觉真正起到作用的应该是清除/var/lib/dpkg/info中安装报错那个包的相关信息
    • 参考了post0 post1
  2. 阅读了PointFormer并留下了笔记,它的效果确实也没有多好
  3. 开了两个会讨论3d TR项目的发展方向
    • 还是需要把目前的discrete的case调的更好
    • 提到了一种多种数据方式相融合的方案: TODO: 阅读Huang Qixing组的工作
  4. 晚上改PPT,还需要进一步加上Timeline,以及一些文章的理解
    • 找一下各个workshop邀请老师的首页,一起整理到文档里面; 然后过paper reading list去梳理出一个timeline
    • 以及未来的故事需要有思考(应对domain specific的新问题? 往应用/系统的迁移? 总结出一系列LowBit可能遇到的bottleneck与Pattern,非黑盒的Lowbit方法混合调优?)
  • Fix了Slack在Android上的消息通知问题
    • Slack本身在通知设置里很贴心的设置了一个检测是否能正确发通知的功能
    • 首先启动谷歌服务(为什么我的手机会定期关闭、或者是重启之后关闭谷歌服务)
    • 然后保持后台不杀进程,并允许通知
    • 有一次测试卡在令牌上,挂了梯子再用就好了,之后把梯子停了好像也没问题了
    • 然而最后好像还存在一个问题,如果电脑桌面端挂着消息的话,手机貌似不会接收

2021-07-19 - 2021-08-11

  • 经历了一次感冒以及一部分内容在slack里更新了,主要还是在push 3d TR的
  • 做workshop小组PPT,很久没有集中推进进度了
  • 投稿TIP
    • 作者多了会要求填一个分工

2021-07-17

  1. PPT自动翻页
    • 取消鼠标,设定自动翻
    • 需要在播放的时候支持计时

2021-07-15

  1. 准备和ray的讨论
  2. 整理3d tr这边的进展,还是有一些finding的,不过不足够
    • 细读一下VOLO以及ConViT,找finding

卸载mathtype之后遇到了一个加载项的问题,参考了这个post解决了,通过修改注册表解决了这个问题(看来win平台的这种尿频尿急的bug基本都可以通过改注册表解决)

  • 超星这边的一个talk,点云相关的内容
    • 点云的特点: 1)无序的,一长串点;不唯一表征 2)旋转性,经过刚性变化,坐标会变化 3)稀疏性: 点云数据稀疏分布在整个scene中,点数不固定
    • 在自动驾驶系统中的:
      • 高精度地图是由点云生成的
      • 定位模块: 点云与地图的配准问题(车辆实时运行中的点云与高精度地图配准),获得Pose(pose也可以由IMU来进一步修正)
      • 感知: 前融合/后融合,RGBD以及点云的信息在什么环节中fuse
    • 点云算法的分类:
      • 2d: 退化为2d使用某一个视图View
      • 3d: Voxel / Point
    • PointPillars (CVPR19): 并非是用拍平的方式去人工提取,而是用一个PointNet去找每个格子的feature
      • 扩充了fearture,找一个聚类中心,各个点与聚类中心的offset作为新的feature
      • Multii-head的输出用于适应不同的尺度:
      • SECOND(Sparsely Embedded Convolution Detection): 3d卷积的计算量相对比较大,稀疏卷积加速
        • 分别用Feature和coord来表示(类似CSR结构?)
      • VoxelRCNN(AAAI21):
    • 点云的部署工具:
      • PointPillar基于PointNet提出每个网格的feature,更容易落地,但是性能不佳
      • 建立了一个3d的model zoo
      • 3d的量化剪枝工具: - 能够TensorRT部署,内存管理以及计算方法上优化(算子层面),github的sparseConv
        • SparseConv3d: 稀疏度会逐渐降
        • SubMConv3d - 就是我们认知的SparseConv
      • 本质上是用CUDA优化了一些算子

2021-07-14

  1. jun的教材开会,改了一些东西
  2. 润色文字,改图
  3. 整理TR的文章,准备讲survey
  • 碰巧天宇问了一个python import相关的问题:
    • 我目前采用的是所有执行都是main函数的形式,然后所有的引用也是写成了依据根目录进行绝对引用的形式
    • 因此,如果比如在子目录内调用东西,而包含了当前目录下的其他文件,比如在lib/train.py中import了lib.test,就会报错
    • 这个问题的一种简单而dirty的解决方案是临时用sys.path.append(‘根目录’),把根目录给放进来,这样就可以import了,但是比较不合适
    • 最高雅的解决方案其实是直接用relative import,当前包下的所有内容都采用相对方式(from .XXX import XXX),但是由于经常会出现fail to import with unknown parent package而出问题(UNRESOLVED)
    • 蔡神给出了一种workaround:
      • 将当前的根目录给打包成一个package,这样就相当于加到了site-packages里面,也就是一直在sys.path里

2021-07-13

  1. 续了一些3d tr的试验
  2. 服务器的一些东西
  3. 帮jun做ppt
  4. 整理修改bars的文字DONE
  5. 思考TR的survey要怎么做

2021-07-12

回归工作状态

  • debug了一些服务器的bug
  1. 清理文件的时候用到了 find . -type f -name *.pth -exec rm {} \;表示find出所有末尾是pth文件的内容,并且将其删除
  2. 以及突然发现服务器的代理不好使了,查询之后发现是10809端口的问题,通过查询之后发现这个端口确实在被sshd的tcp listen,但似乎不其效果,换了一个端口就好了

中间搜搜了 如何查询端口占用,总结下来比较好用的是netstat -anp | grep #SOME_PORT,这个命令可能需要sudo才能显示一些更高权限的命令 以及lsof -i :10808

  1. eva7的服务器又出现了准入成功但是ping不同的问题

在这里简单整理一下服务器常见问题,之后有时间整理到一个page上去

——— 如果你连服务器都ssh不上去 —————————

  1. 无论如何都先准入你的IP,通过usereg
  2. 如果准入提示 此IP不在IP表中,学校网络的问题,能等先等等,不行联系网管重启改ip
  3. 如果准入成功了但是不能ping通,路由的问题,联系网管执行删除命令 sudo route del default gw 10.0.3.1

——— ssh上去,我需要连外网 ————————

  1. 使用auth-thu命令,后面用login和auth都试一试,基本都能登录上
  2. 使用usereg准入校外(注意了如果别人把你的ip准入了校内,可能会出问题)

2021-07-01

  • 整理ME的文档,map怎么拿出来
  • 继续整理TR的实验结果以及方案
  • 组会:

视觉导航,NeuralSLAM

  • 小组会: Image Denoising

图像在采集的时候比如雨雾,低光,抖动,可能会引起一些低质量图像,去噪是图像重建的一个子任务 手工设计,基于先验,对single task需要一个额外的方法 基本模型 y = x + u中revert出x 噪声模型: 加性白噪声,blind noisy(类型已知,能量未知), hybrid noisy(多种的混合), real noisy 对最简单的AWGN(Salt, Poisson),NN alone(会改进网络架构),或者是NN与传统的feature相结合

真实图像去噪: 结合image prior,或者是pure改进CNN架构 UNet:

SID(See in dark) 用了一个简单Unet结构就获得了好性能,并且从raw sensor直接处理就可以更好

2021-06-30

  • 做PPT
  • 实现了multi-reso的TR,里面有一些细节还需要check,但是搞清楚了map应该怎么获得,也需要好好整理一下。

2021-06-29

  • 开会,确定3d TR的继续方向,实现multu-reso的fusion
  • 做PPT

2021-06-28

USC: CVPR2021

  • 做PPT
  • 听了一个talk,关于ExplainableNN

https://arxiv.org/pdf/2105.00290.pdf

https://github.com/gyhandy/Visual-Reasoning-eXplanation

Structural Visual Concept

InterpretableNN的一个关键问题就是人能够理解,要如何定义。最朴素的就是一种SaliencyMap的形式(CAM/GradCAM),是一个instance-while的;而另外一种流派,就是对于特定类别,提取出一些所谓的”concept“,最重要的部分(实际上就是用a group of pixel来表示TCAV/ACE)。

我们是否能够利用更加high-level的human-friendly的来提升决策能力。(单纯从low-level的pixel层面貌似还是不能很好的贴合人类)

image-20210628200906267

提出了一种用graph来表示NN学习的方式,是一种Structured Visual Concept;如何得到visual concept: 一种是multi-reso的seg(使用的是SLIC是一种不基于learning的,rule-based的方法),另外评估的方式是求偏导来找importance score;

关键在于对VisualConcept之间的联系,才是关键的,所以建立graph-based的

给了一个example只要用重要的concept就可以(pixel上crop)获得比较高的性能。表现出了fc的时候是一个Global的,难以得到最终与VisualConcept的联系。TODO: 想要找一种解耦的最后的decision而不是用一个fc。(提出了一个GraphReasoningNetwork,用了KD把原网络的给distill过来)

2021-06-26

看了一看小鹿Lawrence的视频,对几个关于猫的有所感触,然而并没有时间静下心来写点东西

  • 帮助修改,写毕业论文
  • merge进入了BARS的appendix
  • 更新TR的实验,貌似用reparameterization的方式不太行…需要debug是为啥

2021-06-25

  • merge PPT
  • 更新实验结果(貌似直观的看没有变好太多)
    • 启新的实验,对比两种parameterization的方式(Conv以及直接用relativexyz生成weighting)
  • 改卷,整理作业

2021-06-24

  • 上午帮jun做PPT
  • 下午开会,share了TR的相关内容,以及setup Slack
  • 继续整理新的TR结果

2021-06-23

  • Random CNN sees obj
    • 可能可以和ray的东西联合起来?
  • 整理了新的实验结果,发现有一个情况是能够高的

2021-06-22

Lonely

菅野洋子 PetalDance的OST

《Yasashi no Suisei》by YOASOBI

  • nn.Sequential并不能喂进去新的args,dirty的拿掉了
  • 写周报!
  1. 继续搞毕设论文
  2. 之前的PPT加上备注
  3. 读resnet相关的文章,准备周五和ray的讨论,关于saliency map
  4. 考试

2021-06-21

  1. 帮妃哥写毕设论文,弄dsa

听了一个Liu Zhijian那边的hardware with 3d的talk

  • SPVConv
    • voxel显存敏感,所以只能用粗粒度的显存
    • Sparse的卷积有许多不规则的运算,需要优化inference的engine
  • SPVNAS
    • EvoSearch + SuperNet(OFA)
    • Search Space deisgn
      • 理论上扩充channel,其实GPU测速类似,稀疏卷积的瓶颈在内存而不是在矩阵运算
    • 对3d来说更小的卷积核更加有效,大的核需要构建kernel-map的cost非常大
      • 数据集大小 2W,对比imgnet的100W有很大的差距
      • 导致SuperNet并没有很好的被训练,让每个GPU采样不同的子网络进行训练,最后一起进行梯度回传(不是特别sure,这个是否等效于让bs更小了?然后让epoch边长,每个架构的sample数目少了)
  • TorchSparse
    • 先经过hashmap,将其拼成相对规整的结果,然后进行高效的计算,计算完之后用一个scatter写回
    • 测试的benchmark:
      • shapeNet-Part: PartSeg
      • S3DIS: Indoor Seg
      • SemanticKITTI: OutDoor Seg
        • 还对比了一个二维的情况
  • 讨论了3d TR的项目

2021-06-20

  • 帮飞哥写文章
  • 继续改ppt
  • 解决了一个服务器问题,不要用apt upgrade

2021-06-18 ~ 2021-06-19

  • 周五
  • 晚上吃饭,周六聚餐
  • 水划了挺多
  • 继续跑了实验,并且做了一个PPT

2021-06-17

《Always Remember us this way》by lady gaga in 《a star is born》

  • 早上去补办校园卡

  • 整理与弋老师讨论的内容
    • 画learn之前的有没有变好
    • 跑多个window-k
  • 然后开会一直到晚上
    • 网站内容更新
    • 组会
    • 小组会大家sync进度
    • 图小组组会大家share一下BNN work(想抽空系统的问一下几个问题,作为做算法的)
  • 小组会介绍TransferNAS
    • 单任务NAS到多任务NAS,使得少样本的NAS成为可能,提高计算以及数据的效率(UnNAS?)
    • 任务的分析方式: 数据域 & 目标(Classification/Det?) 目前一般比较少有跨目标域的
    • 虽然说det和class有共同性,但是可能是次优的
    • 多任务学习: 架构可以迁移,同一个架构,适用于各个数据集
    • 迁移学习,元学习: NAS系统是可以迁移的,到新的任务上产生新的架构
      • 复用NAS组件(难处理差异性大的任务)
      • 基于优化的:学习一个比较好的初始化; 对于差异性大的任务困难 (TNAS将maml的参数转化为了权重参数; MetAdapt/M-NAS:将data以某种形式生成一个mebedding,生成初始架构,并用maml优化 )
      • 基于任务embedding的,可以处理差异性大的任; 也可以与上面一点进行结合 (MetaD2A dataset经过一个setTR得到embedding,经过一个GNN-based Generator获得目标架构,并且用Predictor进行筛选; CATCH: 是跨目标域的transfer,将{arch,perf}过MLP得到embedding,然后作为Rl Agent的训练输入,也有predictor筛选; Task2Vec: 任务再pretrain resnet34产生梯度信息,通过余弦距离进行度量而选择)
    • 一些可能的方向与问题?
      • 如何提取不同Objectve的信息,用perf?(like CATCH). 用gradient?(类似Task2Vec)
      • 引入多模的MAML(比如MNAS),最初始的MAML对所有的任务都用一样的初始化,这样不合理(*)
    • MetaD2A的flow:
      • 并没有联合训练generator和predictor
      • 训练完之后inference效率高,但是训练本身很花时间: 训练predictor的reward需要用一个arch train几步
      • Our Improvement:
        • 在predictor训练的时候,可用MAML来加速evaluation而不是用训练几步:
          • MAML的评估的随机性大,用多次eval平均,增大每次eval的shot数,用loss代替acc
        • 是否可以在其中加入TaskEmbedding的训练
        • joint training
    • MAML
  • BARS recycle相关
    • 最后做了一个incremental的工作
  • 引入BNN之后本质与CNN差不多,也没有更好,只是底层单元更小了

  • FracBNN: FPGA2021 Cornell
    • 量化第一层
    • 掉点
  • DATE20 Orthurs TUM
    • 一个FPGA的可动态重配置的计算单元可以算整数和二值的运算
    • DSP
  • TCAD18: ETH: XNOR Neural Engine
    • XNE engine
    • 主要是做加速器,怎么算这个xnor
    • 用Cadence做了前仿和后仿,做好了layout,memory占了很主要的部分。比较solid
    • 访存是主要开销
    • 存片上尽量?boolNet是否已经做的足够好了?
  • 想问的问题
    • SysArch: system和arch1工作量分别是社么样子的,比如说做一个加速器,或者在fpga搭一个系统(fracBNN)
    • 大家的contribution具体在哪里,有几个层面可以去优化,出创新点
    • 算子和系统层面之间还有哪些层次?

2021-06-16

很酷的一天,出门校园卡丢了被关,被jun紧闭了一天,补办校园卡发现服务中心不开门,冒雨回寝,发现一地的事情,雨中曲 《My Funny Valentine》 by Miiles Davis

  1. 与陈老师开会
    • 讨论了STE的实验结果,感觉我们的实验貌似没有与现有的文章结论吻合
    • 对于Pretrain还是scratch的问题
    • NeuralTangentKernel
      • 如果网络足够宽PolyLog of N(size of trainset)
      • if width big enough, could reach 0 error
    • 3个挑战
      • Model Capacity
      • Generalization Ability(use dropout/dataaug)
      • Optimization
      • 低比特上1、3更重要
    • 更宽更好
      • WRPN的结果能够复现
      • imgnet做到3-4bit能够复现到FP的结果,用1-bit可以用宽2-3倍也可以tune
    • 硬件层面能够打破原本的不合理assumption

2021-06-15

  1. Jun: 被jun支配,做PPT,改文档,拷贝
  2. 整理3dTR的文档,继续起试验
  3. 和妃哥讨论组内计划与安排,持续推进低比特框架

2021-06-14

  1. 肠胃感冒瘫软了,读3d paper,整理试验结果

2021-06-13

  • 服务器issue [Resolved],是ip route的问题,内容已经添加到了wiki上; [DONE]
  • 整体DT结果到Doc [DONE]
  • 发了邮件咨询Recycle了,需要列举一下recyle的计划 [TODO]
  • 整理3d这边的思路,约时间 [DONE]

2021-06-12

  1. jupyter画图挂着代理渲染不出来,直连(还有执行那行 init_notebook_mode())
  2. FracBNN
    • ThermalMeter DataFormat*(一种降低分辨率的压缩表征方式),把第一层也给quantize了
    • FracConv:
      • Precison Gating
      • 一个Conv两个phase,一个base phase,一个update phase
      • activation存两个bit
      • 在算第一个phase的时候,取activation的MSB,对每个popcount的结果维护一个flag-bit,看它是否大于一个learnable的threhsold,如果大于threshold,那么说明它更重要,我们需要对LSB再做一次Conv
      • learnbale threshold是一个高精度的,多大的范围学一个?(按说感觉每个conv都可以学一个)
    • BoolNet multislice具体是怎么拆

2021-06-11

结果出了,问题很大,需要转投

  • 梳理一下bars这个文章目前的问题,以及可能可以添加的内容、
  • 准备措辞
  • 低比特这个方向的继续展开,在线维护一个PPT,以及doc和sheet,文章往里填
  • 弋老师项目这边,把之前的几个可视化做了

南开/北大/MSRA揭秘Local 视觉Transformer:稀疏连接,权重共享,动态权重 (qq.com)

2021-06-10

  1. word补全,对着改PPT

  2. BoolNet讲解

    • 核心是让shortcut上高比特也变成低比特,因为硬件上主要是访存压力大
    • MultiSlice
    • Shuffle

image-20210610154602290

  1. 晚上准备与Ray meet的材料

2021-06-07 ~ 2021-06-09

  1. 整理了实验结果
  2. 早上和弋老师meet了,可以进行新的实验,下午进行开发
    • 需要回答几个问题:
      • Xvolution是怎么做的(Container?)
      • CCT是怎么实现的
      • Local minima的问题,顺便整理一下到这里,自己看到公式就怂应该改改*
    • 起一个0.05的DoubleMimic的?
    • 继续开发新的实验,逐渐替换PointNetBlock
  3. 学习日讲话200字
  4. 整理paper的内容,container,deit等

2021-06-07

  1. 考虑Computational Pattern
  2. 给jun做PPT

原理,先给函数接口,然后连线,然后example

  • 用micros和milis函数
  • 定时器的原理和函数调用 +一个定时器怎么作

然后程序的分析如何做到的,程序截图(实际上板图片)

  1. 晚上继续跑了几个实验

2021-06-05

  1. 查看当前47的与Pure1x1之间的区别
  2. solve现在显存不足的issue
    • 对于resnet-based按说可以用k=8的
    • 第一层不能afford更大的,怎么办
  3. 2-Stage的分两组LR
  4. 新文章读一下,有时间可以给之前几篇总结一下
  • 重新读Rule Extraction,看一下这个领域的意义

2021-06-04

  1. 晚上和年崧对一下跑起来试验
    • 花了不少时间,结果还炸了显存
    • 但是有新的发现,一个是和ResNet对齐需要许多的超参数设计,一个是貌似是Upsampling和最后一层的区别really matters
  2. 挂着脑门上思考
    • 在思考了呜呜呜

2021-06-03

  1. 收尾昨天的工作
    • revert 3d TR代码为new-base,并且整理debug的结果 [DONE]
    • 查看test结果,commit SARproj [DONE]
  2. 整理一下Blog,有时间的话贴一下新的图和music相关的post(Leisure了属于) [DONE - 笑了]

  3. 3d TR模仿Conv的层面
    • Survey Distillation(泛泛的,看一下) [暂时搁置]
    • 思考具体方案是否有问题

      1. 点数不一样,如果采用不同的sample方式的话点数会不一样,另外确实需要保持完全一样的输入才行
        • 都用一样的StridedConv才可能一样*(不知道还有没有其他的影响因素)
      2. 几个Anchor?
  4. 构建框架
    • 写一个JointModel?里面包含了俩model,其中resnet那个model去resume
    • 因为这个feed in L2 Norm的代码肯定要写在forward里把
    • 在train函数中加一个arg,然后test理论不用改?
    • 写好了,现在就是Inf很慢…
  5. Radar:
    • 接入Captem看结果 [DONE] get了最直观的Saliency Map
  • de了一个超级蠢的bug,突然发现jupyter打不开3d图了

Distilation

2021-06-02

  • 整理一下python import的基本情况,写一下内容
  1. 阅读了Paper,做了一些简单整理,下午看代码
    • 开一个jupyter把data loading给搞定了
    • 看着还是得搭一个自己的代码框子,搭好了…是不是忘记commit了,复现出了结果,下面需要对接到Captem
  2. 收结果,接着对比VoxelTR的结果
    • All1x1有点奇怪
    • 整理了结果,add it on the Doc
    • 将当前的代码框子revert到new-base的状态
  3. Survey Conv + TR Distillation
    • 教材相关
    • arduino中的定时器相关
    • Arduino中的millis和micros是如何实现的A
    • delay函数会占用CPU,不能进行其他操作,用millis()
    • Geek-Tutorial
  4. 整理一下我们现在有的结论
  5. 给val前后加上一个复制文件(要么直接改软连接把要么),然后再给改回来,这样就不用老是改文件了;或者是改import
    • 搞半天软连接了…问题有点大
  6. 按照讨论的结果启新的对照实验,主要是对Sampling为啥差这么多看一下
    • 启动了
  7. Survey当前的Distillation方案,还会有很多问题
  • 看SAR这边的实现
    • 输入数据需要对上
    • lmdb转pth?

2021-05-31

  1. 继续看试验结果,整理VoxelTR起新实验
  2. 导出Export,加pred的代码
    • StridedConv的点拿不到
  3. 约了雷老师讨论
  4. 把PosEnc的方式整理到文档里

2021-05-30

  1. 整理文章
  2. 发现了PosEnc的,需要启一系列实验
  3. Pred的这个确实是有点问题,需要展开处理一下,先看看能不能用TensorField解决了,不能再想办法

2021-05-28

  1. 准备和雷老师讨论
    • 起Captem
    • 再读公众号里给的那个slide,给一些新的思考(权当Survey)
  2. 同时继续跑实验,准备周六和弋老师的讨论

2021-05-27

  1. 写生成pred-label的Setting
    • 参考之前的那个setting
  2. 整理学习Pos-enc的形式,思考如何用Pos-enc

  3. 笑死,半天时间都在debug之前的傻逼错误,原本用load-whole的网络性能虚高了,需要改正
  4. 需要帮妃神看文章给Feedback
    • 整理了几种新的Evauation Metric: LInearCorrelation & KD & Spearman; also P@K, BestRanking@K
    • Evaluating the estimator(对比了One/Zero-Shot各种指标的变化情况,随训练过程,batch-个数,在不同数据集上表现)
      • 301上用acc比用loss高很明显
      • one-shot更好的找到bad archs
      • zero-shot的指标甚至不如param,与ss相耦合; 在random-init的时候比较好
    • 分析了如何崩溃:
      • Forgetting: 自架构部分weight会被rewrite - 需要更sufficient training
      • Ranking Stability:
      • Bias: Comlexity-level bias / Op-Level
      • Zero-shot collapse to archs with explosive grad
    • Improve:
      • insight: mid-layer & epoch has dissimilar grads
      • train longer
      • more MC sample
      • Temporal Ensemble
      • sample fairness: deisomorphism
      • Reducing the shared part(soft/hard pruning; remove the affine)
    • 就有些类似于How to train your supernet
  • AI 2021: 基础设施与生态:
    • 定制化,工程化,通用化
    • 计算系统: 算子,算法框架,计算系统,由最底层的硬件体系提供
    • PPL高性能计算引擎,有自己的指令工具链
    • elena编译器: 不同平台的很多平台,NxM的比例过多 -> solution: 中间表示层: Tensor Representation -> Arrangement Repre -> 语句表示 -> 模块表示
    • Parrots: 商汤的框架,聚焦大规模,JIT即使编译,大规模并行
      • 黑了paddle paddle和mindspore,说接口不友好
    • 大模型训练的常用scheme: 数据并行,模型并行,流水并行
      • BN需要sync,对流水很不友好,由于其将不同步骤放在不同的时间点,所以sync成问题
      • 很多大模型训练聚焦在NLP(TR)上
    • 编译器显存压缩,静态图分析,基于搜索的重计算自动增强

2021-05-26

  1. 逃离的一天,看展修图

2021-05-25

  1. 继续起实验探索
  2. 看一下对于我们比较好的配置LinearOnly是否还能够beat ResNet
    • 然后我们发现了问题

2021-05-24

  1. 需要重新起一下试验,分析一下当前的试验结果 [DONE]
  2. 需要看一下dataset loading相关的东西 [DONE] - 仍然需要考虑一下要不要改成读一个文件的,到了最后的instance-seg的时候需要改成
    • 正在修改了
  3. 需要起一下valid确保当前的比较高的结果是valid的
    • 先挂起,先把dataloader给搞定
  4. 整理一下几篇文章*(Swin/CvT/CoAT)
  • pin_memory & num_workers >= 0占用了大量的cpu占用
    • OMP_NUM_THREADS=1
  • Nystroformer

  • 旁听了郭哥和余老板的毕业答辩)

2021-05-23

  • auth命令是用来准入准出的,然后login是用来登录的
  1. 完成memory debug,基本找到了memory爆炸的原因,核心原因是点数,以及其他的一些小因素不是很本质(删除掉了一些中间没有用到的变量)
    • 看到了一个post说,执行torch.cuda.empty_cache()或者pytorch可能会自动收集不被用到的tensor空间,虽然看nvidia-smi里看还是多的
    • 最后还是没有找到一个好的profiling工具,和niansong可以sync一下
  2. 启动了MinkResNet的base
  3. 对照了两边的配置,正在跑一个最像PointTR的网络,以及扫一些小的配置,看曲线

2021-05-22

  1. 去画图对比当前的StridedConv到底和FPS+Proj有多大的区别
    • 如果用FPS的话不管是FPS还是QueryAndGroup都OK
    • 如果用StridedConv的话都会变差,其中KNN变差的更多
    • 需要画图以及对比来发现
  2. 实验室205的更新问题(历史遗留问题,很麻烦,等下周ddl结束之后再看)
    • 做了一些尝试都没有搞定,路漫漫其修远

2021-05-21

  1. 继续开会
  2. 上课
  3. 完成大作业
  4. 继续跑实验debug,发现了当前的问题所在

2021-05-20

  1. debug了服务器上的登录问题:
    • 对于eva7来说,新建一个container之后dhcp可能会生成一个无效的路由,需要手动删除一下(参考之前的post)
  2. 整理了目前的实验结论,待讨论
  3. 曾哥组会讲的FPGA虚拟化_
    • 基础组件: HW(Host interface), SW(Host OS in cpu), OL(CGRA-based overlay in physical FPGA)
    • 要求: multi-tenancy; resource-management; Isolation
    • 层次: Node-level(Virtual Machine); multi-node level(Clustering); Resource-level(IO/Arch)
      • IO Virtual: 在IO层统一抽象接口
    • Paper0: 将FPGA切成小的Slots,多slots可以不单纯使用时分复用,通过一定的scheduling使整体的latency降下来
    • Paper1(OSDI): 现在FPGA需要Sharring,相比ASIC更易重构;
      • 共享: 保护隔离,保证统一抽象
      • Tradeoff: fixed-zone:快,但是有碎片化 & Global Zone:将多用户的任务放在一起做,慢
        • 一种解决方案是两种策略转换(combine multiple morphlets)
  4. 继续实验
    • 首先不改GatherNeighbor的前后,只是给目前的point-based的代码加上QueryAndGroup并且用Linear层,在现有的代码base下观察是否会掉点 [DONE]
      • 貌似发现了可能的问题,正在重新启MinkTR的实验
    • 画图analyze the query&group的情况 [DONE]
      • 最后一个Cell中对比了KNN和QueryAndGroup的区别
    • 重构代码,保证Transformer block所用的是同一组idx,不会出现两边disalign的情况 [ING]
      • 需要commit一下并且重构pointTR的代码
      • 想法是把两个层重新pack成一个block,中间传播一下idx,这样就可以保持
      • 一个TRBlock有两个PTCell,一个Normal一个Reduction
    • 批量启动实验

fatal: unable to access 'https://github.com/A-suozhang/SpatioTemporalSegmentation-ScanNet.git/': Recv failure: Connection reset by peer 的报错是git的proxy如果没有设置对的情况

2021-05-18 ~ 19

  1. 继续debug为什么voxelTR受catxyz影响很大
  2. 学校的项目

2021-05-17

  1. 做实验
  2. 发现了昨天的实验结果于之前没有align,发现是N点数的问题(还有挺大的一个差距,以及用linear层也会带来问题)
    • 这样看起来的话将mini-pointnet替换为poitTR层本身是能够提的

2021-05-16

  1. 补充一些pointTR的实验
  2. 改了接口,让PTBlock兼容TDLayer:
    • 起了三组实验

2021-05-15

  1. 听了一个DigitalTwin的讲座 - 感觉和我们做的挺相关的,不过是概念性的东西
    • related with FT
    • FedML
    • Latency: digital association: 如何选取中间节点,用的是MARL
  2. 帮飞哥改EnsembleNAS图
  3. 画pointnet与pointTR的macro图
  4. 分析现有的结果:
    • 比较surprsing的是两种linear_only差别大,不对的那种甚至反而比较好
    • 看是layer多不合适,还是grouping的先后比较关键
  5. Interp项目,看看有没有时间启动一下DT的test

2021-05-14

  1. 早上启动了整个scene上的实验,显存果然炸了
    • TD中的knn
    • TU中的求distance都存在一个NxN的操作
    • 并确定了51%左右的精度是可以达到的
  2. 开会将主要问题focus在了PoinTR的实现方式上
    • 都减去的是中心点的Query,而不是Pair-wise的[DONE]
    • (这块没想清楚,需要再想想)
  3. 画个图确定PointNet与PoinTR之间的区别,搞清楚是什么让PoingTR提点的 3.1: 参考现有的其他代码框架,确定pointnet的操作方式 3.2:先启动几个基础的实验确定PointTR的几个组件 [HALF-DONE] 3.3:整理它文章里本身包含的一些点 [DONE]
  4. a little concern,我们所谓的只有weighted-sum不work是否valid
    • 扩大ks的实验确实没有完全说明问题
    • FPS的实验看似说明了貌似这个Gourping&MaxPool是比较关键的(包括弋老师也提到当年做pointnet++的时候也实验了多种maxPool最好)
    • 是否本质上这个TD和TR的本质区别就只是一个是MaxPool一个是WeightedSum(严格来说如果要fair compare的话应该也double the TR-size)
    • 按理说应该启动一个是Pooling+Linear+Max的才能对应上
  5. 帮忙改图 [DONE]

2021-05-13

  1. 加入FPS的整scene的dataset
    • test应该怎么处理,不是很确定,暂且搁置
  2. 加入vanilla attn instead of PointTR-style-Attn
    • 先放一放
  3. 参照niansong跑的那一版代码在新版本的pct_voxel上跑一下整个Scene的datset的run
    • 看一下改进之前到底能够差多少,确定一下整scene的正确性
  4. 学校这边的给一个outline,给出下一步的研究方向,仔细读一下那个survey

听妃神的Curriculumn Learning的Survey

  1. 本质
    • Optimization-Perspective: Continouation
    • ML-Prespective: Regularization
  2. Flow
  3. Data Domain: 在什么层次上渐进
    • 最本质的还是在input domain上的输入
  4. Curriculum Setter & Scheduler(决定怎么变难)
    • Learner会给一个feedback给(based-on Objective)
  5. Automatic Curriculum Learning AutoCL:
    • Scheduler不一定显式
    • 不一定严格EasyFirst(有的领域甚至先做Hard Example Mining会更好)
  6. Self-paced Learning
    • 只在简单的数据上训练,逐渐加大难度
    • 对每个data给一个权重w(文中是0/1,用threshold-based)
    • SP Regularizer(在当前case里,就是一个对loss的threshold-based的Sign Function)
      • 后续很多方法在这里改进
      • 样本是独立的,对样本的分布值得做一些更新
  7. RL-based的Scene
    • Curriculmn Setter是on-the-fly调整的,看作了一个MultuArmBandit Problem,是在weighting of fixed data
      • 是Online的*
    • based-on:
      • Loss Discrease
      • Model Complexity Increase(比如对Bayesian的方法看Posterior与Prior的KL Div, 对NN用了L2)
  8. Generator-based: MentorNet:
    • generator用来生成data-wise weight,监督信息是Difficulty
    • 与SPL(self-paced learning)比较类似,本质区别在于SPL是forward了一遍,而是用一个独立的预测器去解决(相当于Net去训练SPL)
  9. Generator-based Few-shot salient detector with adversarial-paced learning
    • 用GAN来在Label域去学习一个discriminator,去学会更好的辨识pesudo-label与True label去获得更好的pseudo label
  10. AutoCL for RL:

  • Self-Paced Learning的想法为核心
  • Curriculum Space: initial_state \rou0: 初始状态决定了任务难度,奖励是稀疏的
  • Curriculum Space: Goal: 用一个GAN来生成goal,而不是从已有的state周围随机采样
  • Curriculum Space: Reward Generation
  1. Summary

2021-05-12

  1. 继续清理代码并且更新了两条实验
  2. 开会,准备

2021-05-11

  1. 整理log到新的post4 [DONE]
  2. 看resume的代码 [DONE]
  3. 做input-point的profiling - mixedTrans理论上做到了这件事情[DONE]
  4. 改voxel-based的r - 需要看一下point-based的搜索方式*(一般的knn貌似就没有在r之内,我们需要对比一下) [DONE]
    • voxel用的是query*&group没有严格的使用KNN来找neighbor
  5. 清理log [DONE]
  6. 改Train.py跑一个clean的PointTR来看 [DONE]
  7. clean代码,与master merge [DONE]
  8. 整理现有的架构的细节 [DONE]
  • 忙里偷闲setupp了一下博客的debug环境,试一下新的layout
    • 首先需要在linux下安装jekyll,我尝试了官网上的通过ruby的gem安装,但是貌似wsl有一定问题
    • 后来直接用了sudo apt-get install jekyll
    • 进入main jekyll的目录,执行jekyll service就会在本地的localhost:4000端口来看
    • fix好了之前有问题的两个page

  • 如果在test的时候输入了config作为参数,一开始是会被load进来(via main.py --batch_size被main函数一开始的gen_config中得到),但是由于后面又loading了test_config(train时候用的config),所以就决定不了了,为了方便我们要么还是直接改config吧。(虽然不是很严谨)
    • 改了个接口通过val_batch_size来喂进去了
    • 修改了config.py中的默认为8
  • StridedConv:
    • 输出点为coord为N*stride的位置,比如[0,2,4]这样,在这里向[0,0,0]的方向检索(如[1,4,7]会被merge到[0,4,6])当前的kernel_size^3的块中是否有feature,如果有那么当前的输出点就是有值的,这些块中的点会被merge到一个输出。
    • 理论的ds_ratio在1~S^3之间
    • image-20210510201713139

2021-05-06 ~ 2021-05-10

  1. DDP Related:

    • 需要和年崧搞清楚到底是什么setting下好用

    • 需要merge一份代码

  2. Debugging the Overfitting:

    • 首先point_scannet数据集当中就会直接对输入的xyz做除以255的操作
    • 目前输入的stem上还是kernel-size=1的SparseConv(后来临时改的,跑出来的结果中还是3)
    • 现在对use-voxel的输入xyz做了normalize

2021-04-28 ~ 2021-04-30

  • [Vim 卡顿的调查 Mickir的魔法笔记](https://mickir.me/blog/slow-vim-research.html)
    • 结果原因是我频繁的写入大文件,卡住了文件读写
  • [can’t reproduce results even set all random seeds · Issue #7068 · pytorch/pytorch (github.com)](https://github.com/pytorch/pytorch/issues/7068
  • vim 空格转tab,2空格缩进转4空格_Windeal-CSDN博客

  • 这个与直接reshape成 [bs, 6, npoint] 不一样哦

  • tensorfield本身的quantization_mode无作用,但是是在sparse之后生
  • 不同的SparseTensor的C是一样的,但是由于coord-map不一样,会导致里面feature的顺序不一样
  • 主要用到的两种quantization方法是UNWEIGHTED_SUM与RANDDOM_SUBSAMPLE
    • SparseTensor的默认是RANDOM_SUBSAMPLE,而TensorField是UNWEIGHTED_SUM
    • tensorfield.sparse()的时候会用自己的quantization_mode去首先生成feature作为SparseTensor的输入,并存下coord-mapping;但是初始化出来的SparseTensor仍然是一个RANDOM_SAMPLE类型的
      • 然后slice(tfield)的时候也是会按照tfield的类型来做reverse,并且生成一个Tensorfield,quantize方式是sparsetensor的subsample的。(tensorfield本身初始化过程并不会做quantize)
  • Attention块中用的SparseTensor由于没有输入coord
    • if coord not None才会调用initialize_coord,然后分quantization_mode来quantize

image-20210501132701546

2021-04-27

  • 加了trainiou的计算
  • 扩大了eva7上的swap空间,只能在主机上做
  • 发现了新的bug,dataloading的时候用多线程就会hang住?
    • 很他妈神奇就是memory的问题

2021-04-26

  • 改进了对上了r的VoxelTrans与PointTrans在切块scene上进行对比
  • 改进写了Heatmap的Visualization,确定了Part是能对上的
  • 按照PointTrans搭建了VoxelTrans的结构

2021-04-25

  • 在SpatialScannet的代码框架下实现了PointTrans以及切块scene跑起来了对照试验。
  • 晚上熟悉了Plotly

2021-04-20

  • :heavy_check_mark: 把Res放到当前的框架中来
    • 中间涉及了一些import issue
    • 主要原因是没有正确的采用相对引用,导致mink_resnet中的module模块被误认为了是MinkEngine中的一些模块
      • 换成了在外层使用绝对引用 sys.path.append('./model'); import mink_resnet.module.xxx内部的都采用这样的写法来避免混淆
    • 以及MinkEngine中的经过了新版本的更新改变了一些接口。比如CONV_TYPE,需要ck一下
  • :heavy_check_mark: 在跑Res的实验进行复现
    • 看起来差不多,貌似少了一丢丢
    • 发现是epoch数目差太多了…按这样单卡要跑好久好久
  • 确认point-based的label也用与现在一样的处理方式(target-1)
    • 改代码,改if结构,提高可读性
    • 发现了直接用3维度的coord去初始化SparseTensor会导致self.D其实只有两维
      • 需要用collate_fn把batch维度给塞进去
  • 当前VoxelTransformer的MemoryIssue
    • (感觉应该主要就是在VoxelTransformer层上)
    • 考虑到更小voxel size的时候VoxelTransformer可能会直接爆显
  • :heavy_check_mark: 搭建起Voxel-based的testLoader与mIOU计算
    • TestLoader是复用之前的代码
    • mIOU计算有新的一套,可以抄,也可以对照
  • 完全对应PointTransformer搭建一版变化后的跑起来
  • :heavy_check_mark: 确定了可能需要改成DDP,感觉限制挺多,不如直接加一个Pytorch Lightning

  • 如果我用CUDA_VISIBLE_DEVICES在用x.cuda()会放到0卡上吗 -> 不会

## 2021-04-19

  • 搭建一个当前counter的UNet
  • ck两种dataset之间label的区别
    • eva8:/home/eva_share/datasets/scannet_processed/train/xxx.ply
    • 在jupyter中过了发现确实其他都是一样的,只有不test的类被认为是了0,需要去ignore掉

2021-04-16 ~ 2021-04-18

  • 发现了一个很大的问题:
    • 以后在pytorch定义tensor的时候directly在gpu上创建,而不要在cpu上建再move
      • 反例 torch.zeros(N).to(x.device),而要直接使用torch.zeros(N, device=x.device)
  • 以及避免在任何地方对tensor用python的max min操作,会自动搬到cpu上,以及item() /numpy()
  • 因为一个int和一个tensor加了,而那个tensor是从一个大tensor中得到的,所以卡了时间
  • Pytorch for loop slow down - PyTorch Forums
    • 在for循环中进行了测试,发现第一个iter很慢,用了torch.synchronize()之后好了,但是发现sync用了很久,这个问题亟待解决。
    • 用scatter去解决这个loop的问题,即使没办法,也是一个很好的接口改进
  • 学习了torch.scatter的用法:
    • example: x = torch.rand(40,10,3) 我希望将它的dim=0的[10:20]变为0,另外准备一个y = torch.zeros(10,10,3),本质上就是需要把y赋给x[10:20,:,:]但是如果想把y不连续的赋给x,就不能写在一起了,所以需要构建一个tensor-index,size是[10,10,3]其中idx[0,:,:]就表示了要从y中取得[0,:,:]的元素需要放到哪里去(dim对应着我们调用scatter时候的dim),所以值应该都是[10]
    • 最后调用的时候的式子是x.scatter(dim=0,index=index,src=y)

2021-04-15

  • 发现有一个自然辨证法的论文需要写
  • 补听一下立栋的Transformer调研,问几个问题,让大家讨论起来
  • 准备集中突破一下Voxel-based的baseline调试
    • data loading相关,具体怎么做 (DONE)
    • MinkUNet,concat需要实现
    • Radius的选取
    • MinkConv dim=3表示3d
    • 邻域K个值
  • 看torch where的bug
  • 看ScanNet的dataloader
    • VoxelizationDataset -> ScannetVoxelizationDataset -> ScannetVoxelizationDataset2cm
    • ScanNetVoxelizationDataset:
      • data-path-file: scannet_train/val.txt
      • 以及对应的ply文件
      • 为啥不直接用metadata
      • data_paths = read_txt(os.path.join(data_root, self.DATA_PATH_FILE[phase]))
        • 读当前的txt文件,丢给上一层的super
    • datasetPhase是一个enum的类别,将’train’映射到’0’
  • np.max莫名报错,因为我输入了一个tenrsor…
  • 更新torch之后所有之前涉及到cuda算子的都需要重新安装了,迷
  • 重装cuda之后一些库莫名的报错:找不到lib_torch_cuda.so (对照的搜了一下貌似只有torch1.8以上有这个文件)
    • find了一下在这个位置,讲道理需要relink一下,但是很神奇的发现当前了env下没了这个文件

2021-04-1

  • 主要在忙学校这边的项目
    • 把deepred的mnist给跑起来了,用一般的MLP成功搞定了,达到了比较高的fidelity
    • 分析了一下Feature Map,以及ConvNet确实不大能够很好的work(第一层需要直接downsample到2x2左右,配合3~4 channel才是能够接受的可拟合量)
  • Survey了一下其他的领域(Partly)
    • Captem(Pytorch Framework)
    • 集成了一些方法,比如IntergralGrad,DeepLIFT,基于SHAP(边际效应,与博弈相关)
    • 还没有整理好,下周把

2021-04-13

  • 改了接口支持pred的输入
  • main函数里with_aux是”pred/instance/seg”
    • 主要是喂到dataloader里,给出一个叫做aux的额外输出
    • dataloader会接收with_pred(pred_path), with_instance(True/False),with_seg

2021-04-12

  • 看一下怎么将prediction取出来做成txt

    • 还是逃不过看那个dataloader
  • 启动用instance的2k实验

    • 用delta=4做了一下测试实验

    • 目前同样生成一个类似的dict,并且目前存下的是probs的数据[n_point, classes]

    • 好大,要么还是存有效的把…

    • instance_2k,存了一组,可以开发一下新的dataloader了

      存下来之后发现有Nan:大概是因为valid的grid瞎改(grid=1貌似是最小的size了)

2021-04-11

  • 熟悉了一下doku-wiki的写法,并写了一个小case[zh:syntax DokuWiki]
  • 添加了两种新的方式了,debug了
    • 貌似现在的idx第二层也有80%是在的?什么情况
    • k=2基本就可以保证完全cover了,但是貌似也没高多少

2021-04-10

work in stack

  1. 查看scp以及写怎么更新ip table

    改好了加入进去了

  2. ScanNet试验相关

    • 启动orcale试验

    • 测试scatter的速度能否快速:

      • 测试了一下即使scatter也需要做出一个和idx一样长度的tensor一样很慢
    • 测试用instance label

    • 测试将打包成dict放在dataloading的时候而不是最后

      • 思考了一下由于downsample到一定点数放在dataloading里了,所以只能在getitem里维护这个dict,貌似也是per batch一次的,而且dataloading也不好返回一个batch,如果直接pack数据的话会因为k值而variant(是否可以按照最大的k来pack?不过这样loading应该会变慢,好处是似乎batch维度会省略?),讲道理应该feed in一个模型中最大的k

      • 在目前的dataloader当中给dataset初始化用了一个k,这k应该是model中的neighbor-k当中用到instance的最大的一层

        • 不能直接判断是因为初始化classifier需要num-class
      • 现在有个很严重的问题应该是:

        • 由于需要去downsample,所以说idx会下采样,如果我一开始就做好instance dict的话,可能出现在idx里的点实际上被downsample掉了,就会导致对不上
  3. 学校项目相关:

    • 跑起当前的activations的baseline
    • 思考是怎么解决threshold=0.5的问题
    • survey新的interpretable文章

2021-04-09

  • BNN开会

Structured Evolution with Compact Architectures for Scalable Policy Optimization

  • 对于一个离散函数的优化,我们去用一个连续的去拟合上(continous)
  • NES CDG渐进意义下准确,无穷sample一定会好
  • weight空间离散
  • image-20210409192703133
  • 利用NES的方法去search

2021-4-8

  1. ScanNet数据的问题:
    • 经过了许多的测试,发现ScanNet的Seg返回的Label和ply中读取的label在一些类当中映射有问题:
      • 585-587-823
      • (50-39): 貌似ply文件中仍然有50的类别,但是经过seg的tsv文件映射过来的已经是39了
        • 查看了tsv之后发现50和39其实是同一个物(分别在nyu40ID以及nyuID中的值),猜测是ply的标注有问题
      • image-20210408181558000
      • ply的np.unique表明它应该是用的nyu40的ID,所以出现50是不合理的,其他的ply中也没有出现过50
      • image-20210408181759028
  • Pytorch illegal memory,是索引报错了但是不在一个device上

2021-3-31 ~ 2021-4-4

  1. 学校项目这边
    • 读代码,理解

2021-3-28 ~ 2021-3-30

  1. prepare ScanNet
  2. Prepare ScanObjNN
  3. 准备Case Study实验
    • :warning:改K值,整理现在的实验
    • :warning:过一下几篇新的transformer文章,思考感受野
  4. 熟悉Torch-points3d框架
    • 读一下train的脚本

2021-3-27

  • Numpy - np.multiply; torch.mul(); 和直接执行 x*x 等效
  • pip install -U git+https://github.com/NVIDIA/MinkowskiEngine -v –no-deps
    • 对比了一下是不指定openBLAS就可以过,官方给的默认命令里用了–install-option=”–blas=openblas”
  • 安装open3d的时候突然告诉我缺了libusb-0,用apt补充安装: ``
    • 以及还有libGL

2021-3-26

  • 开了会,新的风暴已经出现
    • 需要将当前的transformer改成voxel-based:熟悉一些voxel的方法
  • 处理了dataset以及dataloader的问题
  • F.nll_loss(torch.log_softmax(x, dim=-1),y) 等价于 F.cross_entropy

2021-3-21 ~ 2021-3-25

一忙起来就不怎么记得要去记录了

  • 开了几个会,和德国那边聊了一下
    • 确定了要跑一下BMXNet
  • 继续复现point-transformer,邮件咨询,有一个比较关键的问题没有解决
  • 学校的项目,找到了代码,正在理解方法

  • 一个Transformer的讲座
  • VIT
    • 将图像切成16x16的patch,经过一个linear mapping之后过一个经典的Transformer
    • 发现在小数据集(ImgNet)上,显得不是很强,但是更大的数据集会perform的更好
    • Vit的receptive field更加的global,相比于传统的CNN
      • 而底层的一些head只是partial会更focus在partial的信息上
  • IPT:
    • 低质量图像->高质量图像类比为“翻译”的问题
    • pre-training数据越多,perf越好
  • TNT:
    • transformer in transformer
    • 大Patch是visual sentence,小patch是visual word
  • Deformable DeTR
    • Det的趋势 - free the hand-crafted components
      • Anchor-free -> reduce Anchor
      • rule-based training target
      • NMS post-processing - learnable de-duplication
    • 本质上是提出了一种新的attention方式 - deformable attn
  • DeTR - ECCV2020
    • 1st end2end fully detector
    • longer training to converge
    • Low perf at small obj
    • 复杂度比较高,尤其对高分辨率的图像
      • 所以不需要global dense atttention -> sparse attention
      • 但是即使是local attn相对卷积还是会慢(3x)
    • Deformable Conv could be viewed as self-attn
      • 相比attn少了关系建模的机制
      • transformer的自由度貌似是太大了,所以deformable也可以一定程度上被认为是一种local的prior
        • deformable只会attch到一个点,缺少了关系的建模
  • 利用Transformer来推进多模态
    • 一个uniform的框架去解决各种问题
  • 目前transformer的效率仍然不是特别高
    • high-resolution: 医学图像4kx4k
  • 一些图像的特殊性质 - 平移不变性等等
    • Transformer能够自动挖掘出这些性质*?
  • 本质上Transformer在小数据量的情况下不是特别好
  • Self-Supervised + Transformer
    • Expensive Pretraining and cheap transfer
    • transfer任务中Linear Classification & Finetuning两者的相关性很高

2021-3-20

  • 推进了Transformer的复现工作
  • 注意保存数据的时候 (epoch+1)%5 的括号一定不能丢

2021-3-19

  • BNN
    • 给祥生布置了对接
    • 整理下Appendix直接
  • Eric Follow-up
    • 结束之后ck明天是否开会
    • ck一下SE3-Transformer的代码实现细节,理解下点云理解的self-attn融合方法
      • 读一下它之前的那篇文章是怎么分析Vector Attention的

2021-3-13 ~ 2021-3-18

  • 重新过一遍BARS的文字,准备明天改文字
    • 需要整理一波新的结果了…今天需要确定下来
    • 调整图的位置
    • 删字!
  • 对比PointTransformer
    • 确定一下目前的实现的一些代码细节 - Done,基本用PCT这个repo作为我们的主要开发repo
    • 整理一下目前的搜Transformer的都在搜什么 - Done
    • 阅读一下ViT的代码,给一个解读整理 - Done
  • 再读一下学校那边的文章的具体方法
    • Decision Tree具体是怎么apply的,除了暴力拟合所有网络的输出之外
  • 后续一直在改文章,换了一串思路了,好难…写文字的时候还需要锻炼

2021-3-10 ~ 2021-3-11

  • 主要时间在写BARS的文字,重新改了一版,更新了不少内容
  • 抽空上课以及跑了Point Transformer的复现实验

2021-3-9

  • 听了赵恒爽博士的报告:
    • 提升视觉智能
    • Unified 2-d/3-d understanding
      • 理解场景 - Semantic Seg / Scene Parsing
      • Self-attantion:image transformer(SAN); point transformer(PT)
    • Conv-认为是对同一个图片不同的位置采用了一样的Conv Kernel
      • Global的Self-Attention是否有意义?(全局的计算复杂度过高) - 局部的自注意力足以
        • 还测试了self-attention模型对对抗样本的Robust
          • 推测原理来自于: 自注意力的Kernel不是固定的,而是针对特定的图片有针对性的
        • 证明了Vector attention会比Scalar attention

2020-3-7

  • 核酸以及一些杂事
  • 处理了BARS的新试验,有了新的进展
  • 尝试download ScanobjNN的数据集
  • 思考了interpretable相关的文章,读了老的以及新的文章

2020-3-6

  • 上午完成了之前的imgnet以及SGD的BNN case study的实验
  • 下午继续实验bars
    • 配置eva9服务器 - 配置torch花了不少时间,首先不能用1.6以下的torch,以及对应的cuda版本,cuda10.2是我们的默认版本但是3090不支持了,所以我们需要改到11.1,目前服务器上的cuda管理并不能指定,事实说明这个索引也是不靠谱,所以还是要按照官网上给的命令来用;
    • 查看当前目录的文件夹个数 ls -l | wc -l;
    • 现在在服务器之间直接拷贝文件夹可以直接用 scp foxfi.eva10.nics.cc(provided that 两台服务器都已经准入)
    • 在不同服务器之间clone项目,需要git commit了才可以保留
    • pip是会使用$http_proxy作为其索引的;此外,remoteforward是用lsof -i :10808这样的方式来查看
      • 起新的imgnet的实验(groups)
      • 搓一个新的架构对比shortcut与不shortcut
      • res18的CIFAR对比实验
    • 将overleaf上的arxiv版本作为原版复制过来,并且加上TODO
      • 同时梳理一下哪些东西是要改的
    • 注册BARS

2020-3-5

  • 跑了一些bars的imgnet实验,跟进了一些bars的CIFAR实验,发现有一些大问题
  • 下午开会,确定了point transformer方向的一些改进相关的内容
  • 晚上下载数据集,搭建PCT的框子

2020-3-4

  • 继续尝试理解Point Transformer
    • 和弋老师约时间讨论
  • 布置好了BARS的实验任务,开始跑了
  • (有时间的话做imgnet的BNN Case Study)

2020-3-3

  • 上午继续补充阅读NAS+Transformer
  • 中午下午开了3个会,好难
    • 敲定了一下BARS的recycle实验,准备周末开工
  • 晚上被拉过去做PPT,开了个会修改了一下
    • 以及准备继续进行Transformer文章的阅读

2020-3-2

  • 上午补了一个BNN的实验
  • 从0开始入门Transformer…还是差了不少啊
  • 晚上继续阅读NAS+Transformer的几篇paper

2020-3-1

  • 开学了!
  • 过了一下学校这边的研究方向,开始展开survey
  • BNN这边的Case Study,发现了一些和想象不是很符合的现象

2020-2-19 ~ 2021-2-28

  • 持续推进Eric的合作项目…又进行了一些case study以及一些文章的Survey,想到了一个面向Det的Anchor优化机制,但是看起来有那么一些困难,所以又在看PointCloud的Transformer。

2020-2-19

  • BNN内容相关 - 优化的框架
    • 本质是做一个MH(Metropolis Hastings的方法):MH算法的本质就是从一个Distribution采样
      • 遗传算法等组合优化的方法都属于MH
      • 从一个P(x)的分布采样,X是模型参数,从一个Proposal的Distribution进行采样,然后以一定的概率接受或者是拒绝这个proposal。由于我们无法获得整个数据集上的分布(P(data)),所以我们是用一个batch上的loss来作为近似的,理论就不能收敛到最优解,需要借助一些Stochastic的MH方法
      • P(data X)是数据data在模型参数X下的似然函数; P(X)为先验,我们需要优化后验 P(x data),用bayes公式的时候分母上的P(data)不能得到,不能算出P(x data)的绝对值,因此用x和x’(Prposal)的比值,就可以把这个因子约去,作为优化的依据了

2020-2-11 ~ 20201-02-16

  • 过年,挺久没有更新内容,目前眼前需要读一系列paper,并且更新LS的实验
  • 需要做一个LS的总结
  • 以及No BN那篇文章在做什么可以简单扫一下

2020-2-10

  • de了一个ipython环境的bug,一开始的错误提示是在环境中仍然使用了base环境的ipython
    • 由于$PATH内部.local/bin在conda/env/xxx的前面。所以优先调用了base环境下的ipython
    • 检查bashrc的时候发现并没有.local/bin这个东西,然后发现是在~/.profile当中改动了$PATH,将.local/bin放到PATH的最后
    • 基本conda环境中对不上的情况,包括pip和python,都是$PATH的问题,其运行准则是优先匹配前面的

2020-2-3 ~ 2020-2-9

  • 主要在推进两个项目,都有一定的进展,有一些In progress的内容放到了notion里
  • 现在仍然没有形成对阅读过的文献及时整理到Markdown里面的习惯,任重而道远
  • 开了许多会,但是不敢在这里写目前的主要方向,因为感觉像是Flag

2020-2-2

  • fix了坚果云使用WebDav同步,在“编辑-首选项-同步内”,首先登陆账号,账号为ztc16,对应的坚果云的url为dav.jianguoyun.com/dav,用户名574596610@qq.com,密码在坚果云官网上进账号看第三方服务的应用密码
  • 给祥生讲了一下需要看的文件

2020-2-1

  • 单片机PPT
    • 单片机讲清楚是如何用寄存器控制单片机的
    • 开会并且修改了内容
  • 和弋老师sync了情况,被年崧带过了代码

2020-1-17 ~ 2020-1-31

  • 回家之后,感冒
  • 零星干了一些杂活,完成了CVPR的Rebuttal(比较凉)

2020-1-16

  • Reformulate了一下paper reading的格式,现在暂时放在papers/目录底下
  • Survey Paper并且继续想Idea

2021-1-1 ~ 2021-1-15

  • 开始了期末的复习,复习完了检测估计
  • 阅读NES

复习备考

拼接PDF的方式

2020-12-27 ~ 2020-12-31

  • 进行了一系列的awnas开发,终于搭起来了框子并且开始了训练

2020-12-26

  • 写了一天代码,确定了simsiam的实现方式
  • 修改了awnas的wm接口

2020-12-25

  • 上课,改代码
  • 准备NAS intro的PPT

2020-12-24

  • 上午和弋老师讨论之前过一下目前的思路和knowledge

2020-12-23

  • 首先梳理了一下目前的邮箱管理, buaa-mail -> gmail(main platform) -> qq-mail(收通知用
  • 更新BNN proposal PPT,讨论BNN的下一步做什么
  • 把矩阵的最后的尾巴看完
  • 看3D-NAS + 开awnas分支

2020-12-22

  • 考了两门试,复习

2020-12-21

  • 收了一下BARS最后的结果,基本能用了,更新了第二版Arxiv的版本
  • 继续复习矩阵,推进度
  • 复习网安,准备明天考试

2020-12-20

  • 补充tmux与系统剪贴板之间的交互以及tmux内部的剪贴板 - 感觉本质上和直接用shift+鼠标区别不大,而且win的系统剪贴板貌似还是和wsl的不同,用xclip并没有起到很好的效果
  • 复习网安
  • 复习矩阵

2020-12-19

  • 继续复习矩阵的相关内容

2020-12-18

注意一下grep的惰性匹配是从前往后的 正确的办法 journalctl -q | grep -P "\ \w+ms" journalctl -q | grep -P "\ [^ ]*ms"

2020-12-17

  • 整理更新了一下bnn的reading list并且挂到了wiki上,顺便熟悉了一下dokuwiki的用法
  • 整理了一下自我文献管理的pipeline
  • 学习使用了一下auth-thu
  • 开会讨论了surgery的下一步改进计划

整理一下目前的文章到WhatIveRead里面(好像并没有太多新的完整的paper-reading,之后再加吧,不过确实感觉对很多NAS的文章读过之后都没什么印象,之后应该还是要及时更新papers-of-NAS)

paper先加到zotero里,可以导出csv文件,excel导出之后可以总结到石墨文档中,石墨也可以直接复制到google doc
将其复制到本地通过脚本转化也可以和github上的md匹配。

paper的digest先写在每日的todo/paper-stack中,之后复制到zotero中

在zotero中添加了一个🐹-hamster section,用来把随手看到的乱七八糟的网站/文档存在这里
  • ICCV Surgery 讨论 nasbench-1shot1: BOHB(Bayesian Optimization)搜索了one-shot方法的超参数,去搜出以什么样子的超参数搜索去搜到更好的supernet(可以理解为搜索的是搜索方法的超参数,不是搜索架构的超参数) 在nasbench101上分出了3个用来做oneshot的子空间,发现在它们上面的超参数并不consistent

  • 如果是之前的sample以及sampling startegy相结合来衡量相关性,可以参考这篇文章的

2020-12-16

  • 接着改bars实验
  • 整理了3d un-nas的思路,做了PPT
  • 继续阅读了pointcontrast以及相关文献

2020-12-14 ~ 2020-12-15

  • 复习雷达

2020-12-13

  • 看了两道题目
  • 补充了CL的post
  • 简单修改了一下跑通了pointconttrast:

用到了hydra库,fair开源的一个research wrapper,包含了一些debugging,logging,cfg-loading相关的东西,直接按照tutorial安装hydra-core貌似会有问题…它报错缺啥就安装啥吧 另外还有一个tensorboardX的bug,在初始化的时候把SummaryWriter(logdir="./")中的logdir删除就可以了,可能是版本依赖的问题

由config以及train.sh所输入的arg来决定cfgs(cfg的解析由于用了omegaconfig导致有时候加注释也会影响…很迷) config是在ddp_train中以config_path传入的,默认config_name是defaults.config,是需要用hydra来传入cfg的,貌似hydra的选择方式就是在@main(config_name:) dataloader的iter出来的数据dict_keys(['pcd0', 'pcd1', 'sinput0_C', 'sinput0_F', 'sinput1_C', 'sinput1_F', 'correspondences', 'T_gt', 'len_batch'])

model的输出,F0以及F1,与pos_pairs一起输入计算contrastive loss

2020-12-11

  • 过了一下BNN的下阶段,分配了一下工作
  • 继续看雷达,上课

2020-12-10

  • 听取了Yi老师的3d understanding的报告
  • setup pointcontrst
  • 继续复习雷达

2020-12-9

  • 开会
  • 阅读了PVCNN
  • renew了雷达的实验报告
  • 复习雷达

2020-12-7

  • 主要搞定了bnn的事情,整理了PPT
  • 读了两篇3D Paper

2020-12-7

  • 上课
  • 干了一些杂活,sync了一下进度,感觉BNN还需要继续推进,需要拉小弟有一个timeline
  • 继续阅读3d相关的文献

2020-12-6

  • 服务器挂了eva9
    • eva9重启了,现在需要直接准入ip,然后再用ssh ztc-eva9-direct进行登录
    • 服务器重启之后的现象是nvidia-smi能出现东西但是需要很久,执行了deviceQuery之后发现fail
    • 需要到/usr/local/nvidia/bin中先运行nvidia-persistenced,然后再进行deviceQuery
  • 添加用户,在/etc/login.user.allow里

2020-12-4 ~ 2020-12-5

  • 我居然几乎读了一天这个Minkowski的文档…
    • 下午几乎一直在尝试弄明白这个conv的问题…感觉还是需要问一下
  • megre awnas代码
    • git rm -r --cached ./folder - 其中–cached表示只在remote删除本,本地保留
    • Python black 库做file format, 使用方式非常简单,就是直接进行black -v ./xxx.py

2020-12-3

  • 组会听铭远分享Survey
  • python -m - run the library as a script
  • sent email for the scannet seg dataset

2020-12-2

  • Minkowski cuda install error
    • 核心原因是eva服务器上的cuda的位置在/opt/cuda,而默认的索引位置为/usr/local/cuda/,参考这个帖子,export一个CUDA_HOME=/usr/local/cuda
  • 以及这个问题引起的为啥pip install torch安装的是cpu版本的cuda,但是pip intsall torch==1.2.0可以,大概是因为新版本的cuda和新版本的torch清华源上没有

  • git配置proxy
  • 目前采取的solution是从本地映射

    1. 本地的v2ray在10809的端口上开启了http服务
    2. 通过端口映射在登录服务器的时候指定 ssh -R 12450:localhost:10809 建立remote的映射
      • 端口映射-L会出问题,不明原因
    3. 在git的config中这样写 [http] proxy=http://127.0.0.1:12450
      • 在ssh_config当中可以 RemoteForward 127.0.0.1:12450(port on remote) 127.0.0.1:10809
  • ssh的config相关的配置用man ssh_config可以查询
    • -L 表示LocalForward - 将本地端口映射到远端
    • -R 表示RemoteForward - 将远程端口映射到本地
  • 跑一下flow
  • scanet

  • What Should Not Be Contrastive in Contrastive Learning
  • Key
    • propose a new contrastive learning framework
      • construct seperate embedding spaces(each invariant to all but one augmentation)
      • multi-head with shared backbone
  • Motivation
    • current contrastive learning methods implicitly assume a particular set of representational invariants(however downstream tasks may violate it)
    • the pretext task introduce the inductive bias, maybe harmful to each other(double-edged sword)
      • color invariant could benefit the coarse-grained animal recog but may harm fine-grained flower
  • Source
    • UCB Trevor
  • Methodology
    • construct separate embedding sub-space, each sensitive to 1 specific aug(“leave one out”)
    • concat of the invariant and varying spaces perform well
  • Exp
  • Ideas

  • semi-supervised & 3D 找到一个契合点,可以从application层面帮助
  • idea:
    • 在contrastive learning是一个与semi-supervised中有很大重合度的regime,goal比较align,和typical的sem不同,肯定目的更加genral一点
    • 针对某个任务,big pool of aug,某种implicit的可能会harmful
      • 特别是在multimodal的时候,可能一些感觉很直观的反而会hurt
    • P4contrast中怎么选择aug strategy其实可能有点arbitary/random。而且backbone怎么变其实可能会变化
  • related with NAS
    • correspondance的loss比较低,在sub-supervisedNAS的情况下不一定hold
      • 只是针对某个方向的backbone可能potentially在task之间可能不是很能够泛化
    • 在contrastive的情况下,空间的sampling策略很关键
      • 当loss不确定的时候,定义SS到问题,以及如何sample
  • NAS+contrastive 会有一些问题
    • transbench也揭示了对不同的下游任务,对arch的偏好会不一样
    • pretext task和下游任务之间的相关性
  • SemiNAS:

    1. 在架构空间:
      • 架构空间本身不是一个很smooth的manifold,所以无监督数据可能不能带来提升
    2. 在任务空间:
      • 在没有数据的时候进行NAS
      • 实际业务中,一开始label较少,label是在上线之后才产生的
      • evaluation的监督信息更加noisy了
      • 存在一个multi-obj的NAS
  • 可以尝试去做的事情
    • 去验证PointContrast搜索出来的arch是不是还能更有效
  • Questions:
    • contrastive unsupervised - general / task-specific
  • resource

2020-12-1

  • PointContrast
  • Key
    • Unsupervised-Pretraining for 3D tasks
    • 1st to propose pre-training based transfer learning scheme for 3D Learning
    • Discovered that unsupervised pretraining could achieve competible performance with supervised
  • Source:
    • Guibas-Stanford & FAIR
  • Motivation:
    • Bring transfer learning into 3D
  • Methodology
    • FCGF(Fully Convolutional Geometric Features):
      • metric learning
      • designed to learn features for low-level tasks, originally used in object registrition task
      • inspired by its workflow, ot proposed the pretext task “PointContrast”(However, the pipeline was originally proposed for metric learning for geometric local-descriptor)
    • PointContrast:
      • given a subsample of point cloud, generate 2 views aligned in real world coordinates
      • compute the corresponding mapping(find the matching points)
      • sample 2 random transformation to fuether transform(use rigid transform as: rotation, translation & scaling)
      • find the transform equivariance.
      • contrastive loss - minimize distance of matched points, maximize unmatched points
  • Exp
    • Contrastive Loss:
      • Hardest-Contrastive Loss
      • PointINFONCE:
        • like MoCo
        • modelling the contrastive learning framework into a dictionary look-up table
    • SRUNet(Sparse Residue) as shared backbone
  • Ideas:
    • 1st carry out a pilot Study: Pre-training on ShapeNet, use supervised pre-training, however hampers the downstream task(Segmentation)
      • ShapeNet only contains 3D objects, however the local geometric feature(encoded point/neighbours) is not sufficiently learnt
      • Huge Domain Gap
      • Conclusion: apply pre-training on single objects might not be sufficient; also, to capture rich point-level information, need to design a pretext task not only based on high-level(instance) representations, instead should capture low-level features as well.

[P4Contrast]

  • Key:
    • introduce self-supervised contrastive learning for multi-modla RGB-D scan
      • learn a latent space
      • positive: corresponding RGD-D points / negative: modalities disturbed   RGB-D not corresponding
  • Source:
  • Methodology
    • 2 pairs of point-pixel
      • easier to generate negative: 1. PointContrast-style: pick not corresponding pairs; 2. Like cross-modal contrastive embedding; replacing RGB/3D within one/both of the point-pixel pairs
    • Point Contrast: pairs of points from different views / P4Contrast: Point-Pixel Pair
      • break the correspondance between point & pixel
      • unmatched point pairs
      • geometric/color disturbance
    • Progressive hardness increasingA
      • lower bound of hardness of the partially negative pairs
    • PointInfoNCE Loss
    • Combine a 2-d & 3-d backbone
      • SRUNet - point - 6d-feature - [RGB.XYZ]
      • FuseNet
      • outputs concat; the feature fuse is early-fuse happens inside inside the backbone
    • Data Aug: important for CL since it allows generating anchors
      • 3D aug flow: render a scene point cloud into depth view and apply rigid transform – proven vulnerable
      • Only point jittering
  • Exp:
  • Ideas:
    • simply bring colors into PointContrast framework only brings marginal performance improvement(fail to leverage)
    • extract feature sepaerately from the RGB and depth channel, fuse them with cross-modal loss
      • however, the weaker modal regresses to the strong ones(lazy and learn strong features)
      • lack of learning the relations
    • so in this paper, proposes Pairs of Point-Pixel Pairs

2020-11-30

  • 阅读了UnNAS以及3D Survey

2020-11-29

  • 完成了很多的debug - 终于把bnn的branch给PR了
  • 开始survey 3D

  • vim vimrc中中文变成了下划线而且配色错误 - 原因是确实中文支持
  • 安装zh-CN
  • 最后莫名按照这个教程走通了?

  • 按照目前的情况commit了一个版本的docker image
  • 这个图的format和配色不错

2020-11-28

2020-11-27

  • 更新配置好了nvidia-docker
  • 测试修改好了bnn和final-model的代码

2020-11-26

  • Survey of Transferable NAS
    • 主要的任务是在不同的CV分类任务之间的迁移
    • 比较的baseline很多都是非迁移的
      • 有比精度的也有比速度的,更快的
  • 方法
    • 搬ML中的方法类比到NAS中-MAML
  • 核心问题-迁移什么
    • 直接迁移arch
    • 迁移controller
    • 迁移task embedding
    • 迁移meta-architecture
  • TNAML - NIPS2018
    • 新的task其实并没有迁移,每到一个新的任务要重新训练
    • 从task-id得到embedding,每一个任务都需要一个embedding
    • 实际上搜索的是一个head
  • CAS-MAS
    • 套的continual以及MTL
    • 搜索的是RNN的cell
    • 将原来权重和新权重在continual learning scenario下假设w^new = w^old + lambda x w
  • NASDA
    • 套的DA - 用了一个MMD Kernel(无监督)作为了alpha的reg
      • 想的是找到一个架构输出的feature更加能够接近
    • 用了adversarial training for final training
  • Auto-Meta
    • 套MAML - 用的maml改进riptile
  • TE-NAS
    • 同上
  • CATCH
    • 将arch-reward对子加入encoder的训练

auto-aug reltaed survey

  • learned aug from generative model(VAE/GAN)
    • Encoding to latent space -> pertubation -> decode back to visible
  • AutoAugment - Google Brain - CVPR2019
    • 找到一种policy,而不是一种aug
    • 是可以direct transfer到otehr dataset
    • Search的方法是standard的RL - PPO,但是他mention也可以用Evo
    • training.每个policy有2个subppolicy,subpolicy里还有不同的operation以及operation
      • final combine the best 5 policies
  • RandAugment - Google Brain - CVPR2020
    • no proxy task
  • PBA - population-based augmentations
    • EA related
  • Fast AutoAugment
    • BO
  • DADA
    • DARTS + Aug
  • augment需要schedule

朱军老师组 - Distributed Adversarial Training

  • 对抗样本的防御方法

    • 对抗训练 Adversarial Training - 将训练数据产生对抗样本,将对抗样本加入训练
    • 正则化 - regularization
    • Input Transformation - 对输入做变换 - 去噪声
    • randomization - 操作起来类似aug,由于对抗噪声本身不transform-invariant
    • model ensemble
  • AT - Adversarial Training

    • a min-max prolem: maximize the loss function to generate the adverserial example
      • 基于Danskin Theorem
      • 首先求解内部max问题的最优,然后代入外层并且求解
        • assumption: 内层的优化空间S是一个紧的集合,L是连续可微的(严格来说并不满足)
    • 假设扰动的l无穷范数小于\epsilon
    • 用对抗攻击的方法去找到内部等1max方法
      • Goodfellow FGSM
      • PGD(Projected Gradient Descent) - 多步的梯度迭代,每一步计算梯度并且设置了一个比较小的步长\alpha
        • projection其实是将走到的点映射归化到我们限定的扰动空间中
  • FGSM做AT,很容易overfit到FGSM的对抗样本上
  • 对比正常训练很慢,到10倍速度左右
    • Free Adv Training / Fast Adv Training - 在速度和鲁棒性之间做一个权衡
  • 攻击对其他攻击方式的泛化能力
    • PGD优异,号称能够防御所有的一阶的攻击方法
  • Big generalization gap
  • Adversarial Distributed Training

    • 内存的max问题不去产生一个具体的对抗样本,而是产生一个对抗样本的分布
    • 为了防止其退化到delta distirbution,加了一个entropy regularization
  • 参数化形式对对抗的分布进行建模


  • 麻烦妃哥起了一下docker service,msprobe了一下overlay库,另外还修改了这个post
  • 最后还需要把自己的用户加到用户组里,对/etc/group中的docker最后添加上自己的用户名

  • ref了nvidia的官方docker installation guide
  • 卡在了问题上,在最后测试安装成功的时候出现了docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"nvidia-smi\": executable file not found in $PATH": unknown
  • docker run -v /usr/local/nvidia//:/usr/local/nvidia --rm -ti --gpus all nvidia/cuda:10.0-base bash

2020-11-25

  • In robustness survey
  • supervised learning - follows the Empirical Risk Minimization(ERM)
    • view the training set as a subset drawn from the unknown data distribution, since we cannot acquire the true distribution, we should minimize the estimated objective over data samples that we have, thus the ERM
  • unsupervised learning
    • task often: clustering, feature learning, dimension reduction
  • 下午开始重构bnn的代码,相关内容放在notion上面

  • Huawei - Progressive Distillation for AdderNet
    • AdderNet - forward abs(w+x),反向传播的时候sign函数用straight through
    • 对于长度为[1,N]的tensor,conv可以看作是互相关(以及cosine距离),add就可以看作是L1距离
    • 用KD的方法,让ANN的精度能与CNN类似
  • 让中间层也做KD
  • 认为训练好的ANN的权重服从一个laplacian分布,对应CNN的是Gaussian
    • 认为如果给两者一样的输入,他们的输出结果会差异较大
    • 提出了一种”核方法”(kernel-trick)来用一个1x1conv去建模这个区别
      • 对ANN进行laplacian核,对CNN用一个gaussian核
      • kernel-trick始源于SVM,当两类数据在低维度空间中不可分的数据,在高维度数据可分,这里采用了类似的思想进行一个配准
        • 1x1 conv起到了一个匹配的作用
  • 对每个batch都同步更新tch和stu

2020-11-24

  • 跑了一下imgnet的试验,调整bnn
  • 复习矩阵网安
  • 整理,开adv的survey

  • 给vimrc里cmap了一下WQ到wq,这样就更容易保存上了…
  • markdown - Anchor Point
    • 每个小标题其实就是一个锚点
    • 回到过去
    • [回到过去](#2019-10-16)
  • markdown 多级别块引用

a

aa

aab

aaab

> a
>> aa
>>> aab
>>>> aaab

2020-11-23

  • Robustness
  • 攻击方法
    • Blackbox - 只能拿到最后的结果
      • Non LP-Norm - 早期是限定在L-N范数的扰动<\epsilon的情况下,去判断,后面别人会认为这个其实更贴合model,改用一些比如在pixel维度做一些pertubation这种对人比较适应的方式
      • 有的时候会基于离散搜索,先一个能够攻击成功的,然后将这个样本往正确样本靠近
      • Transfer Attack - 跨模型的进行模型攻击,就可以看作是一种backbox,由于各个模型之间的决策平面有共同性,通过自己构建一个proxy的model进行攻击,再finetune过去
    • whitebox - 已知需要攻击的网络的架构和参数
      • FPSM - Fast Gradient Sign Methods - 让x往Loss增大的方向走,在一个比较小的范围内
      • PGD - improved FGSM - Projected Gradient Descent
        • 认为一次计算梯度不足以反映周围loss平面的情况
        • 走N小步
    • 物理攻击
      • 攻击者不能直接改变模型的输入,间接的通过3D世界中的物体去改变
    • 针对应用的
  • 防御
    • 基于对抗样本以及正常样本的discrepancy (input/feature空间的指标),相对黑盒,和NN的computing pattern invariant
      • 用统计的方法,甚至引入一个额外的模型去判断,但是实际上不是很work
    • 从NN的计算细节出发 - Regularization / Grad-Clip
      • 加一个Lipshitz Constraint Regularization - 不然output离开input太远,但是非常的loose,因为reg大了模型训练会崩溃
      • 让梯度变小的方法 - 也被证明是无效的,并没有实际上去改变决策平面,只能防御基于梯度的攻击
    • 在测试阶段引入随机性
      • dropout during test - 有效 - 转换成了灰盒攻击,但是被指出只要多次攻击取平均就ok了
      • 以提升推理代价去提高攻击者的代价
    • 对抗训练 adv training (Main)
      • 生成一些对抗样本,加入训练过程 - 确实改进了决策面(把bound推远了)
    • 其他的推理机制(Capsule/Bayesian/Iterative Feedback)
  • 评估方法
    • Data-based - 模型M在某个输入x上不被分类错误的最少扰动 d(M,x)
      • 用attack去找上界
      • Certified(保证) 找到d的下界
        • 利用混合整数规划…
  • MARL
  • DL是暴力建模,MA传统的是采用博弈论的方式去建模
  • 很多偏理论,大厂才能做
    • 对于系统缺少一个统一的目标函数
    • 极限环 - 非线性系统的一个概念
  • 小厂能做的,比如说分布式执行 (Centralized training with full information & Decentralized execution)
    • MADDPG
  • 即兴组队 adhoc team play
    • 很难
    • 人类不需要很多的互动就能发掘是否合作/竞争
  • 高效交流
    • 默认的是假设没有通信,都在观察内
    • Emergent communication - 最小的bit交流最多的信息
      • NLP / 信道
    • 存在局部最优解,双方都要改变
  • 可复现评价体系
  • 大规模 - Massive Agents - 50-1k
  • 调度

2020-10-20 ~ 2020-10-23

  • 整理完了Supple,以及pack了代码
  • 帮凯哥画了图
  • 做了BARS的PPT

  • Label Smoothing的分析
    • 参考了一篇post分析了为何Label Smoothing在人脸的任务中没有用(在BNN中貌似是一样的道理)
    • 将原本的One-hot Label化为soft-label,[0,1] -> [\alpha/(K-1), 1-\alpha], \alpha一般是0.1
    • Label Smoothing起到了让样本聚拢的效果
    • 用了Label Smoothing的feature norm会更小,等价于对softmax的最大值降低了(类似于temperature高?) - 相当于只用到了Softmax中间的一段,最后的接近Saturation的部分没有被用到
      • Label Smoothing抑制了Feaure Norm
      • Loss曲面不再平缓

2020-10-19

  • vsco
  • 小组会 - Federated Learning Survey
    • 大的故事是希望在各个终端都进行联合的训练,但是实际做的时候很难做到收敛
    • Active Federated Learning - 利用一些active learning的方法,去选择那些loss相对较大的client去sample到
      • 但是别人指出可能会有bias,每个client并不是等概率选中的,最后的收敛点会是局部最优
    • 后续的改进: 引入一定的随机性:首先取一个groupA,在这个随机的group中去找loss最大的(之前的是在所有的里面找最大)
    • 之前的方法假定了client的loss相互独立(但是由于用了同一个model,而且dataset并不是完全独立) - 需要去Exploit the relationship between clients
      • 挖掘client之间的相关以及负相关的关系
      • 认为各个client的loss下降符合一个高斯过程(由于不限定核函数的GP可以描述任意函数)
        • 信息含在协方差矩阵中 - Covariance Matrix - Relationship
        • 去预测下一轮被sample到的client loss下降的情况
      • 如何定Covariance(如何定Kernel Function)
        • 在embedding空间的角度/MSE
      • Train GP
        • Maximum Marginal Likelihood
        • Maximum Leave-one-out

2020-10-20 - 2020-11-18

  • 基本上有一个月没有更新了…一直在调很难搞的imgnet试验以及写文章,终于提交文章了…
  • 现在有了一些基本的结果

  • engage with - involve

  • Factorized Reduce的形式
    • 有一个spatial的移位,stride=2的conv

2020-10-20

  • 获得电池信息 - win10
    • cmd中打开powercfg /batteryreport
    • 会在当前用户目录保存到当前用户目录下的battery-report.html
    • 打开之后可以
  • 压缩大文件:
    • tar -cvzf TAR_NAME SOURCE_FOLDER

2020-10-18

  • 开始调试imgnet
  • 拷贝大文件夹可以用到的命令 rsync -avhW --no-compress --progress /source /dest

2020-10-13 ~ 2020-10-14

  • 调search,依旧没有多少建树…不停的调
  • 准备整理一下darts的改进方法和核心问题,参考当时的awesome-quantization把

2020-10-11

  • 审paper - TCSVT
    • HUST的Multi-scale feature boosting network for texture recognition
    • 早期的texture recog主要有CNN和bag-of-words流派,VLAD方法用kmeans将一些feature组合未globalfeature
    • 核心观点是关注multi-sacle
    • Flow
      • extract multi-sacle feature with the guidance of tecxture prior
      • then encode the multi-sacle feature
        • in each sacle, use OTE(Outlier texture encoding) - resisst background influence
      • finally multi-scale boosting learning (progressively reinforced manner)
        • hierarchical f1(f2(f2..))
    • main problem:

      1. appearance change
      2. complex background
    • Outlier Feature detection
      • map the local feature on the supersphere
      • outlier are mapped outside

2020-10-09 ~ 2020-10-10

  • 紧张刺激的调实验,见notion page

2020-10-08

  • 组会 - Jittor - 计图
  • Keys
    • 统一计算图 - 兼具静态和动态的优点
    • 元算子以加速算子的开发
  • 静态图:
    • 不可能在其中print,需要在sess.run的时候
  • 动态图
    • 由于每一个op都是动态的,损失了在计算加速中merge加速两个op的情况
    • eager execution
  • 统一计算图 - lazy execution
    • cache住,动态切分为几个静态的子图
  • 统一管理CPU-GPU内存 / 统一同步异步运行接口,同时进行
  • 支持跨迭代融合,多个iter之间的融合
    • 主要难点在于解决依赖关系
  • 元算子
    • 组合成常见的Conv/BN等
    • Element级 / 重索引 / 重索引累加
      • 重索引 - 一对多的映射
        • Broadcast
        • pad
        • slice
      • 重索引化间
        • sum
        • pool
  • 动态编译 JIT
    • 默认的pytorch不会做jit,比如bn和relu放在一起可以更优化,但是还是逐op分开的
    • 写python,编译为高性能C++代码(for CPU)
    • LLVM兼容的优化编译链

2020-10-07

  • 继续开发
    • git alias
    • 改错误的clamp,clean推代码
    • 写画图脚本, inspect情况
      • 略微看了一下graphviz
    • 跑bnas的ckpt,查flops并且留下记录(好几次写查flops的脚本结果都没记录下来,需要保存一份)
  • 统一hyper-param调res18

2020-10-06

  • 查看进程
    • ps aux
    • ps -ef
  • 找到PID之后kill -9 $PID
    • kill -s 9 PID
    • 9表示尽快杀死…
  • debug awnas
    • 居然发现之前的search只有entropy_loss起到了作用,由于一个写的硬判断,导致实际rollout并没有传回梯度……
  • 讨论梳理了BNAS的贡献点,继续着手开发debug

2020-10-03 ~ 2020-10-05

  • MO~day
  • 出去约拍 / 爬山 / 约饭
  • P图

2020-10-02

  • ICLR冲刺,改图片
  • latex当中双引号是``something’‘,就很诡异
  • matplotlib当中只需要部分的legend的时候,将对应的ax.plot出来的对象打包成list,作为legend函数的句柄输入
    • matplotlib legend里打公式 $x_2$
    • matplotlib - marker - fillstyle`

2020-10-01

  • 参加婚礼,摸

2020-09-29 ~ 2020-09-30

  • 帮凯哥写文字 + 写flops reg
  • 上课

20202-09-28

  • 正在写flops
    • 可以在objectives里面加上flops reg
  • 学习了winograd以及SVD的推导

2020-09-26 ~ 2020-09-27

  • Setup Layer2 Differentiable的search跑起来,完成derive

2020-09-25

  • 写diff的wm(不确定是不是已经搞定了,基本功能基本实现了,等待调试)
    • torch的nonzero有backward的bug

2020-09-24

  • 用Sigmoid替换softmax - 将alpha采样时候的gumbel-softmax修改为relaxedBernoulli Sampling
    • 然后又陷入了对gumbel采样的疑惑,它是哪里导不过来?
  • 首先采样Sample这个过程的代码抽象就可以看作
    • 先从一个rand种子产生一系列randn
    • 然后把这个randn apply到对应的distribution中
  • 参考PyTorch Distributions
  • Gumbel Softmax
    • Softmax(sample-from-gumbel distribtution + log(logits))
    • 最原始的方式应该是从以logits为分布的caregorical distribution中采样出结果
    • 数学可证明 – 从gumbel分布中采样+logits,等价于从那个categorical distibution中采样出结果
    • 所以从gumbel分布中采样出eps的这个过程本质上就是一种重参数化(reparameterization)
  • RelaxedBernoulliSampling
    • 默认的sample方法是不带梯度的,rsample()才是带梯度的

2020-09-23

  • 体检
  • 再一次实战以及弄懂rebase…
  • 讨论了修改Layer2,并且开始进行tf-nas like SS的开发

2020-09-22

  • 上课
  • 阅读了wm的源码,思考如何改discrete的wm

2020-09-21

  • 开始上课了…
  • 期间用新的SS跑了几个arch,发现目前和我们的knowledge不是很一致…看起来比res18并没有强…

2020-09-19 ~ 2020-09-20

  • 胃病,摸鱼
  • 跑了几个实验(还把结果跑错了……)

2020-09-18

  • 继续调试BNN & NewSS
  • 发现了一个bug,之前的几个实验没有用biact,正在重新拯救bianry
  • 发现实验崩盘了,然后发现是用bianrize之后的结果save_for_backward了,导致梯度出现了大错误,Loss卡在1.0左右下不去了
  • 文章分享的时候过了一下最近的几个会议的NAS文章

2020-09-17

  • BNN Talk
    • 2016 Bengio 开山
    • XNORNet 2016 ImgNet 51.2
    • ABCNet 2017 - 模拟全精度,K binary basis
    • BIrealNet - initial with real-valued CNN / more shortcut
  • Recent on information flow
    • sigmoid - saturation
    • solved by relu - relu miss info
    • leakyRelu & prelu
    • network too deep for gradient vanishing - highway
    • simplified highway - resent
  • real2bianry conv
    • 塞了一个SE模块
  • ReActNet
  • Latent Weight donot exist: rethinking binarized optimization
    • weight 不能follow全精度的
    • 反向弄了半天但是不足以该百年前向
    • binary weight is not approximation of latent weight
      • real-valued latent weighst are not weight, like momentum
    • distillation

2020-09-16

  • 整理log,读文章
  • NAS中关于采样Sampling的问题:
    • 原始darts其实是没有采样的,直接按照权值加权
    • Gumble采样其实已经是有采样的了(Gumble本身就是一个Multinominal采样的近似),只是将本来采样出来的一个hard mask变成了一个Relaxed Form(也就是gumble之后的softmax值)
    • ProxylessNAS中采样的是hard mask,每次只采样两条路径
  • 其实gumble采样本质上也是为了把梯度导回来
    • 是因为softmax内部的argmax
    • (在有些场合中用StraightThrough其实也是可以的,比如ProxylessNAS和DSA)
  • NAS中Shared-weights方法的Sample Subnet的方式
    • 与darts这一支不一样,主要的方式是直接从一个Uniform Distribution中采样,而不用去训练这个Distribution(Darts的alpha其实就是在训练这个dist)
    • one-shot NAS的宗旨就是用一个Controller去从Uniform Distribution中采样出一个好的arch
    • 希望把Sample Arch的过程和Train Supernet的过程做解耦合(如果训练架构参数dist的话supernet的weight会和架构参数强耦合)
      • One-shot方法的主要问题就是Supernet精度好的Subnet也精度好这个假设不一定能够成立,如果不成立的话可以看作对Controller进行了错误的reward……
  • ProxylessNAS与FBNet
    • 都有一次inf中只取一条path的(可能是因为ss不同吧)
    • Proxyless用了gumble,而FBNet用的是StraightThrough / PolicyGrad(Reinforce的方式导回梯度)

2020-09-15

  • 身体原因摸🐟半天
  • MLOSS
    • 重新加大reg跑了一次awnas search
    • 带noallow_none_op进行了final train
  • 阅读newss代码

2020-09-12 ~ 2020-09-14

  • awnas new ss 开发
  • 阅读了robustifying
  • 继续pcdarts
  • 准备BNN相关的问题

2020-09-11

  • det NAS 讨论
  • 小目标
    • Solution:
      • FPN - better feature fusion(multi-scale)
      • SNIP - 分辨率
      • 2-stage - 1st localization, det small obj, then do classification
    • motivation:
      • 小目标所对应的anchor太少,主要问题是imbalance问题(大物体一定会匹配到更多的anchor,小目标的IOU肯定会偏低)
      • 也有fpn本身不动,搜索classifier(不考虑如何去做feature融合,而是去搜索怎么去利用Feature)
      • data-aug - 目前不考虑

2020-09-10

  • Linear Progra计算方法了解/Viertebi算法了解
  • 和妃哥讨论了aw-nas SS的开发工作
  • MLOSS绘图

2020-09-09

  • [培养方案](https://gsmis.e1.buaa.edu.cn/gsapp/sys/wdpyfaappbuaa/default/index.do?EMAP_LANG=zh#/pyfaxq)

  • 阅读DenseNAS代码
    • 还是没有完全搞清楚…latency model的形式
  • 随意扫了两篇NAS的文章
  • update on no-scale实验
  • 解决了之前的几个问题
  • 整理nas-reading list到石墨上

2020-09-08

  • 看了denseNAS的macro search的scheme,感觉还是挺简单可以实现的
    • 每个stage留一个aggregation node,然后开始选
  • 继续推进BMXne,还是没搞清楚offset以及noscale的操作,看起来并不是hyperparam的问题
  • 跑darts search还发现了一个很弱智的问题
    • 然而原因是第一个epoch之后所有的edge的op都倾向于shortcut

2020-09-07

  • 画MLOSS的图
  • 加了一些BNN-search的方法,做了一些对比试验
    • 不管有没有scale,只要不zero-mean weight就会更加陡峭
    • 没有bias貌似是好事

2020-09-06

  • 继续实验,没有scale的一开始smooth下降,到了后面会直接炸穿
  • 继续开发,准备合并代码了
    • 1- 准备复制对比,合并aw_nas_private分支上的代码
    • 2- 首先进行weight不归一化(只clamp),带bias,不带任何scale,(grad straight-through),是否能够正常的训练
    • (可能会添加的)
      • grad更新梯度
      • offset - 如果我看明白了它的操作方式的话
      • 更多的activation function
  • 读DenseNAS那篇文章,感觉讲道理也可以和bnnNAS联系起来
    • 关于搜索width和connection的motivation感觉joint search可以用到
  • 和凯哥一一起看bug

2020-09-05

  • MLOSS继续添加文字
  • 讨论了BNNNAS的方向与内容
  • 继续做BNN实验
    • 目前通过将channel-wise的scaling改成blockwise的,有效提点
    • 但是直接没有scale的还没有成功

2020-09-04

  • 开会讨论
  • 跟进pc-darts的修改
  • 一些寝室的破事…
  • MLoss添加文字

2020-09-03

  • 搭框子for MLOSS
  • BMXnet
    • [code for layer]*(https://github.com/hpi-xnor/BMXNet-v2/blob/master/python/mxnet/gluon/nn/binary_layers.py)

2020-09-02

  • JMLR track
  • Submission-info
  • Files
    • cover letter denoting MLOSS
    • 4 page description
    • archived source file
      • no extra file, tested
  • review criterion
    • quality of description
    • impact on ML community
      • the novelty, breadth of the contribution
      • tutorial on simple usage
      • example of usage
      • Full doc of the API(whether available on website or requires building locally)
    • openness for development
      • quality of developer doc
      • how easy for contributor to contribute
    • implemention
      • extensive unit-test
      • continuous integration
  • Example
  • Description structure
    • abstract
    • Related works
    • Description
      • Supported Features(Algos) - alogorithm could be listed in the appendix
      • awnas workflow..
      • Component Design Pattern
    • comparision with similar packages like tslearn
      • 感觉只是mention了,没有做实际数据的对比…
      • 与我们类似的(已经1k star了) D-X-Y:-AutoDL Projects
  • 推进了BNN的实验,修改了之前的一个bug

2020-09-01

  • 阅读bianry文章并且有了新的insight
  • 更新PC-darts
  • BNN新实验

2020-08-29 ~ 2020-08-31

  • 推进BNN+NAS的试验,目前已经跑出了一版91%左右的结果,发现了原网络中有几个高精度层没有去掉,正在去掉并且尝试
  • 邮件咨询了原作者试验细节,没有太多正面回复
  • 正在ck flops和mac的正确计算方式
  • 读了一篇paper,IJCAI2020感觉十分之蠢

2020-08-26 ~ 2020-08-28

  • 主要就是不停的搬家
  • 看了ECCV weakly supervised tutorial

  • eccv - WSL
  • Self-supervised Learning:
    • define a pretxt task that learns good representation
    • transfer the learnt knowledge to down-stream task(the transfer learning requires regular task)
  • Weakly-Supervised Learning
    • use pretrained model then finetune with weak-supervision ** WS detection
    • Parts vs. Object
    • Context vs. Object
    • Multi-Obj
  • Annotation cost in det

2020-08-25

  • 听eccv
    • transfer learning + quantize
      • 用一个fp32的imgnet-pretrain,过一个attention,提取部分feature map给student去align
      • 还有一篇做pruning的文章,iclr2020 - pay attention to feature, transfer learn faster CNN
    • generation-based data-free quantization

2020-08-24

  • 到校,手续,整理东西
  • 听了几个spotlight的session,这个形式属实不行,3min真的太难提问题了
  • 准备了dsa的问题,明早还要看gates的zoom场景

2020-08-23

  • 整理东西,做火车,究极摸🐟

2020-08-22

  • JMLR - MLOSS - 内容简述
  • darts相关文章观察
    • 主要应该还是PCDarts
    • 以及random pertubation的那篇ICML2020的SmoothDarts
    • Undersrtanding & Robustifying NAS
    • Xiaomi - FairDarts
    • DropNAS: Grouped Operation Dropout for Differentiable Architecture Search∗ - Huawei Noah - 没arxiv - IJCAI2020
  • Wang yunhe

  • 非常好的取缩写的网站!

2020-08-21

  • 跑bnn实验
  • 拍照片

2020-08-18 ~ 2020-08-20

  • 复现了bnas在awnas框架中
  • 并整理BNN文章
  • 返校相关事宜

  • nas分享
  • NAT - neural architecture transfer
    • weight-sharing方式和ofa基本完全一样
    • ss: mobilenet-V2

2020-08-17

  • darts中的gumble-softmax
    • 原本darts中选择op的形式: 简单的softmax(从一个vector中选取最大值的方式,最脑瘫的就是直接取max,然后是softmax,可导了但是不合理,输出的概率分布会趋向于one-hot,然后就是结合re-parameterization的采样gumble-softmax)
    • 噪声是一个gumble噪声,其分布CDF是一个e^(e^(-x))
    • temperature越高,输出的分布越平滑(为0的时候退化为传统softmax)
    • 可以认为是在原本的输出上加上了一个噪声,利用这个噪声将梯度传送回来。而采样能够保证采样出的分布与原分布是趋近的
  • 原本darts用softmax的形式,没有一种从supernet采样网络的过程,而是只是单独的连续的优化一个supernet,这样完全不能保证子网络能够获得好性能

  • 更新了新的git repo之后(将原本的repo删除了重新fork了)
    • 导致fatal: unable to access 'https://github.com/AberHu/ImageNet-training.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
    • link
    • 需要重新安装一下creciderntial文件
      • sudo apt-get install --reinstall ca-certificates
      • git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt

2020-08-15 ~ 2020-08-16

  • 更新awnas文档,写了一些内容,更正了一些理解
  • 听了一个会,阅读了TF-darts

2020-08-11 ~ 2020-08-14

  • 青岛

2020-08-09 ~ 2020-08-10

  • clean代码的同时debug
    • 这个bug真实恶心,如果在backprop中需要获得梯度,可以用 torch.nn.grad.conv2d_weight(input, weight.shape, g_input)

2020-08-08

  • 修正darts算法
  • derive并测试

2020-08-07

  • de了一下上网的bug
    • 先webvpn登录
    • 认证之后用短用户名登录
    • 进入之后准入地方填ip以及密码并登录,注意选择”校外”
  • pyyaml的对对象dump的一个bug
    • xxx does not represent xxx
  • 整理了一下最近读的文章

2020-08-06

  • 严明玉博士 ICT HyGCN
  • 团组织迁移

2020-08-05

  • Valse论坛

    1. high efficient high resolution backbone - HRNet - High-resolution representative learning
      • designed from scratch(not from classification network)
      • Maintain high reso instead of recovering from low-prec
      • high space sensitivity
      • 结构
        • parallel connectio of multi-reso with repeated fusions
        • via reducing width(32/64) to get comparable params with Resnet(128)
      • 任务
        • 人体姿态估计,关键点提取定位
        • Segmentation
    2. Han Song
      • ProxylessNAS
        • 1-loop, learning both weight and arch
        • Latency as feedback
        • Path-level pruning & binarization to boost efficiency
      • Proxy - doeenot make sense
        • CIFAR transfer to imgnet
        • Search 1 block, then stack
        • shorten the training epochs
      • OFA - decouple training and search
        • prevent networks interfering with each other - progressive shrinking
          • Train = shrink 4 dims - finetune both the big and subnet
    3. NUS -Feng jishi - Rethinking Bottleneck & Self-attention
      • Inverted Bottleneck
        • 本质是把shortcut连在有expansion之前的(低维度)地方
        • gradient conflict because shortcut connect to low-dim feature(bigger noise when samples are different)
          • bigger width could solve
        • Partial Mapping
          • 只把一部分channel给shortcut过去,节省了elementwise-add
        • SGBlock
          • 把最后的relu activation改成了linear
        • Enrich Darts Search Space
      • Self-Attention
        • Bert - many self-attentioned transformer
        • 分析attention map之后发现,主要的还是在Local
          • 思考是否能只用local的信息 - conv就是一种local aggregation的方式
        • Span-based dynamic conv
          • 将当前与前后的token concat起来做conv
    4. Li guoqi - THU - Brain-inspired computing with spiking NN
      • ANN & SNN
        • ANN - normal NN - non-spiking - computer science oriented - 输入时actication,神经元的状态,忽视neuron内部的dynamic
        • SNN - neuronscience-oriented - 输入是一个spike,是一个序列信号,用微分方程去描述
          • binary spike & spatial temporal domain
      • hypbrid paradigm of ANN & SNN – Tianji 天玑类脑芯片
      • SNN相关的dataset相对还比较少 / 做大规模难
  • 登录eva7的命令ssh foxfi.eva7

    • config里写的登录用户名都是zhaotianchen

2020-08-04

  • 做了讲座
  • 熟悉darts代码,针对awnas复现darts

2020-07-31 - 2020-08-03

  • 准备了一个讲座的素材
  • 摸鱼Day
  • 比赛这边好像是错失了

2020-07-21 ~ 2020-07-29

  • 一直在挣扎BNN相关的东西…
    • 目前的情况是VGG和NIN能够按照原来的方式成功复现
    • 但是res20/18的xnor模式很难复现
      • 目前最大的怀疑点是因为grad没有找到正确的full-precision的方式
  • 搞定了DSA的长视频PPT

2020-07-20

  • Summary
DSA - More Efficient Budgeted Pruning via Differentiable Sparsity Allocation

Pruning has become an popular approach for compressing the model. DSA focuses on budgeted channel pruning. 
which removes certain ratio of channels for each layer to guarantee the model meeting certain budget (like FLOPs/param size).
(i.e. the sparsity allocation). 

Current sparsity allocation methods mainly remain the iterative Flow, Seeking layer sensitivity through iterative sampling pruning
strategies and testing the model, which is a  discrete search for layer-wise prune ratios, making the pruning flow compilicated and low-efficient. 
dsa seeks to use gradient-based methods to optimize the prune ratios in the continuous space, for  an end2end, high-efficient pruning flow.

In order to achieve that, dsa proposes a differentiable pruning process to guide the task loss's gradient to prune ratio. Then using the admm-inspired 
gradient-based method to solve the constrained optimization problem. 
# As experiments clarifies, its gradient aligns with the layer sensitivity analysis. 
Also, we propose a topological grouping method to properly handle the shortcut connection pattern in network. 

DSA could achieve competible or even better results with existing pruning methods. At the same time, reducing the time cost for sensitivity analysis 
to a negiligible amount, also saving the cost for pre-training the model. Speeding up the whole pruning process to at least 1.5-2 times.


  • 又更新了arxiv…上次bib没弄好,没有放bbl文件
  • 推进了一下互联网+

2020-07-19

构思一下DSA文章的PPT

  • 需要做的90s的Overview以及一个<10min的整体talk

    • 学习一下松哥PPT的讲故事方式
  • talk’s slides 26-30 pages

  • 90s video (follow the PPT flow)

    • comparison with end2end flow & iterative
  • results & compute analysis

  • PPT

    • pruning background(1)
      • state the def of “budgted pruning”
      • plain pruning, couldn’t ensure budget control and full utlization of model
    • view pruning method(2-3)
      • intra-layer importance - more related on weights during training
      • inter-layer importance - Mainly focus on this field - less related to weight sneural architecture search
      • give some examples
    • Key components for DSA - a map of computing effort(3-4)
      • computing effort
      • current pruning method:
          1. Iterative Sparsity Allocation - gradient-based , efficient SA
          1. rely on pre-trained model - train from scratch, no
    • sparsity allocation (5)
    • from scratch(rethinking/PFS) (6)
    • Methods - 3 main components (6)
      1. Differntiabel Pruning (How 2 make the problem differentiable) (8-11)
        • list the formulas
      1. Workflow(flow chart with problem formulation)_ (12-14)
        • ADMM
      1. Topological Grouping (15-17)
        • for resnet.. group
    • Exps. (17-21)

      • xxx

2020-07-18

  • 跑完了手续
  • 更新了arxiv

2020-07-13 ~ 2020-07-17

  • 修正gates的baseline试验
  • 完成cameara ready的revision,最终导出了
  • debug Quantization
    • 调试完成了mobv2的qat,导出了东西
    • QAT导出了acc尚可的模型

2020-07-07~2020-07-12

  • 出去玩了几天,简单记账
    • day1 shanghai
      • 车票70
      • 住宿220
      • 午饭50左右吧+晚饭80
      • 下午的活动是扫街,几乎没有消耗
    • day2 shanghai
      • 住宿220
      • 上午摸鱼,无事发生
      • 下午武康路+轮渡+陆家嘴
      • 晚饭55烤肉+中饭日料66
    • day3 Hangzhou
      • 车票100
      • 住宿200(民宿)
      • 早饭10+中午满福居60左右+晚上火锅60
      • 然后好像就是在打牌
    • day4 Hangzhou
      • 住宿 200
      • 午饭小吃20 + 晚饭外卖50
      • 下午西湖划船和各种走,几乎没有花钱
      • 晚上酒吧78
    • day5 Hangzhou
      • 中午肉蟹煲30 + 晚饭M记
      • 车票120
    • 以及乱七八糟各种地铁票算50
    • 统计一下大概一共1k6左右,大约一个35mmF1.2的国产镜头

2020-07-06

  • 调试了半天,修改了网络结构,tune了一些超参数

  • 组会
  • 对于Semi和Self之类的东西,需要说明他们的insightt以及是从什么角度解决问题的,是和我们的反向正交或者是联系

2020-07-04

  • 熟悉awnas的代码以及BNN的代码
  • 以及加入开发

2020-07-03

  • 继续Survey BNN并且简单讨论与讲了一下
  • 准备开始在aw-nas下开发BNN

2020-07-02

  • 继续追赶Quantize
    • 结果还是tf的版本问题。
  • 写了周报
  • 听了组会和黄老师的报告
    • 核心是去冗余
      • res其实通过学一个residue,一定程度上也是省去了冗余
    • Stochastic Depth的方法
      • layer-level的dropout
    • Multi-scale densenet
      • depth adaptive
    • Spatial adaptive
      • like hard-attention
      • gumble-softmax

2020-07-01

  • 人类智能
    • arch
    • training
    • inference
  • P1~7
    • P2 类比 - 多task也放一下
    • P3 找Arch不高效
    • P4 Training不高效
    • P5 单任务到多任务
    • P6 文章加进去
    • P7 工具链
  • 原先大家把domain knowledge当作先验
    • 如果我们把某个领域的知识体系/分析问题的思路(比解决问题的具体方法高一层-解决问题的具体方法就是Model)看作Arch
      • 知识体系是啥? - 甚至每个专业需要学什么课程也可以是一种知识体系
      • 人类在知识体系下学习的过程看作Training,知识自然就是weights,依据模型来解决问题
      • 比如说
        • 或者说生物学或者是细粒度分类的例子,对鸟,我需要注重它的毛色,尖嘴
        • 农业
        • 商业
  • 知识体系是由领域专家很多年总结而来的 - 类比比如Transformer/resnet这种手工设计的模型
    • 模型设计的自动化 - 比如量化交易,或者基于统计的一些方法正在逐渐改变某个领域的知识体系(炒股/推荐系统-由社会学到统计学)
      • 那个尿布和啤酒的例子
      • 炒股口诀走势
    • 目前模型设计的自动化 - 慢
  • 智能化 - 学习效率
    • 单任务的效率
    • 多任务的效率
      • 不再Starting from Scratch - Continual
  • 为了更加general的AI,能够多任务,任务之间continual,任务之间transfer - 持续学习能力以及迁移推理的能力
    • 未来的方向

  • 读了几篇BNN的文章
  • 看了几个BNN的代码
  • 晚上参与讨论了Det+NAS

2020-06-25 ~ 2020-06-30

  • 继续推进Quantization的debug
  • Binary相关的Survey
  • 毕业相关的乱七八糟
  • NICS-fix更新
  • 过黄老师的文章 

2020-06-24

  • 参与了凯哥的讨论
    • 目前还没有太多的进度
  • 返校相关的内容事宜&毕晚
  • 修改了blog中的post格式…相比bash指令还是python-os好用,适合我这种脑瘫
    • 但是jeykll读取不出来了,所以gg
  • 需要扫一眼黄老师的文章以及BNN Search的可能方向

  • Huang Gao
  • Automated Searched Model
    • 谢凌曦 - Huawei Noah’s Ark - Toward next generation of NAS
    • GOLD-NAS(Gradual One-level Differentiable)
    • 吹逼:
      • Data-efficiency / Auto-Learning / Knowledge-Aware
      • Google 2W GPU-Day
        • Fast NAS - 1-gpu-day
    • AutoML不仅是NAS,还有比如AutoAug
    • NAS
      • Search Space
        • Darts 10E18
      • Search Strategy
        • Basically heuristic
      • Evaluation Method
      • 后两者紧耦合
    • 有一系列基于MobileNet搜索空间的(链式-6E17)
      • Megvii - Single-Path
      • XiaoMi - FairNAS
    • Weight-sharing - jointly search and eval.
      • Pros: computationally efficient
      • Cons: instability searching process
        • Gap between super-net accuracy and real-acc
        • 一般有保序假设,一般来说问题很大
    • 一系列NAS - 联系于Darts
      • Darts - ICLR2019
        • Cell-based SS, repeatable cells - Normal Cell(xN) & Reduction Cell(x1)
          • Searching process, for Memory Save, less normal cell(like 2x), then stack’em when retraining
          • Pooling actually could appear in normal cell
          • Within each cell, a DAG(Directed Acyclic Graph)
            • OPs appear of edge, with a weighted sum
        • with the assumption that: the best supernet is the best subnet
          • if testing every single one of sub-net, the best is best
          • still not true - if deleting op with lower weight, supernet acc will boom - 20%
            • for convergence, when searching there is a 0 op, so won’t guarantee the assumption, at last, nearly all edges 0 is dominant
            • also if searching longer, 0 is near 0.99, skip-connect also dominant
        • 初值敏感,不稳定
        • Main effort - stablilzing DARTS
          • CIFAR-10 97.3% is okay
        • new improved works
          • DARTS+
          • Stabilizing Darts
      • 一系列工作都在致力于减少Darts手工设计的规则
        • Normal / Reduction Cell 要一样
        • bi-level optimization
      • [P-Darts]*(https://arxiv.org/abs/1904.12760) - bridging gap between search/evaluation
      • PC-Darts - NAS regularization
      • LA-Darts - latency into differentiable NAS
        • 加入了Latency约束
      • Scalable-Darts
      • Stabilized-Darts
        • find that DARTS’ “Optimization Gap” originates from the BI-level Optimization
          • the assumption: current omega is the best omega under certain alpha
          • alpha(small amount) and omega(huge amount) - unbalanced(if 1-stage, since omega optimization is simple alpha under-fitting)
          • we could fix alpha and plain train omege
        • 2-satge result in only shortcut or depthwise in one cell
        • Strong regularization - autoaug - alpha is no longer underfitting
          • Plain training on imagenet(since it’s hard enough)
      • GOLD-NAS
        • 2-level DARTS -> 1-level DARTS
          • split 2 set, optimizing \omega and \alpha respectively
          • the bi-level optimization assumption is wrong(find the best alpha under certain omega)
          • original darts tried and failed
        • Softmax->Sigmoid - let all op be independent
          • 现在每条边上的7个op不再是互相竞争的
          • 如果不加正则,容易保守的认为全部都留下(all op tend to be kept)
          • Gradual Pruning - 本质上就是有warmup的FLOPs的Regularization
          • 直接就找到了一个Acc和Complex之间的Trade-off
        • each node could be connected to any number of nodes

2020-06-22 - 2020-06-23

  • 毕设相关的一个德育PPT
  • nics-fix-pt更新

2020-06-21

  • GNN相关内容的会议 - BrainStorm
  • 数据与计算
    • 数据 - 主要是表征的问题,包括在存储系统中如何分配与表示
    • 计算 - 如何处理数据,更高效的处理和分析,设计到计算架构的设计
      • 算子层 - 表示/加速
        • 如何执行,包括一些编译的问题
        • 一般来说对一个比较general的open-source的方案,一般自己很难达到2x以上的优化效果
      • 系统级别
        • 调度,以及一些Scalability
        • 大规模的可能会设计异构的数据传输,以及分布式系统支持更大规模的数据
      • 应用
        • 系统级别以上的拓展

2020-05-26 ~ 2020-06-20

  • 写Rebuttal
  • 做毕设PPT以及毕设论文
  • 补充实验

  • 更新代码仓库
    • 编写并且通过Pytest
      • pip install pytest
      • pytest -x ./tests
      • 使用-s来用ipdb
  • 还有一个bug没解决……
    • lzftzyaqlfsgbahi

2020-05-25

  • 继续修改论文格式
  • 服务器居然被攻击了…
    • * * * * * /tmp/./systemd -lan 166.111.57.30:3333\
    • 记住Ubuntu的默认弱密码用户要删掉

2020-05-24

  • 准备rebuttal开始跑实验
  • 改毕设文章

2020-05-23

  • NIZ键盘调整键程的方式
    • 右Fn+F7
  • 写致谢填写一些内容
  • 出rebuttal了开始准备

2020-05-22

  • 冲完了第一版的毕设论文,晚上把致谢给写了并且开始看tflite的定点
  • 为rebuttal而焦虑…

  • 峰哥的工作:
    • 2 Subtask
      • 2d image 2 PC(估计深度)
      • 点云之间的变换关系

2020-05-21

  • 论文相关内容
    • 论文的每一张标题都需要对应标题
      • 前后章节之间也需要一定的对应性
      • 点以下关键词
    • 章节的最终输出要有量化
  • 组会 - 神经网络加速器
    • 通用模型 - 通过编译器产生指令集序列 - 用神经网路处理器(DPU)进行执行
    • 无需重构,DPU烧录到FPGA中
    • 处理器的架构和基本算子
      • 支持的算子
      • FPGA的SoC
        • DPU在PL中,与PS通过AXI总线接口通信
      • DPU
        • 控制
          • Instruction的读取等
        • 存储
          • Data Mover 主要是片内片外的存储
          • Memory Pool
        • 计算
          • Conv 以及类卷积操作
          • MISC 别的操作的混合
    • 核心是将不同的操作分配到不同的时钟,利用流水
    • Conv在1xPxMxN的并行度
      • 兼容性升级
        • Save
          • Upsampling - 复制元素
          • 行内补0 - 支持deConv
          • 修改前向的加法树,不做input-c维度的累加
        • Load
          • 整行补0(Load实际不读数字,直接读0)
    • DSP特殊修改
      • 利用27x18的DSP(ZCU102)一个乘法器支持两次的乘法运算
        • 由于8x8最大也只能达到15位,左移了18位多了
        • 剩余3bit是用作DSP的级联,利用DSP的乘法累加操作,有效节省了加法树的资源
          • 最多可以满足8个加法的补位
      • DSP还支持倍频
        • 主时钟100M,但是DSP可以跑到200M,通过乒乓输入2组数据
        • 这里涉及一个跨时钟域
        • 排布整齐,便于保持时钟速率
    • 时分复用
      • 卷积核33时候,至少需要9个clk才能出下次结果,在这9个clk中,将上次结果串行输入加法树后的数据处理逻辑中,省8/9的逻辑资源
      • Pooling和elementwise sum同理
    • Instruction Scheduler
      • 卷积(计算模块)和下一次的dataload模块可并行,但是会有时序依赖
      • 这个步骤编译器会完成 - 本质上是任务上把某个寄存器的值写入,下一个任务的开始读并且校验这个寄存器的值
      • 硬件约束: 由于一个硬件模块只能执行一个操作
      • 向量约束L datamover所引入的约束
    • DataMover
      • 主要处理了边缘情况(比如不整除),获得整齐的输入数据,来让conv的模块高效起来
      • 整理碎片化的数据并且
      • Extra - 双HP接口
        • 实际Xilinx是有两个PS与PL端的数据接口,但是编译器认为是只有一个,会认为产生硬件冲突
          • 需要硬件实现硬件依赖和逻辑收敛

2020-05-20

  • 上午在画论文的图…还有一部分没能完成呢
  • 下午出门了

2020-05-19

  • debug de到崩溃
    • 增长了少许的C++知识:
      • stderr是错误流,可以将FILE f* = stderr
        • 需要import一个库

2020-05-18

  • 填充内容,完成运算模块改进的内容填充
  • 继续调试det api的bug

2020-05-17

  • 填充内容,完成低比特训练部分的内容填充
  • 继续调试Det api的bug

2020-05-16

  • 搭起来了论文框架
  • 把服务器上环境崩溃的bug给de了

2020-05-15

  • Core dump的相关内容以及解决办法
    • 如果报错core dumped应该会生成一个内存的core快照文件可以gdb进去(for C)
    • 如果使用docker的话container必须要以privilidge启动在某些环境下才可以让core文件顺利产生

2020-05-07 - 2020-05-14

  • 继续被配环境搞的自闭
  • 在这个过程中熟悉了tf的相关机制
  • 解决了安装问题,但是转模型问题没有解决

2020-04-29~2020-05-07

  • 被tf安装搞得自闭的几天
    • 具体的内容放在LPCVC2020的post里阐述,对配环境多了一些心得
  • 以及出去出了两次片,修图和采风能力有了一丢丢的提升
  • 2020-05-07晚,熟悉docker,在公司服务器上开始使用
  • (以及是不是应该开始准备毕设了)

2020-04-28

  • 修图,学习配色
  • 比赛相关内容
  • Tflite文档阅读

2020-04-28

  • 读ResNest论文,继续调实验
  • 扫街,天台多人运动

2020-04-27

  • 读两篇NAS文章
  • 改bug,加semi的fix并且调试
  • 开会讨论DetNAS

2020-04-26

  • 调试之前代码的bug,增加实验,画图
  • 扫街

2020-04-25

  • 费了不少功夫更新了grouping方法
  • 费了一些功夫调试之前的bug

2020-04-24

  • 试了一下新的stoc,真的有效果了(为什么还是有点诡异)
  • 相机到了,扫街

2020-04-23

  • 组会
    • 曾哥FPGA虚拟化Survey
      • JetStream: 在RTL层面设计了一套Pcie的协议,在多FPGA之间直接互联
        • 本来Xilinx的Pcie core是管FPGA和CPU的交互的,通过手动设计一个FPGA的pcie的Controller
      • FRMR: Madreduce on MultiFPGA 2010
        • 本身用了算法的Server-Client的数据流结构,来用作多卡
      • Axel: 异构云系统对MapReduce加速 2010
        • 节点之间用infinitBand与网口进行点点之间的互联
        • 节点之内用Pcie
      • Enabling Flexible network fpga clusters in a heterogenous cloud data cenrer: FPGA17 Toronto Univ: 异构节点
        • 引入了一个MMU - 一层存储管理层
      • 下面是微软三篇,很solid,已经落地了
      • (Microsoft0 - 2014ISCA) Catapult Project - Reconfigurable Fabric for Datacenter
        • 可以说是第一篇用FPGA用到云加速领域
        • 对Bing做ranking的加速
      • (Microsoft1 - 2018ISCA) BrainWave
        • “real-time AI” 一个全栈的system的介绍,对标TPU
      • (Microsoft2 - 2018NSDI) Azure Accelerated
        • SmartNIC
        • SDN
  • 更新了float scale for nics_pytorch
  • stochastic rounding 还是有bug…

2020-04-22

  • 调试Fix框子并且debug(debug费了不少功夫)
    • 添加了Stochastic Rounding和另一种Quantize(非全部定点)
  • 出去扫该

2020-04-21

  • 搞定了最终的Rebuttal
  • debug Fix,开始写Fix的相关doc

2020-04-20

  • 协助凯哥写rebuttal
  • hook的用法加上了
  • 帮飞哥整理continual learning相关的东西
  • (相机调研(wu))

2020-04-19

  • 整理了Fix的代码,跑了一些实验,感觉还需要一定的开发
  • 下午和晚上写Rebuttal

2020-04-18

  • 看了一下Challenge的内容,读一下NAS+Det的文章
  • 看了几篇NAS+Det的文章,感觉核心在于如何设计SS,切入点还需要从小目标的角度下功夫,当前算法应该再比较多的维度有空间

2020-04-17

  • 叛逃到了Zotero
  • 整理了一下最近的文献
  • 写采访稿子
  • 把QQuantization的两篇的阅读给补上

  • 小组会 - Class Imbalance 问题的处理
    • 衡量标准: 类别的最大样本数量/最小数量的
    • 不平衡的问题在Det中尤为明显,因为一张Img当中会出现多个Obj
    • 3中流派: 1. Data-Resampling 2. Cost-Sensitive Learning 3. Hybrid Method(Mixed - Metric/Transfer Learning Combined with the 2 former traditional method)
    • Over/Under-Sampleing: 过采样和欠采样来补偿(对多样本的类别少取,对少样本类别的生成填充)
      • 相对比较老,而且没有太多提升(甚至不会超过Random Sampling的效果)
      • SMOTE(Over-Sampling):认为Random Sample中重复采样了少样本Class(Tail-Class)的样本,导致容易过拟合(特征维度的插值)
      • 将Head欠采样,构成和Tail类大小相匹配的几个Subset,多个子模型AdaBoost
    • Cost-Sensitive Learning
      • 也被称为Re-Weight的方法
      • 有一个Cost Matrix与Confusion Matrix(包含了FP/TP等)对应
        • 对FP等东西需要不同的Cost,比如医疗中FP就比FT代价要小很多
      • 分为两类
        • Hard-Sampling Mining: 更关注容易分类错误的样本(更Care样本)
          • Focal-Loss:(广泛用于One-Stage的Det)在问题中背景和前景不均衡
            • 给Loss加一个调节因子-×(1-p_t)^(N) 置信度大,说明判定的好,就降低它在学习中的Contribution,
            • 存在潜在的问题是对于极端的样本(置信度趋于0)的样本给与了更多的关注-讲道理只要一个threshold就可以解决
          • Gradient Harmonized SSD - 直接抛弃极难的样本
            • 从梯度的观察(对收敛的CNN的梯度进行一个可视化,发现当梯度绝对值很大的时候,并不好)
            • 所以修改了一个矫正,对很大的梯度反而用一个相对小的
        • Class-Balance Loss: 不同类别赋予不同权重(更Care分布)
          • 以样本数量的倒数加权
    • Hybrid
      • Metric Learning: (Margin/Hinge Loss) 思想是让不同的样本更远,相似的样本更近
        • Triplet Learning: 找到最困难的三元组(Anchor/Positive/Negative,找与Anchor最远的Positive和最近的Negative)最小化和Postive和最大化Negative
          • (是否需要最?)
        • Learning Deep Representation for Imbalanced Classification
          • 5元组 - 类内K-means
        • 以上两个都用KNN的分类器做Classifier
        • BBN - Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition
          • 2Stage
          • CE/RS(Re-Sampling)/RW(Re-Weight) - 发现应该将分类器和特征提取器解耦合
      • Transfer-Learning:
        • 用Resampling获得一个平衡的集合做Finetune

  • 小组会 - Survey of Adversarial Learning
    • (这部分只包含了对抗攻击,主要对CV展开)
    • Base 攻击方法:数据污染,模型窃取
    • 起源于Goodfellow的ICLR2014-Intriguing Properties of NN
    • 分类为white-box(Attacker已知网络的架构等信息)和black-box(Attacker只能够知道输出,所以不能用梯度回传的方式来做)
    • 一种最朴素的防御方法 - 直接将对抗样本直接加入到训练之中(其实没有实际解决问题)
      • 另外一种是Gradient-Masking,意思是对Grad-Outlier进行Mask
    • white-box
      • (—-基于Gradient—-)
      • Fast Gradient Sign Method - 不断向梯度变大的方向做扰动(对输入做一个w更新的反向操作,lr的位置替换成一个高斯扰动)
      • Iterative Fast Gradient Sign Method / BIM - 每次扰动的时候迭代,保证每次的扰动是真正有效的
      • ILLCM - (不是一个Targeted的攻击 - 并不指定错分类别)
        • 之前的是从最大置信度的引Grad并且反向更新,而这篇文章是用置信度最小的去正向更新(挺有意思)
      • Random-FGSM - 目的是跳出Gradient-Masking的那个Threshold
      • Deep-Fool:尽可能的寻找一个少的对抗扰动
        • 找到距离最短的决策边界,往那个方向扰动
      • JSMA - 利用网络的SaliencyMap进行攻击
        • 找到对最后输出影响大的像素点进行修改,以此为目的最小化修改像素点的个数
      • (—-基于constrained optimization—-)
      • L-BFGS: 以最小化扰动为目的做一个Constrained optimization(目的是扰动小不被人眼所察觉)
      • HOT/COLD: 一般的方法都是对Loss来进行操作,其利用Logit(且只在意correct class以及target class)
      • CW Attack:
      • VAE Attach: 去攻击VAE
      • Universal Adversarial Perturbation: 对于所有输入都可以实用的同一种对抗方式
      • Adversarial Transformation Network (ATN): 用GAN来生成对抗样本
    • BlackBox
      • 新训练一个网络,去学习出等效的网络,再Follow white-box
      • Camou: 针对Detector的攻击 - 以Score作为依据,由于3D渲染器Carla不可微分,引了一个网路来学这个映射
      • ZOO: zeroth order optimization
      • Natural Adversarial Attack: 主要对于NLP,认为前提是对抗样本一定需要符合正常的分布(不可察觉性),用一个GAN
    • Physical Attack
      • 最朴素的直接打印出来
      • EOT(expectation over transformation) - 在真实世界中有光照等信息,与数字域有明显的区别
      • ShapeShifter - 不用满足人类的不可察觉性,而是希望做的尽量自然

2020-04-16

  • Wandering Day

2020-04-15

  • 整理了NAS文章
  • 读了Adaptive Residue Block文章
  • 换硬盘装系统

2020-04-14

  • 上午下午花了半天时间来整理GCN Survey并且完成了
  • 下午整理了以下Online Learning的Proposal发给了泓神
  • 中午讨论了Surgery
  • 晚上把GNN Survey简单的更新到了post上

  • GNN Survey
      1. Basics for Graph
        • Network
      1. Graph Representational Learning
      1. GNN

2020-04-13

  • 上午有事情
  • Fix了毕设代码的DA部分,主要是Dataloader部分改成了合理的操作
  • 阅读GraphHyperNet,构思合并

2020-04-12

  • 阅读SMASH代码
    • 太痛苦了

2020-04-11

  • 读Hypernet的实现
  • 因为服务器挂了,所以毕设代码更新暂停
  • 讨论了Rebuttal
  • Surgery图
  • 修了梯子

2020-04-10

  • 读HyperNet文章与阅读代码
  • 继续改DSA……Appendix又bug了,还有加一个作者Contribution
  • 重构DA的训练
  • 算法小组会 - GCN Survey
    • Graph Representation Learning - 图表示学习
      • 简单case: Shallow Encoder
      • 输入数据是把所有点给Concat起来
      • 一个相似性函数(Similarity Function) 内积
      • 缺陷
        • Feature not taken into account
        • 参数量大
      • DNN AdjacenMatrix和FeatureConcat起来(每对应的特征和连接在一行)
      • 对于更大数量的图,可以先进行一个图采样,不够就填0
    • GNN - Neighbourhood Aggregation
      • 几层就是聚合几度邻居的信息
      • 对应传统的CNN的Filter滑窗,认为是对Fiter的感受野中的内容做了一个聚合(Aggregation)
      • 聚合方式 - 最直接的方式就是取一个平均
      • 前向的方式
        • Activation(W*X+b)
        • X是前一层的聚合结果
      • 无监督的训练方式 - 随机游走等等
        • 有监督/半监督的就是Gradient-based
    • GCN
      • 修改了Aggregator
      • 将bias去掉了,做了一个逐Neighbour的Normalization
    • GraphSage
      • Aggregator
      • stm是个啥
    • 其他子方向
      • 谱图(Spectral)的思想
        • 将特征的聚合看作一个矩阵乘法,对其进行基于某个基底的分解
        • 基底就对应着一个谱域,相当于在谱域上进行操作,学这个上的变换
        • 相当于在时域和频域设计滤波器
          • 但是空域对于图来说可能更有效
      • 深度问题: 一般1~2层,问题是梯度问题
        • 将历史信息加以保存,用GRU的方法(有一部分遗忘)
      • 子图的Embedding
        • hierarchical?
        • 从点的Embedding到子图的embedding
      • Attention-based Embedding
        • 有一个Multi-head Attention
      • 加速
        • Subampling - (在找邻居的过程中降采样)
        • FastGCN
        • S-GCN (考虑历史问题)
        • AS-GCN
      • Shortcut

2020-04-09

  • 修改Arxiv DSA
  • 毕设中期答辩
    • 需要突出自己的方案与别人的方案的区别
    • 需要突出定点时候运算的分析
  • 重构代码
    • 搭Semi的框子

2020-04-08

  • 有点头疼,半摸半干
  • 准备答辩

2020-04-07

  • 主要时间花在改PPT和Surgery的图
  • 更新了一下AwesomeNAS的文章梳理
  • 更正了DSA的arxiv,Latex杀我

2020-04-06

  • 上午更新并Clean了毕设代码
  • 下午出去了
  • 晚上和妃哥ck了一下PPT-GATES的东西

2020-04-05

  • 创建了awesomeNAS的list,正在添加文件
  • 整理DSA并且挂Arxiv,中间遇到了不少问题
    • Win下的Latex环境配置着实出了一些问题
    • arxiv网站上提交文件的时候,注意可以放压缩包,会自动展开文件结构,但是不支持rar哦
    • 还有就是填MetaINFO的时候abstract不要空行
    • 需要在tex文件开头加上\outputpdf=1
    • 然后还需要用pdflatex编译
    • 还需要加上bibtex编译生成的.bbl文件
  • 注意pdflatex的编译需要好几次
    • 第一次产生main.aux给bibtex用
    • 第二次调用 bibtex.exe main来生成.bbl
    • 接下来需要两次pdflatex调用,才可以让cite正常显示,否则是显示问号

2020-04-04

  • 上午外出
  • 下午一半时间外出,改了GATES文章,阅GATES文章
  • 晚上改报告(改代码)
    • 整理my NAS list(如果有时间的话)

  • GATES
  • 🔑 Key:
    • NAS中的Predictor问题,提供一个更好的Encoder
  • 🎓 Source
    • Arxiv
    • THU EE
  • 🌱 Motivation:
    • Current Encoder model topological information implicitly
    • 原本的gcn之类的encoder方式edges stand for notion of affinity, feature on node
    • View NN as Data-Processing Graph
  • 💊 Methodology:
    • 认为优点在于能够直接Handle Topological isomorphism,以及对Information Processing的建模
  • 📐 Exps:
    • Nb101/201上KD,NatK,PatK
  • 💡 Ideas:
    • 相关文章NAO,用一个Encoder-Decoder来做
    • In the Kendall’s Tau measure, all discordant pairs are treated equally
    • 其他指标(因为kendall tau其实考虑了很多poor arch的相对关系,对于NAS来说用处不大)
      • NatK: predict给出的K个中最好的实际rank
      • PatK: Predictor TopK在Gt TopK中的比例
    • Nb101 - 432k archs - Op on Node
    • Nb201 - 15625 - OP on Edge

2020-04-03

  • 勋神对旷视的CV工作做了一个简单总结
  • 把GATES文章改了一下
  • 花了不少时间改PPT
  • Overcoming Multi-Model Forgetting in One-Shot NAS with DiversityMaximization
    • Motiveation
      • 传统的OneShot方式认为Jointly Optimized Supernet Weights是最优的
      • 但是sequentially train archs with partially-shared weights会导致Catastrophic Forgetting
      • 文章核心把One-ShotNAS看成一个Continual Learning的问题(Constrained Optimzation,learning of current arch should not degrade previous much)
    • Method
      • NSAS(Search-based Architecture Selection) Loss Function
      • Enforce the architectures inheriting weights from the supernet in current step perform better than last step
      • 如果累计的话要求会太高了,所以不是限定全部的Previous Arch,而是选择其中的一个Subset(对于如何选定这个Subset是假定Subset中的Arch要有Diversity-找到最大Diversity的过程就是所为的Novelty Search)
      • 实现约束的方式是加一个Soft Regularization

2020-04-02

  • 达摩院的Learning in the frequency domain
    • 直接从RGB入手其实只考虑了一个部分,其实整个图像采集系统,前景会有一个DCT的encoder做频域压缩
    • 想法是Remove掉decode的时候IDCT的计算(原本是在CPU上做的)
    • 另外在频域可以做一个压缩,可以减少CPU和GPU之间的带宽 (DCT产生的Channel 8x8x3个只选比较有效的)
    • 从一开始DownSample的时候,从裸图片到224x224之间有比较大的信息损失

  • One-Shot Neural Architecture Search via Self-Evaluated Template Network
    • 传统的Evluation慢,Shared Weights的方式选取去Evaluate的组件的时候是Random的,不够Instructive
    • 提出了一个SETN(Self Evaluated Template Network)
      • 一个Evaluator去预测有更低Valid Loss的架构(类似一个Predictor)
      • 一个模板Template网络去Shared Params,包含了所有的Candidate
      • 看上去就是对Shared-weights加了一个Predictor作为Controller,去从一个所谓的Template网络中采样出子架构,Controller来决定怎么采(而不是随机采样)
    • N个Cell
      • 每个Cell中B个Block
      • 每个Block可能是4元组
    • Candidate Network
      • Contain All candidate CNN in search space
      • train stochsticly - uniformly sample 1 candidate and only optimize its params
        • Optimize each with equal possibility
        • I是input是纯随机Sample,F是Function,其中的order指的是再一个集合O中采样,其中f1的index一定要小于f2
      • Evaluator:
        • Encode one CNN candidate as a set of quadruples
        • 从categorical distribution sample出一个choice,用softmax normalized value作为vector值
    • Extra
      • 指出有些Shared-Weights的方法会shared parameter with a learnable distribution of archs
        • 作者认为这样会有bias,因为相对lightweight的model会更快收敛,learnable distribution will bias to these model
        • “the Matthew effect” to refer that some quickly-converged candidates will get more chances to be further optimized in some NAS algorithms

2020-04-01

  • 听了一个ML for EDA的Talk
    • (感觉大部分时间都每太Catch)
    • 几个领域
      • DL for EDA
        • Active Learning
        • 等价于一个Object Det,输入的Synth信息,预测可能出现的Placement的Conjestion点
      • Dl Engine for EDA - 问题抽象,加速Placement问题的求解本身
        • 利用DL的框架 - 将Non-Linear Placement转化为Training
      • Tetsing的问题。
        • 传统上是给一堆Input Pattern,输出是一系列OutputPattern,效率低,所以需要
        • 输入是一个Netlist
  • 继续写很多没有意义的多西……
  • 改PPT,压缩内容
  • 几个小点正好记录下来
    • Pareto Frontier
      • 考虑每个点有多维属性,如果某一个点的所有属性都存在一个点好于其,那么排除该点,最后剩下的点的分布
    • Bessel曲线取法:
      • 取两个共享某个端点的曲线,在其上各取一点,两条线段的比率相同,扫一个比率

2020-03-31

  • 花了不少时间来整理和修改PPT
  • 以及写一些乱七八糟没啥意义的格式问题

2020-03-30

  • 学习了郭哥的Report<高能效神经网络训练加速系统研究>
    • 背景时训练 (1W-2WDollar/kW) - 有限能耗更多性能时数据中心建立的根本 / 另外在端上我们也希望能够训练(通信/隐私)
      • 样本量10E6,推理加更新10E10,迭代次数1E4
    • 目前的网络训练框架:部署工具(通用化平台的优化需要硬件定制) / 软硬件接口
    • 核心时高能效
      • 能量拆解: 数据传输(数据量x访存次数x单次访存能耗),计算能耗以及静态能耗(计算量x计算功耗),静态能耗(静态功耗x时间-这点是为了限制时间)
      • 硬件架构: 定制缓存和并行计算 - 降低访存 / 减少相对于通用计算中冗余部分,减少静态功耗
      • 部署工具: 定制化
      • 软硬件接口: 设计自动化工具,指令集设计
      • 剪枝: 减少计算量和数据量/ 量化:减少单次访存能耗和单次计算能耗
    • 基于FPGA的推理加速器:基于HLS/基于TCL模板的 - 如何动态更新?
      • 基于指令集
        1. 量化:层间差距大,逐层量化(层间需要一个缩放因子,用2的幂次)
        2. 硬件工作:(输入缓存-计算单元-输出缓存的三级流水线)
          • 缓存:
          • 输出通路:
        3. 指令集接口与调度模块
          • 粗粒度指令(LOAD/SAVE/CALC)
          • 在指令中插入依赖标签(dependency flag),便于并行度(解决不太能够提前预测的问题)
          • 可配置的tiling形式,提供编译器的优化空间
          • 指令排布,循环往复,复用每个iter中最后一个iter的数据(1-N,N-1)
          • 传输数据量建模
    • 访存操作相比于计算操作能耗更高,需要降低片外访存
      • 新型存储器见能够提供比SRAM更高效的
      • 利用RRAM进行权重缓存,主要对于访存进行优化
      • RRAM的存储密度更高,但是读写能耗和带宽都不足SRAM(所以我们需要降低读写次数)
      • 本工作中固定了硬件的并行度,探索缓存的设计方案
        • 累加缓存,降低读写次数
        • 单层的数据调度优化,难以利用大的片上缓存(高密度),跨层调度
    • 神经网络训练加速器设计
      • 网络的训练中仍然存在依赖高尾款计算以及准确率降低的问题
      • 稀疏网络训练的工作
      • 训练过程的主要难度在于低位宽 - 梯度下降
        • 随着逐渐收敛,累加器的累加值会逐渐变小
      • 在反向时候,卷积核的变化较大(特征图的大小一直在变化),导致了并行设计困难
      • 前向反向都采用8,梯度保留INT32
      • (片上)对稀疏矩阵转置访问 - 采用二维下标 / (片外)CSC的按列编码,CSB的编码方式(按块)
  • 主要做的是思考了,并且基本完成了毕设中期的PPT

2020-03-29

  • 与汪总的讨论
    • Motivation - SemiNAS
      • 架构确定的过程本身不需要那么多的数据
      • 比如实际问题中
    • 先上来说为啥,而不是从技术上出发
    • 类比可以到更大体量的Unsupervised的数据

2020-03-28

  • Finished the Semi-Supervised Digest
  • 思考和做PPT - HardwareTraining
    1. Challenges (在线训练,而不是Deploy(不清楚rram会不会有这个问题)就是Motivation相关的一些问题)
    • 不知道是PIM所以是不是可以做到一些修正 / 感觉有一些问题也可以不care,因为实际上并不大可能完成所有任务
    • 相比于预先训练好再Apply,有何优势
    • Dataset的储存相对大量-对比于参数量来说
    • 在线的时候Label从哪里来? 2.
    • Plain Training - Sparse-Training
    • Finetune Certain Layer (User/Domain Adaptation) - Transfer to a relative Small Problem
    • Semi-Supervised Learning(Unsupervised Learning)
    • Incremental/Continual Learning/MetaLearning
  • 每个Field的展开点: 问题定义 / 可能的Motivation / 算法的思想(算法对硬件的要求) / 算法本身的成熟程度 /

2020-03-27

  • 找桐姐要FewShot Survey的PPT
  • 需要开做和给PPT了
    • Finished SemiNAS PPT
  • Read some more Semi-Supervised Paper

2020-03-26

  • 组会
      1. 数据增强不变性的ReID
        • ReID任务:给定一个识别的行人图像,在视频中再次识别出该对象
        • 首先经过一个特征提取,
        • 更好的特征:类间不变性,类间差距性
          • 损失函数的设计:最小化变体(经过增强之后的新样本,希望它差距小) – 实现方式KL散度(非负,最小值为0) / Euclidean Distance
          • 可以拓展到多个样本之间,而不是两个样本之间
          • 用在什么地方?
          • Combine是什么方式?
        • 做到了让决策边界更加具有区分度
        • 实际的问题在于有遮挡,侧身等多种情况 – 可以看作数据增强
      1. VO(Visual Odometry)
        • 估计相机在相邻帧之间的移动
        • SLAM的及其他组件: VO / Pr(Place Recog)场景的识别 / LD(Loop Detection) - Relocalization(重定位)
        • End2End VO via Unsupervised Learning
          • 不需要额外的标注,算法快速迁移到新的场景,以及在线训练
          • 利用图像重建作为自监督的信号
          • 有两个网络,一个深度一个位姿态,联合训练。一个输出深度图,一个输入位姿态变化
        • K为一个二维到三维的映射(相机坐标到真实世界坐标) * 防止遮挡,只用一段时间内比较好的重建误差作为监督信号来防止因为遮挡导致重建误差过大不能正常反映问题
  • SysArch小组会
    • SpMM稀疏矩阵乘法的加速
    • PPoPP19: 用CSr的方式先压缩(但是CSR本身并不能预测每一行有多少元素,对实际的分配有问题)
    • HiPC20: 用COO的形式,列,行,元素3个3个的储存,比较Naive
  • 会议纪要Han Cai. 学长

Q: 讨论问题:相关性的问题,OFA的架构的搜索和从头开始训练的相关性问题,对于Benchmark的构建来说,他人测试算法的时候,是否可能会实际找到了好的arch,但是因为OFA本身的原因出了问题; A: 相当于设计的时候直接在OFA的SS里去找,而不是更加General的NAS搜索;可以加入一些Hardware相关的Objective(Latency/Energy Constraint)的情况下,去做搜索 (FLOPs,PeakMemoryConsump,Param) Q: 对Pruning/Quantization的支持: A: Pruning在搜Channel的时候更细粒度,相当于做了Channel Pruning,对Quantization来说还要Sample出Quantization Policy,对应出一个Acc.Table A: APQ的做法,对于Quantization,直接用Quantize之后的模型来测试精度不准,需要用全精度的做对定点后的做一个Transfer去tune

  1. 预计加大OFA的SS,加入支持ResNet,Dilation和Group_Num
  2. 加入Hardware以及Multi-Objective的
  3. 跑一些Baseline,Benchmark一下各种方法的
  4. 最后加入Pruning+Quantization的Joint Optimization

Q: 是否需要找一些额外的硬件平台去做 A: 需要那个Hardware的Profiling,换到其他的硬件需要去搭 Q: 表示我们这边会做一些硬件Profling的接口的工作,DPU/TX2/RK33(ASIC Accel),MobileNet-V3的SE-Module目前还没有比较好的硬件实现方式 Q: 关于MixedPrecision,我们希望去做的Mixed Precision偏Hardware,HAQ是开源的,APQ准备开源 A: 混合精度这边是一个Joint Optimization; 同时搜索模型和架构 Q: 我们主要做的内容? A: 搜集硬件上的LUT,以及之后的Benchmark以及不同的算法的Performance,我们需要做一些复现;最后的quantization的Cost会比较大,后面再说 对于线性性比较强的Hardware(FPGA)按照Block-wise做,GPU和CPU的case,可能需要Train一个Model来Predict Latency Q: LatencyModule是怎么做的 A:是在Mobile上做的,拆解出Block,把每个Block在不同arch上的平均Latency作为当前Block的Latency(ProxylessNAS-目前来说是基于线性假设做的),测试之后在FPGA上也是OK的,但是GPU和CPU上没有太符合线性性。目前的思想是直接搜集PairData,用MLP去预测。 A: (优先) ⭐还需要确定一下各个Hardware所需要的具体Space A: (优先级在Hardware之后) Objective可能还是会加入一个arch的Transferability

  • 汇总SemiNAS的思路
    • 总觉得这个问题是可以做的(就是还没有完全想清楚)
  • 有一篇VAE和GAN的区别的post需要看

2020-03-25

  • 听了一下戴导的图计算的Intro,内容颇多,值得整理,slide保存一份
    • 系统与架构性能提升的3条途径:
      • 工艺的进步
      • 异构多核加速(面对特应用场景进行加速)
      • 新器件(脱离冯诺依曼架构进行探索)
  • 还有一个简单的自监督的post
    • Self-Supervised Learning & Contrastive Learning
    • 有提出新的方法MoCo(Kaiming的MomentumContrastt4Unsupervised)/CMC(Contrastive Multiview Coding)
    • 很多是数据增强的进步:MixMatch MoEx
    • 最基本的Label Smoothing常用
      • 为何不做一个基于类间相关性的Label Smoothing(感觉应该有人已经做过了但是我不知道)
        • 类似利用前几个epoch valid上的错分类的样本作为衡量类间相关性的指标,给出一个较为rough的大类,然后做Smoothing
        • 这个work不work就说明了Label Smoothing带来好处的原因是到底只是数学意义上的这个解空间更加平滑了还是知识意义上的
          • (其实这样就很类似KD了?只是SubOptimalKD)
    • 用到了CutMix(裁剪一部分做mix)+Context Decay(弱化背景)
  • 看了一个post讲了一些和[自监督的领域发展有关的文章(https://zhuanlan.zhihu.com/p/102573476)
    • 最早的ContrastiveLoss,两个力一个拉近一个推远,有理有据
    • 主要还是MoCo,将这个问题作为一个Dictionary Learning的问题一个Momentum(Self-Ensemble)用来Smooth Training和维护dict

2020-03-24

  • 推导了一下Gumble Softmax以及Reparamertization的方式
  • 后来有一些系列的工作没有好好完成,值得反省,摸day,我的

2020-03-23

  • 继续整理最终的GATES实验,新的图已经出来了
  • 继续调研Active Learning

2020-03-22

  • 整理gates实验的材料,还存在的问题
  • 看了少量Active Learning的东西

2020-03-21

  • 阅读整理于讨论Semi+NAS的问题
  • 细读了SemiGAN和NAO
  • 晚上讨论并获得了一个相对有效的办法

2020-03-20

  • 讨论了下阶段工作的安排,会有一些NAS相关的活可能要展开
  • 找到了一个比较好的种子,看起来和原来差不多,gates sample eff实验差不多了
  • 阅读deconv相关的内容
  • 梳理和思考Online Learning的场景

2020-03-19

  • 捋了一下主要Conv block的设计
  • 组会讲了DSA的工作
  • 下午brainstorm 了新的思路和梳理了目前NAS
    • SemiSupervised+NAS需要做一个新的思考
    • TransNAS好像不太有空间
  • 继续调试实验,de retrain every stage的bug
    • 有了少数进展

2020-03-18

  • 准备组会PPT
  • 继续推进实验…还是没有完成的样子
  • 整理TransNAS和FewShotNAS

2020-03-17

  • 依旧还是在调gates的实验
  • 又了一些进展推了一些开发
    • 当需要某个类的构造方法但是不在这一层分装的时候的Trick self._XXX_cls = XXX.XXX.__class__ self._XXX_cls(init_a, init_b)
  • 对于Semi-supervised和NAS的联系的思考

2020-03-12 ~ 2020-03-16

  • 我去居然已经有这么多天没有记录了……
  • 主要时间花在更新gates的实验
  • 还有做了一个PPT来讲DSA
  • 然后还有在更新NAS Reading List,调研Few Shot NAS
  • 以及在做一些单页手写式的Digest的尝试
    • MCMC - 更新在stack当中

2020-03-11

  • 读一下gates附录
  • 发现有之前的实验有一些cfg上的bug需要重跑
  • 继续Survey TransNAS

2020-03-10

  • 继续修改GATES实验
  • 与龙老师交流,听取大佬讲课
  • 读了几篇Transferable NAS的文章

2020-03-09

  • ReRun GATES Exp
  • 读了一些NAS Paper
  • 修改并提交了DSA Supp

2020-03-08

  • 整理DSA素材
    • 基本完成,还需要
    • res20 33% 多跑几个种子
    • 把ckpt中的epoch给pop了

2020-03-08

  • NAS Surgery 分享
    • Sample Efficient NAS bt Learning Action Space
      • 重点不在Encoder
      • 二分Search Space,像是一个MultiStage,MoneteCarlo树搜索(MCTS
    • NAO做weightsharing和predictor
      • 经目前的实验的predictor没有shared weights本身的Correlation更高
    • NB101 的实验结果是更接近的架构会有更好的性能
      • predictor可以看作是对架构空间的一个插值
  • Fewshot NAS Survey

2020-03-07

  • 整理awnas的log
  • 准备开始起admm
    • 再加上vgg和res8的结果
  • 检查别人是不是也是选的最后几个epoch的最大值

2020-03-06

  • 现在是2020-03-06-03:25 文章交了,总结一下几点心得吧
    • 现在自己写文章知道这句话应该写什么但是还是表达不好…
    • grammarly check
      • 一般最后grammarly查出来的: 1. 三单 2. the/a 3. 极少的搭配
      • the/a 加了没有check
      • 在提交之前统一一下一些东西的用法
    • margin是个小bitch,我还是不会调
    • 相对minor的点如果会引起误解建议省去,还不大会出现文章写不满,只有压不下来
    • 早点找没有参与过工作的,没有领域背景的同志看文章,会有新的发现(啊你method看不懂啊)
    • 不要吝啬强调,文章的重点就paraphrase反复的说
    • 改图的一些心得
      • 对称是好文明,不仅是位置对称,还有字体字号的对应
      • 配色,这个倒是可以展开讲,目前我的体会是,饱和度拉低,色系倒是可以稍微跨越一些
      • 字体大小放大!
      • 实际放到文中的图里的字大小,和ppt里字大小不完全相关联,有时候需要把图压扁或者拉长才是真正关键的,因为论文格式里页宽就这么多
  • 下午做了两个ppt,过了几篇gates相关的文章
  • 需要把admm调一下和整理做一下

2020-03-03~2020-03-05

  • 改文章,改图
  • 做了一个尝试,中间过程各层的敏感性变化不足,好像gg了
  • 整理checkpoint

  • 普遍字小,淡的太淡
  • ABCD这边加上对topo group的介绍
  • 突出强调我们的不一样,和优势,直接把例子指出来把

  • DSA文章里需要tg加一个例子在heat图里也有
  • DSA overview需要加文字!
  • DSA需要讲一下admm为何块,因为alpha更新相对不频繁

  • 看两篇关于图的post
  • 改文章的一些点
    • contribution第二点少一个s (👌)
    • contribution最后一个加数据 (👌)
    • rw第一段缩、(👌)
    • method第一段有一个partial符号 (👌)
    • method的第一句需要扩写
      • allocates sparsity via optimizing keep ratio A
      • (第一句我加的比较长,感觉caption大家一般注意不那么到)
    • method的DP需要改得更容易让人看懂
      • 用文字展开公式(比如说expect diff那边)

2020-02-29 ~ 2020-03-02

  • 关于文章,最后需要check layer/component的用法!
    • 还有budget pruning
    • 还有pretrain
    • prune flow / process
    • search/searching
  • intro的时候需不需要说一下structural pruning
  • 属性的第一点放在上面作为总览
  • intro中加一个analysis的ref
  • pfs的特性为何能够做到需不需要分析,感觉在前面应该不大用分析,到了最后分析也可
  • DP的图要改,不够清楚
  • Fig. 和Sec.
  • from scratch加紧contribution

  • 表要改,加粗,换列
  • 仔细检查的图
  • 表里改成勾和空
  • 需要有一个GCN,而我们处理的是一个GCN
  • DSA fig2需要改一下

  • 花了一整天时间画图

2020-02-28

  • ML的一个foundation是train和val分布iid,但是DA本身不能满足这一点
  • DA的方法,本身可能和Semi-supervised的setting有一些类似
  • H-deltaH-divergence
    • 源域上的训练误差(Train Loss),第二项(Discrepancy: 类似2-player game)表示数据(Feature)分布的差异,lambda表示adapbility(label关于数据的条件分布的差异)其意义为可适应性
    • 第三项的值相对较小,所以之前大家认为可以忽略
    • 可适配性的定义
      • 将2个domain合起来,两个域上test loss最小值的和
      • 两个域如果Label的差异很大,那么lambda就会变大
  • DANN
  • CDAN(NIPS 2018)针对联合分布的适配
    • 将数据distribution和特征distribution
    • 将XY的tensor product分解为
    • Entropy-Conditioning
      • entropy本身是表示置信度的不确定度
      • 类似attention
      • 对不确定度大的赋予更大的权重,能够改进第三项
  • Representation-free DA
    • 把feature固定住,第二项就无法控制了,转而
    • 利用对抗样本
      • 基于随机梯度上升,可以从NN中相对脆弱的部分中获得一张像素类似的很distinct的图
      • 通过生成对抗样本,充斥在两个domain之间,把它填补上
      • 有一个通过鼓励一致的项,VAT
  • Transferability for NN representation
    • finetuning: 把大数据集上的训练结果,作为小数据集的初始化
    • 一个可解释性的问题了
    • 认为transfer的过程能够让泛化性能更好(Test Error - Train Error)和模型的复杂度紧密相关
      • 而finetune应该是让复杂度变小了
      • 参数的距离几乎和模型复杂度成正比(开始的weight和最后的weight模长的范数,可以认为是复杂度的度量,也就是看模型活动了多远,也就是模型容量)
    • 实验结果表明在imagenet上预训练,减小了weight移动的距离
      • 学界共识是相对平坦的局部极小值更接近最小值,而相对陡峭的
      • 一个example,黑色的是finetune的
      • 利用Hessian矩阵的特征值分解可以衡量曲面的“平坦”程度
    • 每层的重要性(Layer Importance)
      • 度量方式是其他层的参数固定住,换参数
      • finetune和初始化训练
      • imagenet的中间层变化大
        • 每个block的第一个residue layer的重要性最强
      • 更高层次的feature,可迁移性不如浅层的(老),而
      • finetune中固定第一层和最后一层
      • Lipschitiz值,梯度的模值
  • 主流算法,对抗式的特征适配

2020-02-27

  • todo
  • 文字调整做了
  • 我们的方法,折线图里是不是需要强调一下?
  • 要更新的结果在表里更新了
  • exp setup部分更新imagenet
  • 需要在TG里加一个部分说明fig11是一个exp
  • 减少空间:
    • properties换conclusion (meta-pruning)
    • RW-NAS 删除
    • method每个section讲了啥,删
  • DSA文章修改
    • 摘要
      • 插一个continuous进去对比…
      • 第三点是不是删掉?
      • 加了最后一句表示作用(明显变好怎么表示…)
    • intro (看起来有点太长)
      • 加这一段,前半段说别人怎样,后半段说我们的efficient
        • 改图,放在中间一段里面说明别人是3-Stage,我们是1-Stage,省掉了很多东西
        • 下面一段的sensitivity as gradient merge进来
      • 特性和contribution还是只留一个…
        • 只写contribution然后把DSA放第一个
        • 感觉特性有点重点太多,就在表里提一嘴?放后面
    • Analysis里定量分析一下
      • 3个stage各要花多少时间(分开对比)
        • 300 epoch
        • searching
        • 150 epoch tune
      • 我们整个流程时间和第一个stage类似
  • 需要做的工作
    • 首先梳理量化别的方法到底需要多久的搜索时间
    • 改图,把第一个flow chart丰富,我们的方法放到method那边去
    • 把intro中加入这个scratch的分析
    • related work中的NAS?
  • 需要参考的文章
    • autocompress
    • amc
    • metapruning
    • pruning from scratch
    • dynamic pruning with feedback

2020-02-26

  • 画图调实验的一整天
  • 终于几乎把gates的sample eff实验做完了
  • 开始构思如何修改dsa

2020-02-25

  • 又是动了一天把一个sample eff的图搞定了,但是还是有问题
    • 需要加一个统一用evolutionary的图
  • 还需要一个和baseline方法比的boxplot
    • 需要反复跑很长的epoch
  • 还需要一个N的ablation的图
    • 是用acc还是用epochs
    • (看)

2020-02-24

  • 需要做的事情
    1. 改昨天晚上画图的各种弱智问题: (👌) 1.1 rank+1 改代码+表 1.2 改回原先的两份图 1.3 两个图统一一下风格(改原来那个把) 1.4 kendall’s tau
    2. 改好bug
    3. 整理np的一些用法
    4. 看一个dual lagarange的Wiki
  • ssh -p 42222 -R 12222:localhost:<本地ipynb端口> 101.6.64.67\

  • debug-看结果-以及继续调sample eff
  • 需要拿出一个箱图(不管是找到的epoch数,还是同样step找到的最好acc)
    • 还需要拿出一个acc的曲线图
  • 有一个表示extrapolation的图
    • inner sample数目太大太小都不好

2020-02-23

  • scatter
  • Precision at k: 预测的前k个有多少个在真实的前k个当中
    • random sample N个,取alpha*N个,
  • N at K: 预测的前k个里最好的K个,其实是第几名 (Top10或者是100个里)
    • min N at K
    • max K at N

  • 在摘要和前面的图强调加快速度
  • 在两个图内把需要跑多少次给标出来

2020-02-22

  • SA又出bug了… (👌)
    • 搞了许久,又是代码的弱智错误
    • 以后出现不理解的错误还是早点看代码…
    • 📌该打印的东西全部打印出来,去debug
  • 需要搞清楚cfg的sample100是怎么搞的 (👌)
    • 就是inner samples变大
    • 然后单纯的SA controller是steps来表示
  • 目前比较好的一个结果 (👌)
    • awnas search examples/nasbench/gates/nasbench-101_gates_enum_100.yaml --train-dir ./tmp_ztc/test/1 --save-every 100 --seed 1234 --gpu 7
  • 改cfg (👌)
  • 读intro (👌)
    • 读caption
  • hai

2020-02-21

  • 主要做了三件事
    • 被Evo和SA的bug卡住,目前还没有解决
      • evo的被解决了,是因为存mutation结果的时候用的还是老的matrix,被这个很低级的bug卡了一晚上
      • 训诫!一定要细看,再简单的地方都可能出错📌
    • 算是调好了DSA的from scratch部分的实验
    • 写了一个画图脚本,熟悉了一下re

2020-02-20

  • SysArch组小组会
    • Rstream - 单机的,基于磁盘的,进行图挖掘的一个系统
  • 需要搞清楚的问题
    1. 辨析一下几个流程(check一下具体是怎么做的) 1.1) 离散搜索的过程,对应着SA和Evo
      • SA是先随机取一个点,然后在它的邻域(做一个random pertubation)产生一个新点(严格来说可以是N个,但是一般是1个),做一次val,如果新点的acc大于老的,那么固定取新的,如果小于,以一定概率取新的,这个概率随着时间推进而不断变小。
      • Evo则是一开始先维持一个population(比如说大小为100)
    2. avoid的做法 - 就是但凡evaluator evaluate过的模块都不让controller最后采出来,但是inner controller可以采到
      • 这样就会出现既然inner controller是不知道自己采集的sample是否经过valid的,就可能采不足,如果出现了这样的情况,说明inner controller陷入了一个局部,所以我们就给它reinit(SA从一个新的随机点开始,Evo重新建立一个population)
      • avoid了之后应该保持最高的best acc
    3. 目前的ratio*N的问题 - 防止enum陷入完全训练不动的情况
  • 需要手算一下inner sample
  • reward会下降的问题
    • 因为controller采的时候用的valid acc可能是一次训练的,但是最后调用test的可能是另外一次训练的
  • valid best 95.05
  • 现在的cfg需要测一测是不是确实低了
    • local的cfg都不要用
  • new_nasbench-101_gates_enumeratess_sample100.yaml
    • 相当于random sample更多个
    • ratio=100; 200个,20000个
    • ratio=100; 采100次

2020-02-19

  • 调了一上午一个很神奇的bug…结果是别的地方出错了
  • awnas search examples/nasbench/nasbench-101_gates_sa.yaml --train-dir ./ztc_tmp --save-every 1
    • AWNAS_TEST_NASBENCH pytest -x -s ./tests/test_nasbench.py
  • LaNAS的代码 (还没有开源)
  • 新的实验,follow BOGCN
  • sampling ratio
    • 随机sample 200*(N)个架构过predictor,
    • 加一个random的arg,给indice shuffle一下
  • DSA-analysis
    1. Efficiency Analysis
    2. CIFAR10 - from scratch warmup & from pretrain
    3. 加imgnet的语言分析和散点
    4. (现有的) allocation分布

      • Topological grouping (x)
      • 正交性是只讲
  • 开发
    • 加一个random (👌)
    • 加一个解析画图脚本
    • 加一个print best
      • 在controller的step中存储下所有的需要被保存的架构
      • 然后在sample中的eval mode中加入一个打印最佳
  • 调实验
    1. 都跑predictor-based的gates换gcn和mlp,确定确实更好
    2. 调gates的enum的enum的ratio
    3. 最后把SA,Evo作为baseline都按照gates的最好方案跑一下

2020-02-18

  • 给awnas加上了一个enumerate功能待check
  • 整理了DSA-imgent的结果和表格加了top5统计
  • precision at k
    • 预测的前k个有多少个在真实的前k个
    • 真实的前k个
  • btc - Built-In-Component

2020-02-17

  • 读代码
    • 搞清楚流程
      1. trainer是一个simple trainer对象,需要走5(cfg: trainer-epoch)个epoch,一个epoch对应一个stage
      2. 每个epoch包含了200(cfg: trainer-controller_samples)个iter,表示controller会采样出200个架构
      3. 每个iter中调用_controller_update,这个函数中包括了rollouts=controller.sample() 3.1 在这个sample过程中,第一次predictor还没有经过训练,不经过inner_controller直接从search space(Nasbench)中随机sample 3.2 这之后,predictor经过了第一轮的训练,需要采用inner_controller(基于predictor所给出的结果)来采样
      4. evaluator去evaluate这个200个rollout 4.1 这里调用了evaluator.update(),但是在这个case里是None
      5. controller.step() 5.1 内含了train_predictor(),调用了train_epoch,输入是架构,label是evaluator的输出,在这个case里是nasbench的查表
      6. 进入下一次iter
  • 需要问的问题
    • 现在应该是卡在那个while 1里面,就是跑第二个epoch,inner_controller开始sample的时候 /
    • trainer的derive sample=5(?)
    • controller-steps? 训predictor一轮?
    • predictor train不用调?
    • controller-cfg
      • inner_samples_n: 1 (how many archs inner controler to sample every step) - 对应num_iter
      • inner_samples: 1 (每个inner step中sample多少个)
      • inner_steps: 50 (在num iter的loop内部)
      • inner_sample
    • inner controller走50个inner steps,每次sample出1(inner_samples)个架构,在这些架构中选inner_sample_n个架构,做为一个sampler的iteration的结果
    • test是从derive出的数目中进行测试的
    • 由于nasbench是对每个架构训练了3次,而api中的query是直接sample的是sample出的某一次,目前来说test acc是保证采的mean,然而val是max
  • 需要fix
    • enumerate全部search space过一遍然后直接选topk
      • 一种很暴力的exploration,直接选topk
    • best rollout不给上次出现过的,但是新的
    • 设计新的multistage

2020-02-16

  • 整理数据,改表改图
  • 配了latex环境

  • 晚上开会了解aw_nas
    • controller里面含了一个inner controller
    • inner sample N
      • inner step - inner controllerd多少个step
      • inner sample - 默认为1
    • simple.py
    • controller_update
    • cfg写在init里
    • i_inner是inner controller走一步,sample,
      • inner sample n,inner controller走完一轮,
      • inner controller一轮就是大流程中的一个iter,第6行采多少个,就要iter走多少个
      • decided就是比如走到第5个step,有4个已经在inner controller确定需要给evaluator的
    • ReNAS - 1 stage evolutionary搜索
      • random sample是一种
    • 关键的todo
      • 利用multistage data
        • 目前多个stage是平一起的
        • 在step函数里
      • 全部forward一遍的

2020-02-15

  • NAS Bench不属于Cell-based
    • Nasbench 101 和 201的操作不同,聚合在op前后,实际操作不同 F(a)+F(b) = F(a+b)
    • Exploration & Exploitation 问题
  • 目前的multi-stage的问题
    • exploration的方法
    • 如何去从multi-stage选
      • finetune?
      • 按层选,第一个stage的选200个,再在这个里面用stage的选100
  • 实验 (讨论)
    1. NASbench101 & 201 kendal tau

    2. single-stage的更多指标,对于predictor的衡量
      • N at Rank,Evo
    3. NAS 101/102 -Multi-stage衡量 - (Sample efficiency)
      • 有一些内部的东西需要去调
  • aw_nas实验
    • 首先是把实验跑起来(话说本来是应该加虚拟连接的但是我好像直接复制过来了) (👌)
      • 原来git clone可以clone目录… 然后再pip install .
    • conda env (👌)
    • 读代码 + NASBench201
      • pair-margin的意义是当pair不满足的时候,保证loss超过一个margin的增加
      • NASBench201
        • 设计了一个相对小的Cell-based的search space,把15,000个网络架构都训练了一遍
      • Kendal tau
        • 输入两个集合,从中pair-wise取值,当完全相关的时候为1
    • 画两个图 (👌)
      • heatmap的配色
  • 需要问的东西
    1. 输入数据是这样的吗?(描述一个cell) (👌)
    2. default dict的问题
    3. train_ratio只有0.1?

2020-02-14

  • [] - 对照着metapruning改热力图结果
    • 画了一版新的图,还需要改
  • 看了一下rank,好像不是很好写

2020-02-13

  • 整理调试结果,跑新的数据 (👌)
  • 等eva8这边跑完之后,在上面改写amc的方式 (现在看起来好像可以搁置了)
  • 改写文章
    1. 我感觉可以调整一下段落顺序,把budget pruning的关键问题并到上一段,然后再写regularization不能做到,过渡到iterative flow 是majority (👌)
    2. stage这个我换成outer loop和图对应上? (👌)
    3. 说明一下discrete searching的 (👌)
    4. 图2确实是在第四部分第一次提,要么我先加一句 “fig2 is illustrated in Sec4.1” (👌)
    5. 特点部分精简一下吧,有些contribution里没有的东西加到contribution里
  • 补图,改图 (👌)
    • 上传DP的图,更新caption (👌)

2020-02-12

  • 上午调试昨晚出的结果,res18到了66
  • 上午还看了一些GNN的基础知识
  • 下午改图画图,加内容
  • 整理内容,看代码实现
    • AMC的流程是先sample出channel数目,reconstruct,然后load是原模型
    • finetune 时候是256, lr - 0.05

2020-02-08 ~ 2020-02-11

  • 整理resnet imagenet baseline (👌)
  • lr相关的一系列内容 (👌)
    • batch大了之后lr怎么调 Google文章
      • 文章说的是不要做lr decay,而是逐渐增大bs(好了我的显存不够你可以闭嘴了)
      • Decaying the learning rate is simulated annealing
    • prune的时候到底要不要多调一倍的时间,pfs中 (👌)

2020-02-08 ~ 2020-02-10

  • 回到DSA
    • 过一遍文字 (👌)
      • 公式1/2为啥是一样的
      • Mtehod中bi-level opt是什么
    • 改DP的图 (👌)
    • 回顾imagenet (👌)
      • 加mob
    • 记录服务器 (👌)
    • 改related works(👌)
    • recoverablity定义(👌)
    • 改图Workflow
      • 体现searching加速
      • 体现senstivity analysis融入 (👌)
      • budget model保留 (👌)
      • 强调train once (👌)
      • topological grouping放左边,不要显得每次都要跑 (👌)
    • 改图DP
      • B1,B2点出来 (👌)
    • dis-data-parallel (👌)
      • 之后找个时间把机理搞一下…
  • CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py cfgs/prune/res18/imgnet/res18_plan1_scratch.yaml –save ./tmp_ztc/6 –gpu 0,1,2,3,4,5,6,7 –resume scripts/load_res/res18_pretrained.t7 –pretrain
  • CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python -m torch.distributed.launch –nproc_per_node 8 main.py cfgs/prune/res18/imgnet/res18_finetune.yaml –save ./tmp_ztc/finetune_resnet –gpu 0,1,2,3,4,5,6,7 –resume scripts/load_res/res18_pretrained.t7 –pretrain –distributed
  • TRUE: After Epoch 37, 53.706 % (1.947993e+09/3.627123e+09) of FLOPs Remains; [1.000, 0.656, 0.594, 0.883, 0.672, 0.594, 1.000, 0.582, 0.516, 0.436, 0.561, 0.471] EXPECTED: After Epoch 37, 49.123 % (1.781739e+09/3.627123e+09) of FLOPs (Expected) Remains; [0.847, 0.653, 0.575, 0.889, 0.672, 0.596, 0.943, 0.582, 0.520, 0.435, 0.558, 0.472]

  • 今天配置了两台服务器重复了两次,记录一下流程
    1. 修改ssh的config,并且更新备份
    2. ssh-copy-id 到新的服务器以及proxy,达成免密码登录
    3. 复制wsl备份的eva的bashrc
    4. 从wsl根目录复制miniconda以及global.tar.gz,还有.tmux.conf到服务器
    5. 安装miniconda
    6. 执行/opt…deviceQeury/ 激活nvidia
    7. 安装torch(1.3.1)和torchvision(0.4.2)以及ipython和pillow(0.6.1)
    8. 先从wsl的bak中复制source.list过去apt-update一下,然后安装cmake,gcc,g++
    9. 配置vim
    10. 配置git
  • 改文章
    • 对于differentiable的初衷需要一个更明确简单的说法 (👌)
      • 得加个一两句让DP更加有reason,简单加一个by (👌)
    • workflow放到最前面 (👌)
    • budget prune的必要性 (…)
    • 比时间,引用,定量
    • prune from scratch (👌)
    • 加载analysis
      1. 先看搜索时间,就比他们快(是最好)(当然可以再强调一句效果也比aif更好)
      2. 咱们方法也可以prune from scratch,而且和pretrain结果差不多,如果分析折合时间更好?
  • 需要加的内容
    • 改intro,逻辑反过来 (👌)

2020-02-07

  • 继续改了一天文章
  • 终于投好了
  • 准备开始新的工作…

2020-02-05

  • 画了一天的图 + 改文章

2020-02-05

  • 继续读文章改文章
  • 写了一个计算的脚本,抄袭了一下飞哥的Hook用法
    • 在get_op.py当中
  • 需要继续读NAS文章(后来没有读)
  • 可能有时间自己买一个V2ray的梯子作为备用-搞好了
  • 需要学习一个Grammarly怎么用(还是按照复制进去做把)

2020-02-04

  • 改文章(我太弱了)
  • 发掘了windows terminal的配置带劲

2020-02-03

  • 画了DP的图
  • 看了几篇NAS的文章
  • quantize-aware training,具体化的内容

2020-02-02

  • 写fixed point training的文章
  • 晚上和汪总讨论GATES文章

2020-02-01

  • Topology grouping check
    • PFEC做了
    • Rethink shortcut不剪
  • train-val split 补充写一下
  • 随机种子
  • analysis里加topo grouping的
  • Basis for guiding pruning with task loss gradient 缩句
    • 和前面呼应起来
  • TG图改
  • 加Heatmap

  • DP的流程图-改
  • related work改,是不是可以把思路写在intro里

2020-1-31

  • 补充experiment文字,以及analysis文件
  • 对思路上有一些新的想法,补充到了related work
    • 主要逻辑是抽象为两个问题,我们是解决第二个问题,和第一个问题可以联结
    • filter importance
      • 它本身的重要性由自身的参数决定
      • 以及它所处的位置
    • 有intra-layer的importance还有layer-wise importance
  • 很多地方的表述不是很好,还需要修改
  • Workflow里面感觉需要加一个train once

2020-1-30

  • 整理最后一波实验数据
  • 收集数据做表格,整理图

2020-1-29

  • 理表格跑实验
  • 本子的一个小部分
  • DP的图准备
  • 整理之前的图
    • 敏感度分析

2020-1-28

  • 继续跑实验,扫baseline
  • 调我们的方法
    • 对照FPGM看它的层间PruneRatio分布
    • 看FPGM和TNAS的代码有没有用什么骚技巧
  • 发现了别人这个换随机种子,在cifar10上差了一个点
  • 整理Online Learning的素材

  • 起个ray 75% 50% 33% 都跑一下
    • pretrain (tick)

2020-1-27

  • 重新回来更新日记·
  • 跑了两个实验,别的没有太多新的进展

2020-1-20 ~ 2020-1-26

  • 过年,继续调整res20以及res56上的性能(目前和SOTA还有一定的距离)
  • 初始学习matplotlib

2020-01-19

  • 继续扫点跑实验
  • 熟悉了matplotlib
  • 把post-train加上去

2020-01-18

  • 回家也要干活啊…
  • DAC 2020 Review
  • Res18 从pretrain开始扫
  • Grad的图画一下
  • HeatMap画一下
  • 看NAS的文章
    • 还没有完成

2019-01-14~2020-01-17

  • 各种调实验,各种文章

2020-01-13

  • ASPDAC

  • 准备imagenet,调试bug


2020-01-09 ~ 2020-01-12

  • 调代码,写文章,太忙了,没有记录
  • 代码能力还是欠缺啊,需要好好补上

2020-01-08

  • 考了软件无线电,本科期间的考试over
    • 准备开一个整理复习资料的repo,明早做一下把
  • 整理以及跑Cifar10的Res18实验

2020-01-07

  • 调好了新的bug
  • 复习软件无线电

2020-01-06

  • 复习遥测
  • 跑实验,发现新的bug

2020-01-05

  • 上午花了很久调好了第一个bug是因为根号没加eps
  • 下午复习遥测

2020-01-04

  • Ray的使用(怎么做实验)
    • 写在Eva里面把
  • 晚上遇到了一个很神奇的问题

2020-1-3

  • 上午的尝试做了很多无用功,很难
  • 更新代码morphnet,晚上开始搭建实验环境

2020-1-2

  • 组会
    • FPGA Virtualization
      • Key Points
        • 用户隔离度
        • 负载
      • FPGA Sharing On Cloud
        • MultiChip 1 Task
        • 1 FPGA 1 Task
        • Share 1 FPGA MultiTask
          • TDM
          • LogicDM
      • NN Accel 卡住的其实是DDR Reading
        • 更好的数据利用via More Tasks
        • DDR & DSP
      • 这篇文章用了空分复用
        • 可以达到更好的性能隔离
      • Low Overhead Configuration
        • 在编译器中相对静态的固定,作为静态编译
  • Few-Shot Learning Survey

  • Problem Formulation
    • Exmaple: N-Class K-shot per class
    • Core Problem:
      • ML in Empirical-Risk-Minimization
      • 当样本数目少的时候,用了均值代替期望,fewshot的时候两者差异大
  • Related Problems
    • Meta-Learning / Metric Learning
      • Meta-Teacher:
        • MAML-学习一个好的初始化
        • Meta-Learner,不用SGD
    • Zero-Shot Learning
      • 依赖Transfer,利用多模态的信息
    • DA
      • 作为FewShot的任务
  • Taxonomy
    • Data
      • Augment Data
      • Semi-Supervised: Label Propogation
      • GAN : Generate new Data
      • Intro-Class Varation - Pair-2-Pair
      • Semantic Information(like zero-shot)
      • 从两个类别分别在Feature空间取出两tuple,若他们距离接近,就认为他们是同一种Transform,通过一个MLP学习这种Tansform
    • Model
      • Constaint By Prior
      • 限制搜索空间
      • Metric Learning
        • Learn to Embed and compare
        • Learn A Space, where intra-Class distance bigger, in-class distance smaller
          • [-2] Layer as the space
      • Siamese Net 2015
        • 2 Network, Same Weight, 2 Input, Make Representation coming from same network nearer, vice versa
      • Matching Net
        • Think The Backbone should condition at The K-Shot
          • Bring The K-Shot into Backbone Training
          • People often only finetune the final classifier, cause use it to train the whole network will collapse
          • Use bi-LSTM and Attention to adjust the whole network
      • ProtoNet
    • Algo (Meta-Learning)
      • 通过改变优化方法,来更好的得结果
      • Meta-Learning
        • Learn a better initialization
        • Learn a better optimizer
      • MAML(Model-Agnoistic Meta-Learning for fast adaptation)
      • LSTM-based Meta-Learner
        • Epside Training : Like TV Series
          • IN RL: Train For Some Time, Save, Then Train
          • IN MAML: Train on train set for a few steps, Then Test on Valid to Get Guidance

2020-1-1

  • 更新到新一年拉!
  • 上午下午都在养病,新年新气象
  • 晚上细理了Baseline,看了Netadapt的源码…我感觉它DidNothing,但是可以用这个开源代码过来直接做测试
  • 发现了LeGR框架中对ShortCut有特殊的操作技巧
    • 需要好好看一下
  • 晚上准备开始复习软无

2019-12-31

  • 上午摸鱼+做PPT
  • 下午讨论整理文章,做PPT,确定创新点
  • 晚上摸鱼,准备过年,养病

2019-12-30

  • 上午复习,下午考试
  • 晚上需要做几件事情:
    • 洗澡洗衣服
    • 整理表格,PPT明早做吧
      • 还需要找适合我们的一些Baseline
      • 然后PPT
    • 写周报
    • 帮皇帝写傻逼经验

2019-12-29

  • 上午整理资料+睡觉狗命 * 下午需要赶快复习无线电导航!
    • 还多复习了一点遥测遥感
  • 继续早睡觉狗命

2019-12-28

  • 上午写报告 * 下午更新了Lasso等一部分代码
    • 以后clean的代码需要好好记录一下
  • 又复发了…

2019-12-27

  • 上午Moday
  • 下午更新代码,改了一部分 * 还准备把报告也写了

2019-12-26

  • 生病,Moday
  • 晚上爬起来把Mathematica用实验实现了一下
    • 报告DDL周日

2019-12-25

  • 上午到下午看代码,改代码
  • 花了一些时间调网络和vim的bug
  • push上去的代码里有个typo clmapp – 改好了
  • 需要请教的
    • ipdb怎么换行 – from IPython import embed; embed()
    • list append这种丑陋的东西怎么换掉 – List Comprehensino
    • pytorch – 忘了自己想要问啥
    • 目录保持一致性(有没有/忘记了给) – os.path.join

2019-12-24

  • 上午上课
  • 下午本科生开题交流,讨论NAS
  • 晚上看BAR,对比文章,找Baseline

2019-12-23

  • 上午捋了一下Mathematica,稍微理解了一下,读了一篇文章
  • 下午上课
  • 晚上Prune项目整理Baseline,以及Mathematica可视化
    • 完成了

2019-12-22

  • 核心问题
    • 我们希望用Clf Loss来指导PruneRatio的变化(可导过去),以一定概率采每个Channel,且希望其求和的方差为PruneRaito*xChannel
      • 需要让PruneRatio可导
  • 讨论和给出了一个看上去尚可的方案
  • 在做数学分析的时候发现需要好好整一下Mathematica

2019-12-21

  • 上午摸鱼
  • 下午review了一下和我们关系最近的几篇文章
  • 晚上继续思考灵魂问题…

2019-12-20

  • 简单修改了一下昨天写的层,添加了param以及Channel Prune的方法
  • 浏览ICLR2020的文章
    • 反思一下自己又有点走马观花了,没有一个很好很完善的记录,做一些弥补,需要浪费一些时间了

    • 后来补充了整理

  • 周五汇报工作
  • 感觉可能还有几个小问题 (以后的一些对Idea的问题也可以留在)
      1. 感觉还是不太能合理的说明对Ratio求导的需求,比如说训练出一个合适的PruneRatio和直接训练出一个Mask(AdaptivePrune),我觉得甚至后者可能更合理?还需要思考
        • 面向有明确budget的场合,但是比如说用Saliency的方法配合上ADMM是否可以也解决这样的问题?
      1. 不知道能不能work * 灵魂的问题
      1. 和Lottery连接的话?或许可以指导iterative获得lottery?(最朴素的找Lottery也是按照pruneratio去剪的)
        • 感觉关联也没有那么大,不知道是不是要蹭
      1. 现在我们的workflow是不是还是可受多种budget指导(不止是FLOPs)
        • 我理解现在我们做constraint只有ADMM?(理论上确实还是可限制在限定范围之内进行调整)-我们需要找一种ADMM的合理建模
        • 现在这种Flow的话,直接指导PruneRatio变化的只有Acc,是否是忽略了一个很直观的先验(就是Latency和energy对PruneRatio的正相关)
  • 关于Lottery
    • 涉及这个Task的文章大多数都比较empirical的做一些analysis(比如泛化,应用到其他领域)
    • 它和我们的一个最大的不同就是这个sparsity是unstructured的
    • 由于这篇文章导致一些文章研究怎么在Train之前就直接获得这些子结构

2019-12-19

  • 上午继续看了一些ADMM相关的内容,和check了一下ICLR2020目前的情况
  • 下午回校,晚上算法组小组会听了nian松哥的非常solid的工作,牛逼
  • 晚上准备给写那个层开个头,另外和飞哥讨论和讲了一下目前的思路,感觉还有点可行

2019-12-18

  • 上午接待了一个老师,吹了一吹牛逼
  • 下午做了一些文献调研,对GM做了一些理解
  • 晚上和妃哥讨论,基本毙掉了第一个方案,确定采取第二个方案

2019-12-17

  • 小组会 - 低比特训练
    • 用的方式: 用了一个Scale(浮点数)和一个Offset
    • 以及Stochatisc Rounding(根据两端量化点的距离来以一定概率进行舍入)
    • 数量级缩放,较大的数目用小范围缩放
    • 分组统计: Group-wise
    • 两种误差 1)截至误差(Clipping) 2)区间误差
    • 信息拓展
    • 非线性量化
  • 上午持续阅读了几篇文章,下午进行讨论之后对于怎么把PruneRatio和Loss导过来有了一些想法
  • 下午和妃哥对原来的Flow进行了一个讨论
    • 发现最难受的是NetAdapt提出了我们所想的DataFlow
    • 但是LP作为我们的新核心,展开有几个
        1. 减少收敛需要的步长
          • 其实需要知道的是convex拟合之后计算代价加多了多少
        1. Extrapolation是别人不会去尝试的一个点(但是其实大多数都会去建模硬件结构,强调不知道Hardware也可以)
        1. 正常的卷积应该怎么建模(前层?)
        1. 怎么少取一些点
  • 几个分布的概念需要重申一下(自己的数学实在是tmd太差了)
    • Beta
      • 二维的Dirichlet分布
      • 二项分布(伯努利分布)的共轭分布(参数P和随机变量X变换位置)
    • Laplace
      • 尾巴比高斯分布更加平坦的分布,一阶高斯?
    • Dirichlet
      • 多变量的Beta分布
    • 伯努利
    • Gamma分布
      • 等候时间之和

2019-12-16

  • 需要做的事情,过文献
    • ~~ ECC & ADMM ~~
    • Lottery等推送里的几篇 (可能要拖到明天上午了)
    • Bayesian (Variational Dropout)
      • ~~ 看来一点背景知识 ~~
  • 晚上过了一遍代码结构
    • 太多了,太PRO了
  • ADMM用到了Augmented Largange(增广拉格朗日)比一般的Lagrange Multiplier有更好的收敛性能
    • Frobineus Norm 对于矩阵的向量L2范数
  • 今天下午还调试了一下cmder,配置到了好看一些
    • 发现了在win下Term比Ubuntu慢的核心原因是MacType渲染速度慢,跟不上刷屏
    • 但是不开MacType实在是太丑了

2019-12-15

  • 其实今天没做什么事情?
  • 下午按照汪老师意见更新了Quantize Reading List
  • 妃哥带着捋了一下aw_nas的代码
    • 之后需要把这个给过了,自己能上手跑起来
  • 讨论
    • Extend到一般的Conv,需要层间建模
      • 计算量不能接受
      • 这样独立性假设就没有了
    • 涛哥说的RL不compatible的问题
      • 有N个动作,能够采集无穷多个样本,但是反馈随机,所以无穷采方差会无穷
      • 很多动作,但是没有机会每个都选择,如何知道哪个动作最好?
      • 对于我们的Case其实应该是第二种,而这不是AMC中的Default Setting能够解决的
    • GP的问题(之后空的时候需要加深一下理解)
      • 提到的关于L2 regularization其实是暗含了一个分布高斯的假设的事情的推导
      • 以及Bayesian方法这几个是一个事情,需要找时间深入理解一下

2019-12-14

  • 上午又无所事事了…其实还是做了个PPT的
  • 下午和汪总开会,开完讨论了一下其实已经4点了
    • 需要在PPT的前面加上人名和时间
    • 需要把PPT的内容补充到网上(不一定)
    • 需要加入UCB和松哥的几篇文章阅读(今晚?)
    • 需要准备做实验(看起来需要拖延)
  • 晚上读AMC和Related Papers

2019-12-13

  • 首先睡过了一个上午(我的)
  • 试验一下低比特Activation,
    • 实验结果已经更新到debug issue中
  • 补充论文的结果,了解NAS,修改PPT准备和汪总讨论
  • 晚上讨论LPCVC的结果,有了一些Idea
    • 要读的文章还有很多…

2019-12-12

  • Communication Lower-Bound For CNN Accelerator(HPCA 2020)
  • 对ASIC做了一个分析
    • DianNao(ICT)- DRAM带来了绝大多功耗
    • Eyeriss (IBM)
  • 复用
    • 输入,权重,SlidingWindow,输出复用(输出的部分和一直存在片上)
    • 7层循环,搜索空间相对还是比较大的(对于EDA的设计来说)
  • Red-Blue-Pebble Game
    • 一个快内存一个慢内存(DRAM认为是无线大)
    • 算法模型是一个有向图,点表示数据,边表示数据依赖
  • 卷积操作和简单矩阵乘法的区别在于: 卷积的可以认为将输入给Unfold了
  • 当前卷积加速器能耗主要在存储,这篇工作找了通信一个最小值
    • 输入和权重重用平衡,输入输出都是最多
  • 总结来看好像每太听懂,反思自己对加速器设计方面也是浅尝辄止,没有完全搞清楚或者是完全走过这个流程

  • 晚上小组会赶了和讲了一个Quantize的PPT,大家提出了一些问题
    • Intel那个bias Correction到底是怎么做的,以及前面的
    • TTQ的正负WQ,是怎么实际算的,以及XNORNet这些网络前向到底有没有加Saling Factor,需要去看代码
    • 为啥要在FPGA上做训练这个灵魂问题
    • SAWB里面的]二阶量是怎么求的
    • ~~ 定Task Interval的那篇文章是怎么做的~~
    • ~~ TerGrad~~
    • 汪总说的需要添加的几篇文章
      • HAQ
      • AMS
  • LPCVC问题
    • 流程

    • 第一 LearningCurve和敏感度分析
      • 我们需要做的是从敏感度分析得到的几个点(直接替换去测试)去拟合一条曲线,且说明和一个完全Finetune出来的真实曲线的相关性
      • 利用模型去加速敏感度分析,少从几个点得出曲线
      • 本质上是用一个不那么黑盒的模型去解决这个拟合关系,建模的是从testCurve到TrueCurve的泛化能力
      • 做一个建模,让他generalize,可能不能generalize
        • 不同opertaor Type
        • 不同层
    • 第二

    • 假设
        1. 各层影响是独立且可加
        1. PruneAcc & True Acc 线性矫正
          • (如果改了Fit模块这个假设就不存在了)
      • 对于AMC来说不需要第一个假设,但是第二个假设用了PruneAccxFlops作为RLAgent的Reward,所以要求两者有相关性
    • 与AMC的区别

      • 完全黑盒的解决:RL Agent从庞大的SearchSpace采样出一组PruneRate,Reward是Acc*Flops,整个流程完全解决了
    • Expandible
      • FitAcc
        • 离散点更准(SA-Sensitivity Analysis)
          • 改BN
          • 能否analytical分析
        • Fit过程中
          • PruneCurv本身拟合(离散到曲线)【HARD】
            • 是为了少取一些点,也就是更快
          • PruneCurve到TrueCurve的矫正模型 【HARD】
            • 是为了更准确
      • FitLatency
      • LP
        • 凸函数代替线性 (减少需要迭代的次数)
        • Acc/Latency可以交换
      • Finetune
        • Faster/DataFree
          • Distillation
      • Extrapolation
        • 扩大模型
    • Sparks
      • 可控:相当于在找一个Acc和Latency之间的平衡(TradeOff)但是AMC只能给出一个平横,不可控且不能说明最优

2019-12-11

  • 本来准备读论文和做PPT的看来是没有办法完成了
    • 这个可能需要明天去做了
  • 下午讨论了一下定点相关的一些东西,预计周末要和汪总约一次
  • 把自己的BN嵌入了框子开始训练,调整超参并且记录了一些结果
  • (诶我上午干啥了?哦,看码,我是脑残)
  • 晚上配置环境,其实现在怎么转发端口没有搞清楚,需要再问一次
    • 有时间应该查一下auth_key的原理记录下来

2019-12-10

  • 疯狂阅读论文的一天,对低比特训练这个领域稍微加深了一些理解
  • 出了一个reading list,还可以,后续继续更新吧
  • 晚上读以下nntopmodule的构成

2019-12-9

  • 上课和尝试完成Van老师实验的一天,还需要拜托丁哥哥&HC大佬带飞
  • 配置了以下jupyter themes激励了我使用jupyter

2019-12-8

  • 早上起来改好了backprop
    • 原来是昨天一个地方的(x - mean)看成了mean,很愚蠢
  • 下午调试好了新的backprop
  • 晚上和妃哥交流了一下比较后期的思路
  • 晚上写周报,代入训练了一下没什么问题

2019-12-7

  • 大家讨论很久才发现了是为什么,我真是愚蠢(草)
    • 孙博nb
  • 晚上整理,开启了debug笔记(以后也可以这样debug)
    • 还整理了一些Pytorch Tensor和autograd的知识
  • 写了backprop,出了一些问题

2019-12-6

  • 上午开始写自己的BN层
  • 前向没问题,后向有问题
    • 一个bug调一天

2019-12-5

  • 组会 (RL-Related Autonomous Driving)

    • High Confidence Planning
    • L2 Adas / L3 (2007) 城市框架下的无人驾驶
    • 决策过程中真实的环境复杂
    • 目前Data-Driven的方法需要很多的数据量
    • 抽象的3个维度
      • End2End - 从感知的信息(雷达,视觉等过来)直接做,不大可能
      • 基于Dynamic Map - 已知目前环境中的各个对象是啥,在哪里
      • 规则枚举 - 对每个任务抽象并累计(车道线,跟车,超车…)
    • 应用RL
      • Monte-Carlo树搜索,粒子滤波
      • High-Conf
        • 基础规则 + RL (如果原本规则好,或者RL没有好的时候,会选择传统的)
        • 依据置信度提高,相信基础规则还是RL的一个ratio
      • RL对场景敏感
    • 场景
      • Collision Avoid in Agrresive Policy (很多车系都在车道上飘逸)
        • 以及环岛的Case,一个⚪,四个入口
        • 原本模型 MObil
  • 小组会

    • 离散空间的探索(不是supervised的问题,不需要最大似然估计,而是要最大似然估计附近的点)
      • 也可以认为是离散空间的采样
    • RL和Supervised的区别在于后者学表示,损失函数是一定的
      • 而RL可以认为是一种损失函数需要我们自己去explore出来的一种
    • RL是一个先有蛋还是先有鸡的问题
      • 鸡和蛋分别是policy和学习方法
      • 可以有专家设计的好状态空间和action,可以帮助训练(对于一个新的任务,很难有好的action,state空间抽象的设计,目前一般借助专家设计 也就是中午那个工作的contribution
      • 有了一个好的学习方法可以更好的去explore这个状态空间

2019-12-4

  • 上午苟命
  • 下午和飞哥讨论了一下,还整理了一下昨天的对自己代码需要加的东西
  • 学习了几个python的库
    • logging
    • click
    • shutil
    • build net
  • 看了一篇定点训练的文章
    • 大概理解了merge BN的意义

2019-12-3

  • 中午小组会讨论了自己的工作
    • 曾C给了一篇很类似的文章来参考 DAC2020
  • 下午到半夜和妃哥调定点框子的bug
    • 还讨论了一些问题
      • 比如merge convBN
      • 比如定点的取RANGE方法
    • 有很多收获需要整理
    • 我好像写了好多弱智错误
      • 记住Conv-BN-RELU!!!
      • 还有对AvergaePool其实用adaptive的更好

2019-12-2

  • 早上上课以及看文章做PPT
  • 晚上整理PPT,以及定点实验

2019-12-1

  • 量化grad出现了bug…
  • 仔细推导了一下backprop的反向传播规律(学到了不少)
  • 晚上对计算模式进行了测试

2019-11-30

  • 量化了grad
  • 看猫去了.moday!)

2019-11-29

  • 上午熟悉了一下正则的用法,For Future reference,希望下次能够记住
  • 第若干次推理backprop,这次好像比较清楚了
  • 晚上整理笔记和熟悉nics_fix框架,准备apply量化grad

2019-11-28

  • 组会 - RRAM

    • 存内计算(Enabling Processing-In-Memory with Emerging NVM For Data-Intensive(数据密集) Application)
    • The Problem: von Neunmann Bottleneck
      • 冯诺伊曼架构存储与计算分离,计算中很多时间花在数据搬运上
      • 数据搬运的Energy开销大
    • (Near Memory Processing) / Processing In Memory
      • 主要避免了数据搬运的开销
    • Matrix Operation -> Memrresistor Crossbar
    • 做的是deconv的加速
      • deconv在GAN,FCN中用到的多
      • 主要需要zero-padding来完成upsampling
      • 需要做zero-skipping
    • 基于RRAM的异构CNN训练
      • 由于RRAM本身精度有限,做不好(RRAM整出16比特都费劲)
      • 用异构来解决
        • GPU做训练
        • RRAM做前向
        • 3D电路堆叠来传Activation
      • 用到了pipeline
  • 算法组会

    • 学姐讲AAAI,思路基本上是为了增强模型的泛化能力,或者是防止过拟合.对所有feature的方差(最后fc之前的2048个node,对每个输入样本求方差))做一个Regularization,鼓励网络给出对样本方差小的特征
    • 感觉和CORAL的思路很类似
      • 但是用res50做backbone干svhn也太…
    • 感觉其实没有和SOTA去比较(但是由于它不需要目标域的数据,所以尚可)
    • 主要是实验做的很好
    • 涛哥对SGD的解释感觉非常有意义
      • 论文说到了SGLD(郎之万热力学方法的SGD)
        • 应对的是LR趋近0时候的情况(对应特定的问题)
      • 假设full batch的模型参数更新,后面加了一个根号LR加权的高斯噪声项
        • 由于趋于0的时候,根号比线性衰减的慢
      • 实际我们需要拟合的一个曲面是很平滑的,等价于做最大似然;在他的task中需要获得的是最大似然的附近的采样.最大似然的采样就等价于去拟合一个比较noisy的原来的平滑的曲线.而后面的这一项就是为了在这种情况下能够取得好的性能.
      • 而小batchsize,就是等价于加上了这一项.
    • 还有就是relu这个东西的本质,可以理解为分段函数,分段数目越细,越可以特别好的拟合原函数
      • 而L2正则通过让大多数relu去dead掉,也就是稀疏化,目的是让这个分段不那么细,不那么过拟合

    • 目前的网络大小
  • 帮凯哥打杂…正好熟悉一下正则和python os…
  • 需要搞清楚具体的bakcprop的计算behaviour以及hardware apply想`

2019-11-27

  • 感恩飞哥把多卡的bug解决了,FGNB!
    • 顺便总结了下pytorch dataparallel的behaviour
  • 现在基本上能拿出一版80%的8比特模型 (基本通关)
  • 开始学习HLS,跟着官方教程走把…

2019-11-26

  • 算法上的问题基本没有解决
  • 找到了一个能work的场景,但是还是依赖于大的batch size
  • 和飞哥讨论在调bug来着,还是没有解决…
  • 和郭哥讨论一下,准备开始学hls
  • 对于这东西的硬件设计开始思考了
  • 下午还学习了一小下c++的feature
    • 类型转换
    • 引用与指针 - 为了支持运算符重载中传索引而产生
    • 重载 - 同一函数多种参数
    • 继承(虚继承很少有用到)
    • 虚函数 (为了防止派生类的某个方法不会被调用,所以需要将基类中的某个方法设置为虚,让编译器动态绑定到派生类的对象)
    • 纯虚函数-抽象类 (f=0,不能被实例化,只是定义接口,这个方法由派生类来实现))
    • 模板 - 相当于同一个方法/类,可以被多种数据类型调用

2019-11-25

  • 又是调参的一天…
  • 发现了很明显的一个问题-就是多卡的时候及时不改变任何东西但是训练会变得不稳
  • 测试了一下多加了dataaug,没有很明显的改变
  • 量化多卡的bug汇报了,目前还存在

  • 间隙记录了一下DQN

2019-11-24

  • 写好了开题报告
  • 做了一天的实验
    • 另外会炸可能是我用了logits?(这个非常合理)

1124的奇妙冒险

  • 起因在于早上发现自己把sgd的weightdecay从2e-4打成了4e-2
  • 改正之后一直在调,结果发现效果还不如之前???
  • 于是对为什么展开了思考-首先因为我把dropout去掉了,所以对算法来说还是比较有效

  • 首先weightdecay是怎么做的
    • 很直接就是在参数更新的时候直接给梯度乘上一个系数(1-weightdecay也就是0.999多)
    • 所以不断迭代的话参数理论会一直变小
  • 具体内容还是收录在另外一片博文里了

2019-11-23

  • 做完了开题PPT
  • 系统看了一下Q,感觉多了一些收获
  • 需要手推一下Backprop(已经不知道是多少次了永远记不住呢)
  • 开题word写好一部分了
  • 需要修改申请表上的题目,拿快递,上网填申请

2019-11-22

  • 和汪总交流之后
    • 首先把我们所解决的问题更明确的场景给提出来
    • 开头先把实验场景写了
    • 把我们方法的优点列出来
  • 凯哥提到了sim2real的东西可以搞一下
  • 需要改PPT
    • 改好了PPT
  • 做了一半北航开题的PPT
  • 测试了1k Label的实验场景
    • 还没有达到我希望达到的点
  • 纯定点训练掉了几个点,回头调一下
  • 需要继续调研量化的方法

2019-11-21

  • 看到了一篇将Semi引入到Transfer中的文章
    • 说实话单纯文章没太大contribution,但是我可以引
  • 做了定点测试,有一些问题
    • 发现了原来的网络其实小了
    • 用student做test发现结果超级noisy,改成teacher稳定多了
    • 貌似对小lr来说,量化炸了?
  • 组会

    • DAC准备投稿的内容
      • 考神的一个spNN的工作,GPU上稀疏矩阵乘
      • 一个RRAM的加密的工作
  • 算法组会

    • Multi-Agent Communication in RL

    • Category
      • 隐式的通信:对环境作用或者式通过自身行为的变化
      • 显示的通信
    • MultiStep-Mnist
      • 两个Agent通信,每人获得一张图片,经过5步之后猜测,鼓励猜对数字
    • CommNet
      • 每一层网络取所有在通信范围之内的agent,取一个平均过一个transform和自己的结果一起做下一层
      • 设置了一些场景
        • 车过红绿灯
    • 灵活的局部通信
      • Attention,独立于RL(DDPG)的训练之外
      • 用Attention取判断该通信是否有value
      • 减少了无效通信的需求
    • 涛哥说的非常有道理
      • Reinforcement做的是已知奖励,找策略的问题
      • DL做的是对大量的数据做表征学习
      • 两者compatible的点在于
        • RL有Policy Gradient能让策略变得可导
      • 数据分布首先要平稳而且独立同分布
        • SGD是有前提的,偏离前提太远,会不work
    • Adversarial

    • ICLR2017 Goodfellow 《Adversarial Examples In Physical World》
      • 产生三种数字域的对抗样本
        • Attacker Strategy (从梯度传播入手)
          • 完全已知目标模型之后,去把输入图片依据传回来的梯度做一个传播
      • 直接打印出来就能work
      • 还提出了一个Destruction Rate作为评价指标
      • 此外还给出了一个Lower Bound
    • CVPR 2018 - 3D的样本

    • 有一个哥们水了好几篇
      • 先说对抗样本不鲁棒,对距离光照不是很稳定,对Detection无效,说前面 的对的很齐
        • 《NO Need To Worry about Adversarial Example in Detection》
      • 再说我找到了一种
        • 《Adversarial Example That Fools Detectors》
        • 需要对场景有一个3D模型,生成一个Texture依据空间特征贴到

2019-11-20

  • 做PPT的一天
  • 整理了一下文件综述和ReadingList
  • 约了汪总讨论

2019-11-19

  • 测试了Warmup,没什么问题
  • 准备测试定点训练,出现了一些小bug,还有一些实现上的问题需要咨询飞哥
    • 具体是怎么确定的,看了一眼Quantzie-Aware的东西
    • fix建立net的时候,必须要自己一个模块一个模块去搭吗,比如我要做一个Res18的量化,需要自己搭一个吗
      • 可以去做Patch
    • 对于DataParallel怎么处理
      • 是可以做的,我目前姿势有问题
    • 我现在的case,需要对所有的样本做一个0.99x+0.01(x+1),是否仍然有效,会存在一个float赋值给到int的问题
      • 思考了一下每个weight其实是有一个buffer的,那个buffer其实是可以存储我转换之后的东西
      • 然后定点的过程设置成auto的话是会在前向的时候先遍历一遍所有的weight,找到最大之后往后退几位,定点Register并且走
  • 另外一个就是剪枝
    • 有没有什么比较耐操的方法
      • 目前就是L1范数
      • 还有涛哥文章之前提过去寻找最远的L2范数
      • 之前文章也没有在FPGA上跑起来,做了一个软件的实验
    • 郭哥之前那篇文章里大概剪到一个什么地步?
  • 一个非常关键的问题就是定点之后这个Self-Ensemble的效果可能没了!大部分都是设置为0.99
    • 也是刚刚发现,很难搞,但是是不是可以和郭哥文章里的weight buffer那种方式,多存一份,多用一个
    • 还有一个想到的就是图像压缩解码的方式能不能作为一种aug?(值得测试) - 其实损失会有些小把。。。
  • 做PPT整合思路,约汪总

2019-11-18

  • 养病
  • 跑手续好像比较可行了
  • 摸鱼Day

2019-11-16/17

  • 草我好像知道昨天那个是为什么了…我居然把Mask弄反了…
    • 其实替换softmax到logit其实只是加了一个约束,防止太错误的样本影响性能
    • 原本其实是th越高,而把th以下的东西采纳了,我是傻卵
  • 上午到中午都在复现这个新的实验
    • 这段话我感觉还是比较关键的,transfer其实是一个很好的解决Semi-Supervised Learning的方法
  • 当前有一个很搞怪的Bug
    • 在SVHN实验的时候Loss有抖动,飞哥说应该是随机性相关的原因
      • 目前已经排除了Dataloader的问题(用最直接的Dataloader也会存在这个问题)
      • 难道是这个任务太难了?
  • 晚上开始测试Office集
    • 发现也有毛刺
    • 认知上难道说是计算Logit的MSE炸了?

# 2019-11-15

  • 上午调试SVHN的半监督学习环境,顺便把Cifar的Semi调通了(感觉这个步骤非常关键啊!)
  • 下午阅读郭哥文章,构思下周讲一下
  • 晚上摸鱼+开始做PPT
    • 被v2ray折磨好久

2019-11-14

  • 组会 - 曾C讲了一下NAS

    • 将搜索空间看作一个有向无环图,每一个架构都可以看作一个子图
      • 需要一个评估标准(可能不仅是Accuracy,可能还有一些其他的)
    • Search Space
      • Global Search Space - 首先是Block By Block的一个一个Op搜索
        • (这里是搜每个模块是不是用Conv或者Pool)
        • 同时还去探索有没有分支和Jump Connection(改变链接方式)
          • 比较复杂比较多
      • hardware基本都是Segment Based,就是一个Module一个module
        • 而另一种是Cell-Based固定好了每个Cell的结构
        • 而Block-By-Block是更加细粒度的
    • 怎么选择
      • 用Reinforcement Learning去做
        • 对一个Agent,Accuracy是
        • NASNet就用了Policy Gradient
      • 用遗传进化算法去做
      • 去缩短评估Acc的时间
        • 用替代模型(一般是ML,用高斯模型去大概地估计)
      • OneShot的
    • 评价标准
      • 先少训一些Epoch,再排序
        • 后续工作提出要做动态的变化
      • Learning Curve Extrapolation(外推)
      • 权重继承与结构变化
        • 先有一个Warm-Up
        • 可以说是利用了Weight的信息
      • Oneshot一次只评估一个
        • 问题在于这个bias会比较大
        • ProxylessNAS - path-level-binarization
    • 与Hardware结合-
      • Constraint变多,比如加入Latency
        • MNasNet 第一个将Latency引入的工作
      • 直接对多目标优化
        • 基于Pareto Optimal的 - 找到满足多目标(当多目标矛盾的时候,零和优化)找到那个最优的边缘
        • 一些work尝试去分解
    • 不仅做Hardware-Aware,做与Co-Design
      • 基于RL的NAS和HLS的FPGA加速相结合 - 白盒的Simulator
      • 思考如何把两个东西更加紧密的结合起来
  • CORL会议

  • 算法组会

    • 算法组会 - 对抗样本
    • 基于Adversal Example
      • 比如叠加一个干扰,网络就不work了(垫一个分布)
    • Adversal Training
      • 包含了生成和抵抗
        • 基于最大化Loss的角度从数学推理去寻找一个对抗样本的分布
      • L-BFGS-Attack (一般针对二维图像)
        • 但是对于实际的三维的物体作为对抗样本,还需要考虑光照等因素,不是特别友好 - EOT(Expeatation Over Transformation)
    • EOT
      • 寻找一个变换的集合T (这是对对抗样本加上了一些光照等的数据增强)- 这个T是一个三维到二维的映射
      • 很数学的一些评价指标
      • 最大的问题是解决了Render这一层次的问题,主要是很多render不可导,把这个东西给考虑进去了
    • 黑盒和白盒子攻击
      • 对模型本身的了解情况,白盒知道结构,并且能知道Gradient
      • 有的是加入随机,将其变成灰盒,就是我得到的Gradient不一定准确
    • 目前玩法
        1. 实践上的,Adversal Training,针对某种方式去产生训练样本s,Follow Gradient去攻击
        1. 理论上去找到一种好的衡量网络鲁棒性的性能的方法,定义为对输入加上一个多小的扰动,能够让网络失效的期望的lower bound
          • 由于计算量的问题,难以做到对一些大的数据集和结构进行评估

  • OFA - Once For All
    • Han Song,一个特别大的架构,包括了各种KernelSize和各种的Depth和各种Expansion
    • 7x7 - 5x5 -3x3之间是有weight Share的,扣中间一块过一个Transform(这个对每个channel是一样的,省了很多weight存储)
    • 训练一次,一个超大的,对所有Arch的Accuracy打表,到时候用用哪个硬件就直接选哪个Arch
    • 和一般的NAS从一个小的不断到大的

  • GNN
    • 卷积
      • 基于空域 (Spatial) - 相当于对于每个点每次选择最近的K个值进去卷,本身不包含链接信息,但是选择点的过程包含了信息
      • 基于谱域的(Spectral) - 有一个所谓的傅里叶变换,就是对Adjacent Matrix或者是对Laplace矩阵做一个奇异值分解,相当于得到了一组正交基,对这组正交基变化一下,作为新的基地,进行一个变换,将原来的输入映射到一个新的域当中进行处理(怎么处理这里的卷积核也可不同)
    • GCN,就是相当于再原本计算的基础上加上乘一个邻接矩阵
      • 这样的好处在于图的计算是累进的,比如说定义一次运算为取交集的话,反复运算就变成求它的闭包
      • 这样每一次卷就可以让图的链接关系更深入一层
    • 牛逼的地方在于顺序不变性 - 对于一些具有旋转特性的样本网络的计算方式就导致它本身就是等价的
    • 拉普拉斯矩阵的意义
      • Laplace算子-求的是梯度的散度
        • 对于图来说:从该点射出的梯度,减去汇入该点的梯度
        • 与边的方向无关,用来描述无向图
        • 其N个特征值都非负

2019-11-13

  • 让整个代码跑了起来
    • 目前还在添加trick让其获得标称的效果
    • 目前还没有跑到,这个加th的方法好像卡主了?
  • 看了新的论文 MixMatch,Semi-supervised的另外一个SOTA
  • Ablation study
    • An ablation study typically refers to removing some “feature” of the model or algorithm, and seeing how that affects performance.
    • 简单来说就是去掉某些Feature之后模型还work不work,控制变量
    • 根据奥卡姆剃刀,简单和复杂的方法都能解决问题,而简单的方法更可靠
  • 看了几个Prunning的方法,似乎希望能够对我的问题起效果

2019-11-12

  • 摸的一天,狗命
  • 上午读了UDA,感觉数据增强的方法还有空间
  • 对于选切入点有了一些信心,Semi是一个比较好的方法
    • 可以改成Consistent Learning
  • 仔细读了一下resnet的源码,大概知道了是个什么样子的组成(很惭愧啊之前都是脑瘫拿来主义)
  • 让semi的代码几乎能跑起来,还缺了一些feature

2019-11-11


2019-11-10

  • 苟命
  • 下午做完了并整理了office31以及imageCLEF的结果
    • Work的不是特别好…
  • 测试了一下定点工具
    • 但是好像有bug?
  • 晚上整理了一下现在的思路,准备和汪总交流一次
    • 下午思考了一下并且找了目前思路的点
  • 并且看了一下meanTeacher的Code,准备Setup一下SemiSupervised场景下是不是work

2019-11-9

  • Office31实现确实会有一些问题AWSL,主要是到A这个过程点会很低
  • 可以尝试imageCLEF
  • 正在入门飞哥的定点工具
    • 和飞哥交流了一下,大概还是有一些收获的

2019-11-8

  • 更新了数据集,整理了一下digits上的结果,基本也就是只能复现之前的结果,而且基本证明了vgg不work是因为train from scratch而网络太大的问题
  • 准备好了imageCLEF和Office数据集
  • 正在准备硬件部分的Proposal

2019-11-7

  • 上午考试
  • 组会群里发了 NN Benchmark
    • 两张很有意思的图
  • 中午组会
    • DPU Strcuture
      • 组成
        • 计算阵列
          • 以MAC为主要组成
        • 片上存储
          • 带宽大 (100GB/s)
          • 容量几十M
        • 片外
          • 可以很大,但带宽在10G
        • 控制逻辑
          • 时分服用
          • 固定的有限状态机
      • 工作点
        • 近存储计算(和NVM关系更大)
        • 如何选取并行度
        • 指令接口的设计
        • 近似(fc层的SVD分解)、
  • TVM
    • 端到端的DL算法编译工具
      • unify heterogeneous
      • 部署的实现方式和硬件相关,目前的方法基本基于硬件厂商的高性能库
      • 手工优化成本高,移植性差
      • 并且每个框架对于每种硬件都有独立的编译优化
    • 生成一个中间表示层
    • 在计算图优化层面已经比较ok和生成硬件代码之间有一个Gap
      • Solu: 张量表达式的中间表达
    • 计算图的优化v
      • Op Fusion
    • 计算图层次?(是否与硬件相结合)
      • 在数据流图后又包了一层
      • 张量表达式:类似一个placeholder,描述了不同数据流之间的依存关系
        • 以及对卷积计算中的展开与变化
          • 比Halide要多的 Memory Scope, thread co-operation之间等特征
    • 张量表达式之后
      • LLVM,OpenCL CUDA HLS等等
    • 现在还又AutoTVM
      • 上板之后再调
    • 对不同的Structure
      • CPU - Scalar
      • GPU - Vector
      • Accel - Tensor
      • 这样可以减小搜索空间
      • 我理解和OneAPI不一样的是
        • 根据平台的搜索空间缩小其实是再autoTVM那一环
        • 而OneAPI是在直接生成张量表达式这一环就做了的
    • 搜索的方法
      • 随机搜索,遗传算法
      • XGBoost
      • Meshgrid
    • 未来工作
      • 支持更多后端
      • 根据硬件特点,完善scheduler的搜索空间
  • 下午接着调算法,原本比较困难的Task好像还是没有特别好的解决
  • 被一个问题卡了很久,在同一个Domain上teacher的性能比student差很多
    • 考虑了很多原因,最后发现是因为Train的时候没有让Teacher参与训练,导致Teacher的BN参数没有被更新(因为我copy的时候没有把BN的参数更新过去)
    • 暂且解决
  • 现在看起来AdaBN是有一定作用的
    • 直接到新的域apply,掉到10%,但是用了它还有50%

2019-11-6

  • 复习通信网络原理的一天;
  • 继续思考算法怎么改

2019-11-5

  • 小组会,加速器相关内容
    • MICRO,ISCA的几篇文章
    • 主线是做稀疏化的加速,大部分的操作是存一个bitmap,然后有很多种切入点
      • 有一些关于负载均衡的比较有意思(但是大部分还是放在软件层面去做的)
    • 还有一些其他的工作
      • 拆分矩阵省存储
        • 不同的运算顺序会导致计算复杂度不一样 (nx1)(1xm)(mx1)
          • 顺序算 mxn+mxm
          • 先算后两个m+n
        • 最后的结果VGG16 ImageNet上能压到5倍左右?
          • 孙博说正常剪枝能够压到10
      • 对每层内的参数做细粒度的量化位宽
        • 对每个组(group)取不同的量化
        • 做了一个统计发现40%左右的只需要4比特
        • 后续怎么做?
          • 自适应地去调整乘法器所需要的周期数
          • 如果利用了这个,那么就不能在位宽这个维度有并行度
      • 有一篇文章尝试榨干最后一点优化
        • 在用乘法器算8比特乘法的时候,采用Booth编码去把0的乘法给跳过去(因为0乘什么都是0)
          • Booth算法把连1换成两个1,来减少逻辑资源使用(我寻思我们实际用的DSP啊?)可以减少延迟
          • 本质上是减少了二进制乘法中的部分和
  • 和郭哥讨论了一下
    • Prunning可以放一下
    • 首先还是要把Task完成,可以做一个偏应用的
  • 继续炼丹
    • 找到了一个稳定的点
    • 摸索中
  • 在看飞哥的定点工具用法
    • 主要库 import nics_fix_pt as nfp
    • nnf就等价与nn
      • import nics_fix_pt.nn_fix as nnf
    • 对每个model要做一个model.set_fix_method(fix_method)
      • fix method有三种
        • FIX_AUTO/ FIX_FIX / FIX_NONE
    • 这样定义model
    • net.fc1_fix_params['weight']['method']
      • 两层都是dict,里面存着信息

2019-11-4

  • 早上突然发现服务器登录不上了
    • 然后发现是因为我开了Tensrboard的端口转发导致登录不上
    • 所以以后不要吧thinkpad上的tensorboard开着回去
  • 继续炼丹的一天
    • 用Tensorboard找了一些规律
    • 调整了一下东西,昙花一线了昨天没有解决的问题(但是还是没有本质解决)
  • 签了个字

2019-11-3

  • 今天是突破性炼丹的一天…
  • 复现出了Self-Ensemble的一部分内容,但是仍然有几个Task没有完全搞定
  • 现在最大的问题是某些模型一开始训练的时候conf就很低,低到无法打破conf_thresh而导致一直很菜
    • 目前还不太清楚怎么解决
  • 发现的一个新点
    • 一开始训练warmup的阶段,由于还没有触摸到conf-thresh,所以说相当于只有source domain在work(思考了一下好像确实是和target domain没有关系的)
      • 那么这个阶段是否可以提前做好?
    • 如果这样可以的话,那之后可能可以做一个实验,需要取多少个TrainingSample来存下来来保持label的clean?
  • 还有一个多卡的Bug还没有解决

2019-11-2

  • 熊哥实验(糊弄了好久)
  • 继续炼丹,继续搭实验环境
    • 发现前面的augmentation和一些预处理可以直接用Salad的东西

2019-11-1

  • 手续很闹心
  • 回来汇报工作
  • 配置一下弱智环境(IDM貌似还是没有work)
  • 稍微推进了一丢丢代码

2019-10-31

  • 组会
    • RRAM相关的一个INtro
      • 忆阻器认为是一个单比特,通过加电压来Set和Reset
      • Cell/Wire - Wire/Cell
  • Multi-Label Few-Shot via Memory-Enhanced
    • Metric Learning
    • MultiLabel 一个图片内有多个物体
      • 本质上相当于做N个2分类
        • 用BCELoss
        • 本质上是一个2^N,用Pair的方式减低
        • 留一个memory
        • 从FeatureMap通过一个Fc映射到一个概率空间
          • 传统的方式是取一个argmax,这里是每个再过一个Sigmoid,看大小定True,False
        • Cosine Similarity(Pearson Correlation Coefficient)
    • Few-Shot 利用少量样本获得
      • Augmentation-Based
      • INitialized-Based
      • Metric Learning
        • 寻找一个合适的Embedding空间
      • 先从ManyShot的数据集Pretrain,然后只训Classifier
      • 有一个思想是去把新的样本去Pair

2019-10-30

  • 干了一天
  • 上午和下午沟通了一下Self-Ensemble这种方法
    • 感觉还比较可行
    • 主要时间花在看弱智代码上
      • 真的很难用…
  • 晚上做PPT,更新了思路,准备明天讲

2019-10-29

  • 汪总表示需要把故事先说好,更新PPT
    • 提炼出来一个更小的故事(确认一个点了)
  • Caoyu
  • Online Adaptation For Intelligent Dyncamic Systems
    • Edge Inference(1Tops) - Cloud Inference
      • Between those (无人驾驶汽车,飞机)
      • 所谓Compact的Data-Centre
      • 强调实时性
    • 强调了新数据的存在
      • 不需要From Scratch,但是需要在线调整
    • Brain-Inspired了…
      • Related到Transfer,Reinforces & Continual
    • 从硬件角度
      • Hybrid Memory Arch
      • 一部分需要很快的调整
        • NVM(不写,只做Inference) & SRAM(读写都快,可写)
        • 再次强调了实时性
    • Conrinual Learning - Catastrophic Forgetting
      • Regularization
      • Memory-Replay (有神经学的背景)
    • Cumulative Learning
      • Incremental对于一个假设10分类的问题,一类一类学,这个其实不太make sense
      • 先在云端学9类,再学最后一类
      • 核心的区别是Pretrain On Clod & Adaptation On Edge
        • 很奇妙的比喻: 1岁的小孩啥都不会,过来一年全都会了
        • 放在云端计算,留给终端的计算小
        • PST
          • 做一个Important Sampling,去固化比较重要的(like Prunning)
            • 权重大小*梯度
        • 将其Apply到NVM
          • 首先第一轮就会有损失(量化损失)
            • (软)也是做了KD(相当于在量化的过程中引入KD去Finetune) (P17)
            • (硬) RSA,去训这个SRAM
      • NN的发展趋势
        • Synapse 多,Neuron少,更加Dense
        • 从Memory-Bound更深一层,是内部lattice
    • 提问
      • 提到可能下一步工作在前面这个第一个Task怎么确定
      • KD都是Offline的
      • Training放在FPGA上
  • 尝试去讲故事
    • 晚上读新的论文,看可行性

2019-10-28

  • 炼丹的一天
  • 顺利反向复现论文
    • 我真🥦
    • 接着做实验把
  • visDA的有一篇self-ensemble的文章可以看看
  • 签字的问题需要找老师

2019-10-27

  • 上午过来接着配系统装软件
    • win下跳板登录好像有一些问题…
      • 是因为初次登录貌似要下载一些东西,但是服务器没有入网,所以卡住了
  • 做熊哥PPT
  • 接着尝试炼丹,写Finetune的代码
    • 写好了,明天实验
  • 继续思考
  • 这篇文章的所谓Adaptive BN?
    • 没啥子鸟用

2019-10-26

  • 没有打卡的一天…
  • 上午和中午校庆活动
  • 下午修电脑,晚上装系统
    • 做了一半熊哥PPT
  • 是最近最摸鱼的一天了,需要反省啊!😡

2019-10-25

  • FCCM - Online Learning
    • 1-6 /
  • 罗列了很多了,找一个比较小的点去展开
    • 我的思路还是在Hardware-Friendly的TL方法(或者说是UDA)
  • 首先还是要想一下目前的方法怎么不Hardware-Friendly了
    • 肯定是有东西的,优先度不是特别高
  • TODO:尽快把算法给拿出来
  • 和Design无关的盲测的方法
    • 给HLS Debug - 反馈回来的Verilog不可读
    • Pre-Sliicon : Logic,
    • Post: 电特性,
      • 复制一份进去,检错
  • TODO: 尽快找一个可行的方案去干
    • Async是想要获得一个比较好的分类器,训练了一个Labelling网络(Feature Extractor共享这个还是比较elegant)
      • 问题是训练方式不是很elegant
      • 或者说如果能work的话这个方法也不是不可
    • Semi证明维护一个数据集能更好
      • 前提是需要一个Acceptable的老师
      • 尝试下AdaBN能否解决这个问题
  • TODO:盖章的问题.
    • 颖姐那边能handle

2019-10-24

  • 中午讲了一下PPT
    • 问题
      • 提出往Meta-Learning(学习如何去学习),不是很Feasible
      • 提出Teacher有了Student有什么用
        • 俺准备把Teacher也放终端
      • 场景:我还是踩着TL这个场景
    • 先把算法整出来才是最关键的
      • 淦…
    • 算法上的Contribution在哪里
      • 凯哥提的,Semi文章第一个是堆了大量的数据,和那种不是特别一致
      • 看我的TrainingSet准备怎么构建了
        • 单纯的拿置信度应该是不大行?
  • TODO: 改PPT,炼丹,
    • ~~ Load一下ImageNet ~~
      • 顺便搭一下ImageNet的训练环境
        • 搭好了,但是…好像被磁盘读取卡了性能
          • 测试实际涉及和sda的读写,速度10kb/s
          • LZZSCL…
          • 另外测试了一下我的/home目录底下
            • 看不到速度,读取速度也正常,没有和sda通信
          • 目前的推测是我们的home目录是一SSD,但是那个3T的玩意估计是个机械
        • 要么是DataLoader的问题,要么是?
    • 看懂DAN的那个MMD是怎么弄的
      • (写个论文解读)
    • 远程Jupyter Notebook
      • 出现了奇妙bug,不能从0.0.0.0启动jupyter
      • 对Tensorboard给搞定了!
      • 同理Jupyter Notebook也解决了!
      • 方案放在EVA开发日记里了

2019-10-23

  • 今天是炼丹的一天
  • 又深入了解了一下pytorch的设计,还是有点东西
  • 多卡非常爽
  • 继续读了几篇文章,昨晚发现的这个online trasnfer的pruning有点东西,和我的主题很切合
  • TODO: 继续炼丹
    • 还有看一下Data AUG和可视化怎么做
    • 接着研究代码
  • 继续读文章,改PPT,准备和汪总的交流
  • 文件还没有出,就很尴尬

2019-10-22

  • 把无线电导航和通信网络补了(上午)
  • 下午上课,跑了个餐卡手续
  • 晚上接着配环境
    • 发现充钱之后我在服务器上不能上线了(很尼玛神奇)通过手动添加ip的方式上线了
  • 下午在配置WSL,这东西有点好使
    • 记在UbuntuSetUp一文中了

  • 配置了Linux环境下通过跳板机直接访问目标机器
    • 一次ssh而不是两次
    • 主要参考了这篇文章
    • 在.bashrc里面加上
      alias eva="ssh zhaotianchen@101.6.64.144 -p 22 -o ProxyCommand='ssh -p 42222 zhaotianchen@101.6.64.67 -W %h:%p'"
      alias fpga="ssh ztc@fpga1.nics.cc -p 22 -o ProxyCommand='ssh -p 42222 zhaotianchen@101.6.64.67 -W %h:%p'"
      
  • 按照上面的配置之后还需要再进行一次秘钥copy
    • ssh-copy-id -i id_rsa.pub zhaotianchen@101.6.64.144 -p 22 -o ProxyCommand='ssh -p 42222 zhaotianchen@101.6.64.67 -W %h:%p'
    • 说明从跳板机登录(2次)需要的秘钥和一次的需要是不一样的
    • fpga1.nics.cc -> 101.6.68.236(由于用ssh config文件这种方式登录的话不能用域名)

2019-10-21

  • 上午看了几篇新的论文,和VisDA的比赛解决方案,发现多了一些可用的Trick,同时发现多了一些文章要读
    • 主要就是在Noisy Label下怎么取得比较好的效果
  • 今天FAIR把Semi文章的模型开源了
    • 但是代码没有开源
    • 在git上找到了一个人的复现代码,但是好像有一些不大Work,可以参考
  • 下午上课,复习了一下无线电导航
  • 中午和晚上办网络的手续(好狠)
    • 有一说一网很贵
    • TODO: 问一下凯哥怎么整训练数据
  • 晚上配置eva0

  • 网络实验
    • 正常时间可以用DIVI(这个不要钱,而且挺快的)不属于清华内网
      • 可以通过跳板机连接eva和各种东西
    • 如果用Tsinghua Secure,相当于连入了清华内网了,就可以直接通过ip地址连接eva了(而不需要通过跳板机)
    • eva需要上线
      • 和wiki上不一样我只要进去调用eva_share目录下的Tunet-2018c启动了之后就直接可以联网了(而且还是外网)
      • 运行之后理论上会一直占用这个Term,但是我CTRL-C强制退出之后连接没有终止
    • 当然每天要去充钱
      • 冲10块,只能微信(因为理论上你在看到自服务界面的时候还没有进入清华内网)- 但是每天充钱好像必须首先在清华内网里(日)
      • 所以说充钱也是需要在清华内网里面的(日)
    • 上线之后打开usereg的自服务可以看到eva的ip出现,并且开始跑流量了
    • 实际测试了一下,如果账户里没有钱了,是不能正常用服务器登录的
      • 但是可以传文件上去,目前利用Win里的MobaXterm证明是可以的,在服务器没有联网的情况下把数据传上去了
    • 第二天起身发现,我的网络在服务器上是连不上去的,只有通过手动添加ip上去,所幸这样的方式目前能work

  • 遇到问题 1.其实和网络没有太大的关联

    Release file for http://… is not valid yet (invalid for another xxd xxh xxmin xxs)

    • 这篇文章 据说是改一下系统时间
    • 这个问题过了一段时间自己消失了,很nb
      • 炼丹炉的自我修复?
    • 第二天这个问题又出现了,修改至阿里的源,问题暂时消失`

  • 配置一次性跳板机的登录,并且推送图形界面
    • Win:利用好MobaXTerm
      • 按这个方式配置,可以直接上去,然后测试过可以推送图形界面
  • VsCode Jupyter-Notebook Built-In的支持
    • 先命令行Python: Interpreter
    • 然后Python:Create New Blank Jupyter
    • 很香,然而服务器端用不了,因为Remote上没有Python插件?

2019-10-20

概率论只不过是把常识用数学公式表达了出来。 —拉普拉斯

  • 贝叶斯方法,一种相当General的推理框架
    • 逆概率的角度思考
      • 正思路:从一个已知内部黑白球个数的袋子里摸球,摸出不同球的概率
      • 逆思路:从我们已经摸出来的球的情况,分析袋子里球的分布
    • why? 人的观测能力是有极限的 我不做人了JOJO!
      • 对于上面的问题:不太可能完全获得袋子里面球的情况而只能通过“取球”这个过程观测之后的结果
    • 分析问题方法
      • 首先给出几种Hypothesis(这里可以理解为猜测
      • 然后根据观测到的结果,计算特定猜测的后验概率,从而选择最“靠谱”的假设,进行了最大后验估计
        • 当这个过程不考虑先验知识的话,就是最大似然估计 (贝叶斯方法比简单的最大似然就是多了一个这个先验概率
        • 对于上面的场景,先验知识就是袋子里都是球,不可能摸出一个皮卡丘
          • 而对于Bigger Picture来说,最大后验的事件的先验概率可能很小
          • 当我们实在没有先验信息的时候(在我们看来先验就是一个均匀分布)这时候只能用最大似然
          • 这里也是统计学家和贝叶斯学派的
            • 统计学家:Let The Data Talk Itself
            • 贝叶斯: 数据本身就有偏差
          • 一个有趣的例子 - 树后面有几个箱子
            • 先验告诉我们两个箱子不大可能,因为两个箱子刚好一样颜色一样高概率比较小
            • 但是这样的先验是否靠谱?这两个箱子会不会是同一批?
        • 对于连续的情况,就是计算PDF-概率密度函数
    • 简单的贝叶斯公式
      P(B A) = P(AB) / P(A)
    • Example
      1. 拼写纠正问题 thew被修改成什么

如果两个理论具有相似的解释力度,那么优先选择那个更简单的

  • 谈及奥卡姆剃刀
    • 比如Overfitting的模型,将一些观测的误差,都尝试去解释
    • 贝叶斯奥卡姆剃刀
      • 修正我们上面提到的先验出问题的问题?
      • 如果一个先验导致我们拟合的模型更加复杂
      • 相当于奥卡姆剃刀原则也是一种先验?
  • EM算法
    • EM聚类,先验知识是数据一般按照正态分布
  • 最大似然与二乘拟合
    • 直线给出的是相对最靠谱的直线,而偏移的被认为是噪声
  • 朴素贝叶斯方法

  • 下午跑了修理,还没解决
  • 下午修改发给汪总的PPT
    • 这个东西和incremental的联系
      • 充分利用数据,持续做训练,提升性能
    • 避免Overfitting
  • TODO: 打印毕设需要的文件,约汪总一次线下
    • 还需要解决上网的问题,汪总回复之后问一下子把
      • 给颖姐发了邮件,等着回复吧…
    • 问一下凯哥是不是可以不存明文(可以存在cfg文件里面)
      • GG,看来必须自己搞一个账号了

2019-10-19

  • 上午摸🐟+修电脑+空想是否思路有修改空间
  • 下午读论文,改PPT
  • 把Prim给做了
  • 晚上给郭哥讲了一下
    • 看上去还比较feasible
    • 需要把基础知识部分改进一下
    • ❔考虑哪里可以hardware-friendly…
      • 一个是训练集的构建方式

2019-10-18

  • 上午整理思路做PPT
  • 下午给雷老师讲PPT,整理论文阅读Post
    • 提的一个比较关键的问题是怎么个Hardware-Friendly
  • 晚上补充文章和思路
    • 重新Review了一下TL的DataSet,还是有一定效果的
    • 接下来改一下PPT发给汪总把

2019-10-17

  • 组会
    • RL在实际应用中获取对应平台的新数据
    • 搭建仿真器来代替在实际场景中训练
      • 快,成本低,操作空间更大
      • 仿真器有抽象/非抽象(更难)
      • 仿真器的粗粒度和细粒度不一,且不同精度之间不能直接迁移(分布不一样)
      • 在类似自动驾驶等实际场景成本高的情况下
    • 以多车避障为背景,构建一个仿真器
      • 局部最优-不动了就
      • 用激光雷达扫周围的东西
    • 涛哥的Work把高低成本的仿真器给结合起来了
      • 对于一个局部子问题上用低成本的搜索可行策略,并且传递回高层次仿真器,类似一个“专家”Advice,或者说是“攻略”
    • 重新讲了一遍RL基础(挺有价值的)
    • 仿真场景
      • 有的时候很难遍历
      • 一个经典的N chains问题,可以向左或者右,左可以+1,右走到尽头再向右会获得很多
      • 小车坡度的问题,向右开不上去,需要向左先走一段再向右
      • Multi-Bandit 多个老虎机,某个老虎机的P很高,两种策略1.先对每个做一个sample,选最好的,玩到死 2. 去趋向效果更好的,偶尔也试一次效率差的(这个概率如何选择?)
        • 后验采样Thompson Sampling-不是Greedy的对每个分布去均值,而是从分布中采样,因而对于劣势的分布方差大的化也可能被认为是一个好方法
    • 一个Work是在NN都SGD Framework下去找
  • Sensetime 宣讲
    • 一个港中文的老师 - 王晓刚
    • 演讲的标题是工业界落地的
    • 整了个自己的计算平台Parrots
      • 多卡的一个操作
    • On Hardware 软硬结合,算法和传感器以及芯片的结合,创新点
      • 提到的是硬件背景
    • 工业布局
      • 智慧城市
        • 大规模的人脸识别;
          • Smart Locker
          • SenseID
        • 跨摄像头的视觉追踪
        • 3D
          • 人脸的建模与特征点(AR)
          • Vtuber(雾)
        • AR Navigation
    • 干货,招人相关
  • Tusimple宣讲

    • 找了货运这样一个相对更加合理的场景
    • 技术

      1. 感知 (主要用Vision)-卡车紧急刹车距离会比实际长,需要感知更远(Lidar)
        • 直接
        • 融合: 统一的表示,融合
          • ?时间上的Alignment
          • 需要将图像从2D-3D,ill-posed,需要额外的辅助信息
          • 雷达的精度实际还是比较差,虽然能够直接获得速度(via 多普勒效应)
        • 1km的感知Demo
          • 一个激光雷达80m左右
          • 短距以及长焦的摄像头
      2. 定位
        • 卫星惯导-可行性不够
        • 摄像头:信息丰富,冗余而且不直接
        • 本质在于匹配
          • 与之前已经有的先验做匹配(也就是和实际的地图做匹配)
          • 绝对与相对相结合
      3. 路径规划
      4. 控制
    • 工程

      1. 车载系统
        • 模块的调度
        • 异构平台支持
      2. 仿真平台-用于集成测试
      3. 基础设施
        • 大规模计算平台
      4. 硬件设备
        • 做自己的摄像头
    • ?硬件平台
    • 广告
    • 汽车不是刚需
    • 5G做云端运算不是特别靠谱
    • 雨天等复杂环境

2019-10-16

  • 上午上课并且把银行卡的问题给解决了
  • 中午整理了一下子装备哈
  • ~~等具体方案出来之后先和郭哥碰一下(大概周五左右) 约了周六下午 ~~
    • ~~ 顺便问一下是不是需要把几个思路都放在里面 ~~
    • 周末把PPT改好给汪总发过去
  • 目前暂时的方案还是以Online Training为一个核心话题点,展开有大概3个思路,都可以Dig Deep
    1. Semi-Supervised
    2. Transfer
    3. Class Imbalance

2019-10-15

  • 上午重新装Ubuntu…
    • 被代理卡了好久…
    • 搞定了ssh显示图形界面
  • 组会
    • 讲了一下Semi的东西
      • 和云端的区分还是比较难,貌似只有隐私问题
        • 作为Online training会有一定的需求
        • 这个WorkFlow对应着一种Framework可能可行
      • 数据集维护,可以存一段时间
        • 理论上只要有比较好的新的数据就可以了
        • 数据集的体量是多少?
          • 目前取得比较好的效果是10x原来数据集大小的样子(对于ImageNet来说我们的实验环境难以接受了)
      • 单纯的Classification提点数

        1. 实现起来不太可能,存储量太大了(这个Training一定是一个企业级的活,我自己做一定不能够这么做)
          • 除非换一个比较小的任务
        2. 本身只是为了提高一点点数,用处不是那么大
          • 往Transfer走相对会更有意义一些,需要深入思考和深入了解一下Transfer Learning
      • 确实Online Training 梯度也会有精度损失,会不会产生影响
      • Class Imbalance也确实是一个需要解决的问题

        • TODO: 约意如神聊一下
      • 关于Online Learning
        • 是一个肯定存在需求的方向
          • 但其实还是取决与这个Online的场景能不能学到所谓”新的知识”

            1. 按照semi的workflow是完全没有的,还是原来的东西
            2. 按照Transfer的方案,其实是去后训一个Classifier
              • 目前看来最Promising的一个⭐
            3. 能做到辨识新的东西
              • 需要一个Incremental了,目前的算法感觉不是特别靠谱
        • 目前来说很多研究感觉实验设计都不太考虑实际应用场景,很多都往所谓AI的“学习能力”在做,不是特别和硬件实现相契合关契合
          • 说白了就是Training的这个Workflow还没有定论,甚至都没有人去解决Label的问题,如果我们最后的目标是硬件实现或者这加速的化,不是很Feasible
          • 所谓的Online偏向Continual“继续学习”的能力
    • 看了一下实验室的手册,准备预约一下机器
      • 内容好…充实
      • 顺手学习一个
        • LDAP(Lightweight Directory Access Protocol)-专业的分布式数据库,写性能差,用于查询,满足树状结构
        • ICP备案
        • BeagleBone是TI与Digikey联合生产的低功耗开源单板计算机(信用卡大小,可跑Linux)
      • 一些数据集在服务器share(或eva_share、/dataset等共享的)文件夹已经有了,可以先问一下你的负责研究生
      • 填写一下参考,占用的容量
      • TODO: 熟悉一下官网上的vim和tmux教程 希望自己不要又从这个简单的弄起
    • ~~ 需要改一下PPT先和汪总发一版 ~~
      • 需要看一下怎么用PPT高雅地画图,太丑陋了(暂时搁置了)
      • TODO: (比较后的,预计是对TL有了一个比较Feasible的方案之后)
      • TL还是相对比较Feasible的,具体的找算法已经思考还需要进一步看(可以给几个Example大概讲一下子他们的)
  • 平头哥讲座
    • CTO,首席科学家 - 谢源
    • DL-BigData-算力的三重Positive Feedback(画饼可以用)
    • AI芯片场景
      • 服务器端;移动终端;物联网 - 需求不同
    • 产品
      • 玄铁CPU-RISCV-16Core-2.5GHz
      • 无剑Soc平台
        • 缩短研发周期
        • 基于中天微的指令集
      • 含光 - AI云上推理
        • 都是剑的名字,很恶趣味
    • 异构计算 Heterogeneous
    • 半导体公司的3 Stage

      1. TI 传统方式
      2. TSMC
      3. HiSilicon - 由系统公司驱动而来
    • RISCV的生态
      • 开源指令集的使用
        • 目前choice相对比较多x86和mips以及arm
      • Chisel - 面向对象的RTL描述语言 (但是编译器其实不开放)
        • 有尝试利用其做敏捷设计的开发
        • EDA工具上中国有欠缺
    • 低功耗,终端(IOT)的芯片

2019-10-14

  • 上午把雄哥作业做了,把显示器和硬盘安排了
  • 读了一下Pytorch文档,有微小收获嗷👍
    • 微软自带的输入法居然可以打Emoji🐂🍺
  • 晚上看了HLS,Vivado2017有奇妙bug,卸载换新的,好像ubuntu系统引导坏了

2019-10-13

  • 继续修改和进一步思考开题的问题
    • 发现了很棘手的问题,这个YFCC不是很好用,有一定阻力,但是不是不行
    • 也有一些新的idea
      • 可以去证明一下定点的网络是否还是具有这样的性质
  • 更加看了一下Transfer learning的tutorial
    • 感觉这玩意还是玄之又玄
  • 复习了一下熊哥的课,名词太tmd多了,淦

2019-10-12

  • 今天主要工作是做开题的准备PPT,稍微更加深入了一下文章
    • 数据集是怎么构建的
    • 大概是怎么训练的
  • 如果需要把题目开小一点的话,可不可以直接从迁移学习入手,训这个CUB数据集,比较好训一点
  • 读了Weakly Supervised Training
    • 网路对于Label Noise的容忍程度比想象中要高一些
  • CUB2011数据集
    • 经常用来做迁移学习
    • 还有细粒度的图像分类
  • 晚上还看了一些关于CNN加速方式以及TL的内容

2019-10-11

  • 感冒依旧,躺了好久…还要参加一个1802的开学典礼,今天就继续思考了一下开题
  • 找到了一个possible的开源代码(但是是做量化的) - 然而kill-the-bits里面还是只是开源了模型没有开源代码 还是要自己刚

  • New Idea
    • 想到了一个让Teacher和Student做时分复用的Idea,还ok
    • 还需要看看Self-Training相关的东西
      • 貌似现在还是一个比较开放的Field,主要描述了一个在Unlabel数据集上利用某一网络进行标注,维护一个新的Training Set(这里有一些玩头)
    • EfficentNet提出对CNN结构设计的一些思考
      • 提出了混合尺度变换
      • 看来已经全面进入NAS时代了
      • 从3个维度开始考虑问题

        1. 深度
        2. 宽度 (体现在CH数目)
        3. 分辨率 (体现在输入图片的大小) 会影响到fine-grain的特征
        • 将三种NN的尺度,混合起来限定为一种Block(代表这使用一定的资源?),依据Block去搜索,相当于约束了搜索空间
          • 至于这个约束条件怎么来的,比较arbitary
    • Pytorch 1.4他lei了

2019-10-10

  • 十一之后刚刚回学校,就持续感冒,约莫有2~3天没好了,对工作时间的大量浪费,下面需要学习养生
    • 早睡早起
    • 能运动运动
    • 吃吃早饭
  • 可持续发展非常重要快些养病
  • 学习了一下通信网络原理
    • 复习了一下之前落下的内容(还真不少…)
    • Chap2 排队论
      1. 一些基础的概念和描述
      2. MM/m/n模型 - 马尔科夫
      3. M/G/1 - 非马尔科夫,无限队列容量
    • Chap3 通信网络服务的建模
    • Chap5的一点尾巴
    • Chap6图论的相关内容(在通信网络的field内与路由密集相关),记住的
      • 几个anecdote-哥尼斯堡7桥;四色猜想
      • 是任意两个节点之间只有一条边的
        • 引申到最小生成树
      • 欧拉图,能够走回来的
        • 充要条件:每个节点的度(degree)都是偶数
  • 组会
    • ReRAM组的主要Contribution
      • 梳理了一下RRAM组的主要contribution(2013-2019)
        • 达成了从器件-组成逻辑结构-系统架构-算法的完整Workflow
        • 在EDA层面搭平台,设计仿真器,以替代spice
      • RRAM非易失存储,高阻表示0,低阻表示1
      • NVM - Non-Volatile Memory非易失存储
      • 说到了一个新坑(据说是汪总现在在Stanford讲的)
        • 针对不同的平台通过NAS直接搜架构,是比较高层的一个说法
          • 不做对应设计,直接暴力搜。。。太狠了
    • 曾C讲的关于FPGA虚拟化的一些Work
      • 主要是对FPGA云服务器,单块FPGA做多任务复用的
        • 不用TDM那样效率低,实际用的还是空分复用
      • 存在一个动态负载(Dynamic WorkLoad)的问题,不知道新的任务什么时候到来
      • 主要任务-提高修改FPGA配置的速度
        • 完整重配置-生成bit-让EDA去选择如何布线去生成架构,太慢了-需要1day
        • 基于指令集的FPGA设计(DPU)需要10-100s
          • 目前的指令集,缺少对多PE可控并行,以及动态重配置(将配置的指令分为Static和Dynamic的,Static的只需要执行一次)的支持

            感觉自己对基于指令集的FPGA设计理解不够深刻,也就是DPU是如何开发的,每一步做了什么,映射到这个问题上面是怎么更新

  • New Idea

    • Multi-Precision CNN 对CNN来说不同层的敏感度是不一样的(可量化位数)

🤔自省🤔

  • 认为自己不熟悉的领域过于万能,希望别的部分能够万能。(本质上还是一种程度上的推卸责任)
  • 想得太往后,比如这一次的Semi-Supervised Learning,郭哥说的现在先想怎么把故事讲好
  • 自己很容易追求短期内工作/学习获得的短暂成就感,但是没有及时巩固(或者所选择学习的东西不太有机会及时巩固),比如Graph的那次
  • 越来越感觉DL的某个领域到了这几年发展的论文有种比较排斥的感觉,不知道是超出了自己的认知范围还是为什么,我总是感觉他们在找水点,而没有靠谱的方案,反思一下自己认知里的“靠谱”是不是鼠目寸光了
  • 所谓的去寻找硬件友好的算法,其实会排除掉有效东西

Done

⌛ Today

  • 看AMC去找heuristic的剪枝的经验性方法看看能不能和我们对应上
  • ~~ 调昨天那个崩掉的Res18的plan1,到底是为啥 ~~
  • 查资料finetune res50的办法
    • 现在还没有搞定,需要请教一下凯哥
  • ~~ Sensitivity Analysis ~~
    • 还需要拿上梯度去对照
  • 起实验
  • plot.py一起`
    • ~~ FLOPs, alpha(12x), test_acc ~~
    • grad compute_loss; task_loss (带和不带relu)
  • MobileNet实验
    • Baseline
    • 扫一遍
  • 改图(文献里的FlowChart) *~~ introduction ~~

⏰ ShortTerm

  • Prune
  • 代码
    • 把按照时间做log的东西改过来先)
    • ~~ 加上估计sparsity的模块 - Our Plan ~~
    • morphnet的truncate方式修改
    • ~~ save-every / prune_trainer ~~
    • ~~ group_lasso的具体实现方式是什么? ~~
    • ~~ 要一下生成yaml的脚本 ~~
    • ~~ re 一下改state dict ~~
    • ~~ 架起来imagenet的baseline,开始跑 ~~
  • 写一个finetune
    • 继续调cifar10上的我们的结果
  • 写mask_vgg
  • 总结文章related work
    • ~~ 加一个表格 ~~
    • post-train和
  • 添加实验
    • tiny imagenet直接从一半开始
    • 改state dict,能直接从别人给的起手
  • 压到了budget直接停止开始tune
    • 完成了..
  • ~~ BN加Regularization作为一项,参与weight更新 ~~
  • 改成每个epoch存储一次
  • ~~ res50 ~~
  • ~~ 改split ~~
    • ~~ 需要一个infinte ~~
  • ~~ update alphas every N ~~
    • ~~ update M steps for alpha ~~
  • ~~ 检查计算量是否正确 ~~
  • ~~ 添加存储画图素材 ~~
    • ~~ 添加vgg实验 ~~
  • 实验Settting
    • plan1修改
      • ~~ grad normalize ~~
      • ~~ Grad累计,multi-mc ~~
      • ~~ temperature ~~
      • ~~ adam思想不符 ~~
      • ~~ compute loss用实际的而不是keep ratio ~~
      • ~~ 是在压第一层 ~~
    • ~~ Baseline ~~
      • Post-Training: 相对比较白给
      • MorphNet
      • GroupLasso
    • 写一个checksparisty和test的脚本
    • ~~ Plan1 的SparsityRatio调不了…(可能不是稳定,就是超参数很耐调,我也调不动) ~~
      • ~~ 可以调了…按照数量级调整 ~~
    • ~~ 画图脚本 (Acc-Sparsity) ~~
      • ~~ 还是往里面加保存把. ~~
    • ~~ plan1从pretrain开始 ~~
    • ~~ 和原文对一下结果 ~~
    • ~~ 然后改VGG ~~
  • ~~ 思考还有什么图可以画 ~~

⌚ LongTerm

  • 补充Bayesian相关的知识
    • 有一个Bayesian的教材有时间可以读(希望寒假有时间)
  • NAS Paper Digest
    • NAS Surgery
  • 更新定点训练框架
  • ConsistencyTraining硬件规划

TODO (2020-03) ⏰

  • 一个Online Learning的场景的梳理(Proposal)
  • Active Learning整理 (暂时搁置)
  • SemiSupervised整理
  • 整理gates实验的新材料
  • 新锅
    • 背景知识的GCN Survey
    • 下周二,和微电所的交流,硬件Training的可能方向
  • 多看CPC,做PPT
  • 毕设中期相关内容
    • 需要补每周进度
    • 需要改PPT (题目微调的问题)
    • 需要写中期报告
  • GATES文章修改
  • 需要更新的文章阅读
    • FewShotSurvey
    • S4L结论

TODO(2020-04)

  • GCN Survey finished
  • Surgery
    • Shared-Weights debugging
  • 毕设中期相关内容
    • Apply Quantization

TODO(2020-09)

  • BNN-Nas
    • 改flops的计算
    • 在final-model中加上inter-cell connection
    • 选择出一个比较好的preprocess / downsample策略,重新起一次搜索
    • 整理目前的idea
  • 整理bnn的更多scheme
    • 搞清楚flops的计算方式
    • 特别是MeliusNet和train from scratch
    • 可能的话ck一下BMXNet的实现
      • 框架实现了比我们多很多的bnn功能 1. 测试activation不带scale之后是否能够正常 2. 支持scale用grad更新,而不是从weight.abs().mean() 3. 看下offset的支持
      • 目前看上去好像是有一个offset把所有东西都给抬正了(但是这样relu有啥用呢)
      • 我无限迷茫?这个no scale loss直接爆炸
    • 阅读macro-ss的内容
  • awnas doc
  • eccv开会
  • awnas manual(JMLR)
    • 需要看一下大概的格式和需要什么内容,arrange一下,从readme转化一下子
    • Submission Detail
    • 感觉目前还是少一些内容,需要更多的废话(少了一页左右)
    • 加diagram
    • 把readme中的objective放进去

  • new-idea: channel维度diff加入darts的flow
  • new online learning(federated learning stuff)
  • DSA hardware experiment

Long-Term FLAG

  • 在学期结束之前给汪总一个详细的Research Proposal
    • 具体讲之前和杭老师report一下,看看意见
    • 和大哥们要一要组里最近规划的情况
  • Eric的项目
    • 需要读和梳理的paper [DONE]
    • 继续pointnet-based的实验推进,看新的distill结果 [DONE]
    • 一些可视化以及分析结果
      • pointnet的feature map [DONE]
      • 3-points Interpolation的实现实际的距离有多少 [DONE]
    • visulize the loss [TODO]
  • BNN-related
    • 整理BARS的文章总结以及可以改进的点,下周等妃神毕设结束之后开始准备recycle
      • 整理BARS的内容进appendix
    • 新框架的survey,梳理已经读的相关的paper到Sheet里 [DONE]
  • 低比特框架相关
    • 充实paper list,抄别人的list [DONE]
    • 周四讨论,和凯哥戴导交流BNN相关 [DONE]
    • 梳理biact的comput flow,画图
      • 继续补充接口和可能需要实现的方法
  • Ray的项目
    • 实现用Rgeression-basedDT去拟合 [DONE]
      • 理解DT是怎么做的 [DONE]
    • 解释SaliencyMap,从Confusion Matrix找一些take-away message [DELAY]
  • 考试
    • 周一去看一眼自然辩证法材料 [DONE]
  • Jun:
    • 录单片机视频
    • 给单片机定时器写文档,划水 [DONE]
  • 什么时候梳理整理一下plotly的接口 [DELAY]