Public Docs
【模型量化】深度学习模型量化 & 量化理论 & 各平台的量化过程 & 硬件加速
【TVM】TI关于TVM的使用测试与分析
【LLM&LVM】大模型开源工程思维导图
【北航卓越工程师】《汽车前沿技术导论:智能驾驶》讲义
【工具链】Yocto使用介绍——使用Yocto创建一个树莓派的系统镜像
【工具链】使用ssh+dialog指令设定服务器指定用户仅容器访问
【推理引擎】一篇关于模型推理的详细对比与学习
【推理引擎】关于TVM中的Schedule优化详解(On going)
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
【TVM】在TVM Relay中创建一个自定义操作符
【STT+LLM+TTS】如何使用语音转文字模型+大预言模型+语音生成模型完成一个类人的语音交互机器人
【RAG】 通过RAG构建垂直领域的LLM Agent的方法探索
【RAG】GraphRAG精读与测试(On going)
【AI Agent】MetaGPT精读与学习
【AI Base】Ilya Sutskever 27篇必读论文分享清单
【Nvidia】Jetson AGX Orin/ Jetson Orin nano 硬件测试调试内容(On going)
【BI/DI】LLM Using in BI Testing Scenario (On going)
【Nvidia】How to Activate a Camera on Nvidia Platform in Details
【RAS-PI】树莓派驱动开发
【行业咨询阅读】关注实时咨询和分析
【mobileye】2024 Driving AI
【mobileye】SDS_Safety_Architecture
【yolo】yolov8测试
【nvidia】Triton server实践
【alibaba】MNN(on updating)
【OpenAI】Triton(on updating)
【CAIS】关于Compound AI Systems的思考
【Nvidia】关于Cuda+Cudnn+TensorRT推理环境
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
【Chip】AI在芯片设计和电路设计中的应用
【Chip】ChiPFormer
【Chip】关于布线的学习
【Chip】MaskPlace论文精读与工程复现优化
【gynasium】强化学习初体验
【Cadence】X AI
【transformer】MinGPT开源工程学习
【中间件】针对apollo 10.0中关于cyberRT性能优化的深度解读和思考
【Robotics】调研了解当前机器人开发者套件(on updating)
【Robotics】ROS CON China 2024 文档技术整理与感想总结(上2024.12.7,中2024.12.8,下场外产品)
【algorithm】关于模型、数据与标注规范的平衡问题
【nvidia】DLA的学习了解与使用
【nvidia】构建nvidia嵌入式平台的交叉编译环境(其他环境平台可借鉴)
文档发布于【Feng's Docs】
-
+
首页
【Chip】ChiPFormer
# 1. Description * https://github.com/laiyao1/chipformer * https://github.com/FengD/chipformer_custom 测试理解完,DeepPlace,MaskPlace之后,根据项目需求,详细学习了一下chipformer,并针对开源工程和论文本身,fork了一下github工程进行了一些调整和学习。 # 2. Introduction `ChiPFormer: Transferable Chip Placement via Offline Decision Transformer ICML203` * 作者自述的核心贡献: 1. 第一个学习可移植(可以高效迁移到没见过的芯片布局上)布局策略的offline方法; 2. 公开了一个芯片数据集;包含12个芯片和每个芯片的500个布局,可以在google drive上下载;(https://drive.google.com/drive/folders/1F7075SvjccYk97i2UWhahN_9krBvDCmr?usp=sharing) 相比较于之前的方法,个人理解的理解和解读: 1. (与作者自述第一点相同)相比较于之前的其他方案,虽然online训练能够取得不错的效果,但是每当有新的电路出现时,都需要重新执行online训练,迁移能力和效率都比较差。而能够实现这一步骤其中有几个非常精巧的设计; * 直接使用GPT结构,transformer base的方案不论是在繁华性,还是考虑未来数据的增加和资源变多,基于scaling law进行扩增,都能有一定的性能扩增,在便捷度和扩展性方面有较大优势;同事不论是当前的few shot方案,还是在GPT结构上添加一些微调结构,也能进一步的适应迁移; * maskplace中作者虽然提到了图结构但是没有实际使用,而deeplace等方案只是使用了一个简单的GCN。而chipformer中直接使用GAE或者VGAE直接学习图结构更深层的特征表示,并且本身这些过程都是无监督的,无需对数据进行标注。整个方案既满足了性能需求,也弥补了wiremask,position mask和View mask中无法体现出电路本身的特征信息的不足; 2. 对于历史专家数据的使用;chipformer的专家数据因为考虑到时序信息,是使用maskplace生成的500组随机结果;后续如果使用人工的专家数据,会取得更好的效果; 3. 对于mixed placement的效果; 4. 相比较于maskplace的开源工程,chipformer的工程质量有较大的进步; # 3. 论文精度以及和开源工程的对比与修改 1. 工程中没有对结果进行可视化的部分,关于HPWL和cost的计算也没有添加,tensorboard的相关使用都注释掉了,整体进行了复原; 2. 针对于部分参数在各个文件中重复定义,容易出错的问题,添加了config.py文件,统一管理 pretrain和finetuning的参数; 3. 使用github lfs将一些大文件进行上传归档,方便读取以及全流程使用; ## 3.1 执行时间 从执行时间来看,ChiPFormer的整个训练工程的用时具有明显优势。作者在论文中提到,使用的是一个6layer 8head 128 embeding的结构,刚好需要24GB的显存,但是工程中从备注可以看到作者是有尝试过12layer 12head 768 embedding的gpt2对的结构的,双RTX3090刚好能跑动。我因为使用的是4090单卡,所以保持论文中的配置不变  ## 3.2 整个方案过程offline RL 下图清晰的展示了chipformer和其他方案的区别。从b图可以看到,针对marco单元的布局中,先在已经有的数据集上进行offline训练,如果是已经见过的电路,则可以直接推理出结果。如果是未见过的电路,再在新的数据集上进行fine-tuning,根据Dreamplace中基于优化的方案对standard cell进行布局,但是macro cell仍可以移动。  ## 3.3. 骨干网 * 左侧是采用VGAE进行特征提取。 A是adj矩阵,表示节点之间的连接关系,X是节点的特征特征维度为4,分别是长、宽、面积和顺序,实际使用时进行了归一化处理。考虑到adj的影响,实际对图的`度`进行了一些列的处理,见preprocessing.py preprocess_graph,这是避免图出现同质化现象的一系列标准操作。完成操作VGAE推理得到Z,Z是一个电路VGAE的最终特征结果。VGAE也是GAE添加了一个生成式网络的标准高斯噪声层,使用一个额外的可学习GCN模块。输出一个1*32的特征向量。多个特征向量叠加,在每个特征维度进行avg pooling,得到HI token。用于右侧部分的Transformer网络的训练。 * 右侧的Transformer网络是使用的一个minGPT的结构。state token的方案和maskplace相同,分别计算了position mask,wiremask和Viewmask,分别作为一个1*84*84的图层,concat之后,使用一个三层卷积和一个全连接进行特征提取embedding操作,转换为state token。action token就是一个macros的x y坐标。然后根据2T+1个token 预测 action(t+1)。  # 4. 复现实验结果 ## 4.0 数据 * 基于google drive placement benchmark的数据解压后得到所有数据的node、net、pl、scl等文件作为benchmark数据。  数据定义见pdf[【附件】Benchmark_Format.pdf](/media/attachment/2024/11/Benchmark_Format.pdf)。 <iframe src="https://blackmanba.top/media/attachment/2024/11/Benchmark_Format.pdf" style="width:100%;height:500px;" frameborder="no"></iframe> * 除了benchmark用来做对比训练图网络生成cirsuit token和损失计算外,google网盘还额外提供了部分用于训练的专家数据,用于state token和action token的生成。   关于expert文件的数据量为什么是5120还没太理解????? ``` python import pickle import numpy as np pkl_file_path = "./data_expert/adaptec2-11082115-expert-data.pkl" with open(pkl_file_path, 'rb') as file: data = pickle.load(file) print(data) print(len(data['lengths'])) print(len(data['actions'])) print(len(data['terminals'])) print(len(data['rewards'])) print(len(data['obs_pos_mask'])) # output # 5120 # 5120 # 5120 # 5120 # 5120 ``` ## 4.1. VGAE训练 首先基于全量的12个circuit 尝试训练了GAE和VGAE两个版本的circuit token。然后使用VGAE的结果进行pretrain   ## 4.2. pretrain 按照论文中的描述,使用adaptec1、ibm01、bigblue1三个circuit作为pretrain的数据。原论文中将数据分成了4组,分别是1,2,3,4。使用2,3,4共9个数据作为pretrain的训练。使用1作为finetuning的训练。我这边先进行了一个初步测试。看一下hwpl和cost的结果。  可以看到 整个过程基本在训练到600个iter左右收敛,hwpl 分别在adaptec1 8.6 * 10^5, bigblue1 3 * 10^5, adaptec1 4.3* 10^5, 基本都与论文标称的指标一致。   ## 4.3 finetuning 使用4.2中训练的模型直接进行推理,使用660 epoch的结果110*10^5已经由于ChipFormer1的结果,然后执行finetuning。 ``` T_rewards [-56885.0, -74757.0, -46373.0, -50640.0, -85094.0, -43640.0, -82897.0, -48110.0, -48561.0, -79409.0] T_scores [1.2889375000000005, 1.0655374999999994, 1.4203375000000005, 1.3669999999999995, 0.9363250000000002, 1.4545, 0.9637875000000001, 1.3986250000000002, 1.3929874999999998, 1.0073874999999999] target return: 0.00, eval return: -43640.00, avg return: -61636.60 len self.net_min_max_ord 2335 T_rewards [-59582.0] T_scores [1.255225] len self.net_min_max_ord 2335 adaptec2-N: hpwl = 11045637.000000037, cost = 11825500.666666668 ``` 可以看到在差不多10个epoch,3分钟之后,就直接优于了maskplace online trining的结果  # Annexe * https://arxiv.org/pdf/2306.14744
dingfeng
2024年11月22日 11:28
286
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码