Skip to content

Commit

Permalink
Merge pull request #92 from PAICookers/dev
Browse files Browse the repository at this point in the history
Release: v1.0.0
  • Loading branch information
KafCoppelia authored Apr 29, 2024
2 parents c35cb7e + 6d20e1f commit 155b8fb
Show file tree
Hide file tree
Showing 81 changed files with 6,452 additions and 3,891 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/pytest-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Python CI with pytest

on:
pull_request:
branches: [master, dev]

jobs:
pytest-ci:
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry
uses: abatilo/actions-poetry@v2
with:
poetry-version: "1.8.2"
- name: Install test dependencies
run: |
poetry install --with test
- name: Run pytest
uses: pavelzw/pytest-action@v2
with:
verbose: false
emoji: false
job-summary: true
custom-arguments: "-q"
custom-pytest: "poetry run pytest"
click-to-expand: true
report-title: "Test Report"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,4 @@ cython_debug/

.vscode
debug
*.drawio
9 changes: 5 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ repos:
stages: [commit]

- repo: https://github.com/psf/black
rev: 24.2.0
rev: 24.4.0
hooks:
- id: black
stages: [commit]
Expand All @@ -26,7 +26,7 @@ repos:
stages: [commit]

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
Expand All @@ -35,15 +35,16 @@ repos:
- id: check-json
- id: check-toml
- id: check-symlinks
- id: check-merge-conflict
- id: mixed-line-ending
- id: name-tests-test
- id: requirements-txt-fixer
args: [--pytest-test-first]

- repo: https://github.com/python-poetry/poetry
rev: 1.7.1
rev: 1.8.0
hooks:
- id: poetry-check
- id: poetry-lock
- id: poetry-export
args: ["-f", "requirements.txt"]
- id: poetry-install
43 changes: 42 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,47 @@
## v1.0.0a2

- 修复 `paicorelib` 错误的导入与版本约依赖

## v1.0.0a3

- 添加了示例程序,MNIST双输入端口两层全连接网络
- 添加示例
- 修复工作流版本错误
- 修复神经元膜电位溢出处理错误
- 修复神经元分组的计数错误

## v1.0.0a4

- 重命名突触连接类型 `ConnType``SynConnType` ,现在通过 `pb.SynCnnType.x` 调用。例如,`pb.SynCnnType.All2All`

## v1.0.0a5

- 支持无限嵌套深度的网络
- 支持全展开2D卷积算子构建与部署(`padding` 不支持)
- 修复当 `keep_shape=True` 时,神经元状态变量在运行时尺寸错误

## v1.0.0a6

- 新增 `Always1Neuron` 神经元,该神经元将在工作期间持续输出1,不得单独存在,需存在前向突触与其连接。

## v1.0.0a7

- 支持全展开1D卷积算子构建与部署(`padding` 不支持)

## v1.0.0b1

- 提高 `numpy` 依赖版本至 `^1.24.0`
- 修复神经元输入累加错误
- 修复当权重为 `np.bool_` 且关闭权重精度优化选项( `weight_bit_optimization` )后,仍视为 `np.int8` 的错误
- 支持混合精度权重的部署

## v1.0.0rc1

- 支持全展开1D/2D转置卷积算子。所有的卷积算子均支持 `padding`
- 新增直接编码器
- 修复后端的一些错误

## v1.0.0

- 提高 `paicorelib` 依赖版本至 `^1.0.0`
- 当出现重名 `paibox.PAIBoxObject` 时将自动修改名称进行规避
- 完善测试CI
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
<a href="https://github.com/PAICookers/PAIBox/blob/master/pyproject.toml">
<img src="https://img.shields.io/pypi/pyversions/paibox">
</a>
<a href="https://github.com/PAICookers/PAIBox/releases/tag/v1.0.0a3">
<img src="https://img.shields.io/github/v/release/PAICookers/PAIBox?include_prereleases&color=orange">
<a href="https://github.com/PAICookers/PAIBox/releases/tag/v1.0.0">
<img src="https://img.shields.io/github/v/release/PAICookers/PAIBox&color=orange">
</a>
<a href="https://www.codefactor.io/repository/github/PAICookers/PAIBox">
<img src="https://img.shields.io/codefactor/grade/github/PAICookers/PAIBox/master?color=red">
Expand All @@ -23,4 +23,4 @@ PAIBox使用指南:[Guide-of-PAIBox](docs/Guide-of-PAIBox.md)

