1 月

目前的组会安排大致是每周二 10:00 pm(BCI) 和每周五 10:00 pm(121) 各一次.

1.16

整理了一下个人博客的笔记和 s4 的代码库. 但是在会上导师并没有对此有积极的反馈, 大致观点为:

  • 什么时候能学完这个博客页面

(我的回应是我也不太清楚, 因为我不能确定学习的速度)

  • ssm 只是 BCI 大课题里的很小的一个模型, 现在学得太慢了, 研究生会有很多没有学过的东西.

  • 不应该花太多时间学到能给别人讲解的程度


在寻求了 ChatGPT 的帮助后, 大致的思路是:

  • 导师想看到的不是 “学到了什么”, 而是有具体的 “研究产出”

  • 因此, 给导师展示自己的笔记/代码库其实是一个错误的思路.

诚然, 以近乎为零的基础搭建一个神经网络的代码库, 需要读懂/推导/实现, 是一个很辛苦的过程. 但是这并没有什么卵用.


GPT 给我进行了这样的支招:

  1. 停止展示私人笔记.

可以继续学习的过程, 但是不要再给导师展示了. 除非导师主动问起.

  1. 工作重点回到 POSSM 的复现上.

由于时间比较紧张, 最好尽快学完教学博客页面, 理解其代码后回到 POSSM 的复现上.

上次其实已经指出了目标是 POSSM 对于 Falcon 数据库的延展性(是否跟声称的那样具有较好的迁移性).

那么主要的路径就是:

  1. 以目前学习 s4 实现的代码基础, 重新看 my_POSSM 库的代码, 理解 forward 数据流在模块中的传递.

  2. 在保持 POSSM 其余结构不变的前提下, 比较 GRU 和 S4 模型之间的差异(解码速度, 收敛速度, 推理延迟…)

根据 Hueber(2024), 硬件的指标有

  • decoding performance.

    $R^{2}$ 和 RMSE(均方根误差)/MSE(均方误差) 等指标衡量解码性能.

# y_true, y_pred: (T, 2) or (batch, T, 2)
ss_res = ((y_true - y_pred) ** 2).sum()
ss_tot = ((y_true - y_true.mean()) ** 2).sum()
r2 = 1 - ss_res / ss_tot
  • latency

inference latency per time bin(单个时间步的推理延迟)

import time
torch.cuda.synchronize()
t0 = time.time()
_ = model(spike, spike_lengths)
torch.cuda.synchronize()
latency_ms = (time.time() - t0) * 1000

real-time constraint (inference latency < bin size)

  • computational efficiency

Parameter count

sum(p.numel() for p in model.parameters())
  • stability

收敛 epoch 数; validation; training instability

需要注意到的是, 虽然师兄写的 toy model(my_POSSM) 使用的是 torch 框架, s4 教学博客依赖于 jax 和 flax 库, 但是这并不代表着需要自己使用 torch 重新构造一遍 s4 的实现. 直接寻找现有的 torch 实现才是更安全可靠的方法.

1.19

idea: 如何使用 snn 来对 possm 使用的数据库进行分析?

观察 LIF neuron 的实现.

如何评估一个算法的功耗?