FPGA实验小白
老哥,你这个想法很酷,但Artix-7上搞Diffusion真是硬核。我做过类似的,分享点经验。核心是压缩模型,别上来就搞硬件。先用PyTorch把UNet提取出来,然后用工具如NNCF或PocketFlow做量化感知训练(QAT),INT8是底线,如果精度掉太多,可以试试混合精度(关键层保持INT8,其他INT4)。剪枝建议用迭代式剪枝,每次剪一点微调,直到FLOPs满足。硬件上,我推荐用HLS写,别手写RTL了,时间不够。重点优化卷积计算,用line buffer和Winograd算法减少乘法器。架构用分时复用,一个PE阵列处理所有层,通过配置切换权重。开源参考可以搜“FPGA-based Accelerator for Generative Models”,GitHub上有些简单例子。注意内存带宽,Artix-7的DDR带宽有限,尽量把权重放在片上BRAM,如果放不下,考虑压缩权重。常见坑是精度损失太大,生成图像全是噪声,所以软件阶段要多测试。