高效编写测试项目指南:[Guide-of-Test](docs/Guide-of-Test.md)

TODO:[TODO List](./TODO.md)
[Changelog](./CHANGELOG.md)
32 changes: 24 additions & 8 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,25 @@
- [x] `tick_wait_start``tick_wait_end` 前/后端支持
- [x] 网络节点间自定义延迟( `tick_relative` )前后端支持
- [x] 神经元密集分配策略(待验证)
- [ ] 半折叠卷积算子前后端支持

- 功能模块支持

- [x] 全展开1D卷积
- [x] 全展开2D卷积
- [ ] 逻辑算子:与、或、非
- [ ] 二维矩阵转置
- [ ] 三维矩阵转置
- [x] 全展开1D转置卷积
- [x] 全展开2D转置卷积
- [ ] 脉冲加、减法
- [ ] 残差结构
- [ ] 半折叠2D卷积

- 多层次结构网络组件的发现、数据流验证与后端解析

- [x] 对有层次结构(子网络例化复用等情形)的网络模型,实现在所有层次上网络组件的发现、数据流与后端解析实现
- [ ] 局部连接包装成单个算子,实现在所有层次上网络组件的发现、数据流与后端解析实现。考虑用户调用接口
- [ ] 局部连接包装成单个算子,实现在所有层次上网络组件的发现、数据流与后端解析实现

- 带有约束的路由坐标分配

- [ ] 支持芯片阵列部署
Expand All @@ -28,13 +42,15 @@
- [x] 资源+延时/吞吐率兼顾:在资源优先的基础上,可**叠加使用密集分配策略**,对未分配满的物理核尝试分配同一节点的其他神经元段。相较于单纯使用资源优先策略,使用更少的物理核
- [ ] 自适应策略:根据网络结构,对各层 `unrolling factor` 做全局最优化设置,且预留接口以手动约束某些节点

- [ ] 混合精度权重支持(已添加权重精度优化的**编译选项**
- 对于网络中存在不同精度的突触情况,需要在后端实现对不同精度突触分组的处理。预期提供一个编译选项:
- 当开启时,当不同精度突触被分在同一组时,将按照最大精度权重进行,当分在不同组时,按各自权重处理
- 当关闭时,不同精度突触将**不被分在同一组**(即分割CB时存在约束)
- [ ] 混合精度权重部署优化:对于网络中存在不同精度的突触情况,需要在后端实现对不同精度突触分组的处理。预期提供一个编译选项:

- [x] 当开启时,当不同精度突触被分在同一组时,将按照最大精度处理;当分在不同组时,按各自精度处理
- [ ] 当关闭时,不同精度突触将**不被分在同一组**(即对初次分配的CB进行分割,分割后得到的多个CB仍处于同一RG内)

- [ ] ANN模式前后端支持

- 目前仅支持芯片的SNN模式。要想支持ANN模式,前端上需要支持ANN模式的算理。同时,ANN/SNN模式是物理核的行为,因此当网络拓扑中同时存在两种模式的神经元时,需要以此为约束条件,从而影响分组结果(类似第6点。例如,同为ANN模式下的不同神经元可被分在同一组)

- [ ] 神经元计算模型随机性仿真

- 基于硬件神经元计算机制,实现带有部分随机数的计算机制。并考虑与硬件的实现相接近的程度(能否接近实现与硬件一致的随机数发生行为)
- [ ] 网络节点间自定义延迟( `tick_relative` )尝试ringbuffer结构优化
- 目前使用的delay_register方案,将在每个神经元组后方申请较大内存,用于存放delay至后继节点的数据。可尝试使用ringbuffer的思路对此结构进行优化。
Loading

0 comments on commit 155b8fb

Please sign in to comment.