CCNN
Chinese Convolutional Neural Networks

CCNN,一款完全自主开发的国产人工智能学习推理框架,自带算法,支持多个平台,可用于多元回归、多元分类、图像、语音及文字识别等深度学习领域。该学习推理框架GPU加速可以兼容使用CUDA(美国Nvidia公司框架)、Rocm(美国AMD公司框架)及OpenCL(全球开放的、免版税的)开发标准,仅仅使用CUDA、Rocm或OpenCL最基本的多线程计算网格划分操作及线程同步。没有GPU设备的时候,也可以使用CPU多线程加速,CPU加速使用C++ OpenMP并行计算,但相比GPU速度会慢很多。CCNN无论是GPU、CPU所用的算法程序全部自己实现,没有用到第三方库。
框架支持通过配置XML来描述各个算子参数及网络连通情况,来配置不同的神经网络结构,各类算子支持自动微分。目前配置了:多元回归、多元分类、VGG16 、VGG19、ResNet50、ResNet101、SegNet、Deelplab v3、UNet、SSD、DSSD、YoloV3、RNN、GRU、Seq2Seq(带注意力)、Bert、Transformer大模型等,也可以自己调用SDK配置各类网络结构。
框架已支持多卡并行训练、推理。预计2025年5月份发布新版本,支持fp16,fp8精度。2025年9月份,支持集群训练、推理。
推荐国产龙芯+OpenCL。
一 snapshot:






二 运行环境:
CCNN采用宏定义来兼容不同的平台及编译器,对于系统及编译器的不同,使用不同的系统函数来实现同样的功能。主要体现在线程的API函数、字符串处理等少量系统函数。程序编译的时候根据宏定义选择对应的系统函数,实现维护开发一套源代码,可以在不同环境下使用运行。
目前CCNN可以运行在Windows、Ubuntu Linux、UOS Linux、arm Linux、龙芯Linux及Apple Mac系统中。
不使用GPU加速的时候,不需要GPU显卡设备,使用GPU需要安装对应的显卡驱动。
使用GPU加速的时候,使用CUDA、Rocm或OpenCL计算框架,GPU加速设备可使用NVIDIA显卡(CUDA)、AMD显卡(OpenCL、Rocm)、Intel显卡(OpenCL)、MAC GPU(OpenCL)、国产摩尔线程S80(OpenCL)显卡及国产风华二号(OpenCL)显卡。
三 运行速度测试:
人工智能的计算量主要为全连接、卷积算子的计算。同时不同的网络结构、不同的GPU硬件,不同的参数配置,运行时间不同,下面给出一些部分实验数据。以BatchSize为16,不同的网络模型,进行一次学习迭代所需的平均时间。
对应模型及GPU
|
YOLO V3
|
ResNet50
|
DSSD
|
SegNet
|
RX580(OpenCL)
|
15秒
|
5秒
|
39秒
|
4秒
|
GTX1080(CUDA)
|
5秒
|
1.2秒
|
9.8秒
|
3秒
|
7800XT(Rocm)
|
1.8秒
|
1秒
|
3.5秒
|
1秒
|
四 算法功能:
-
各个层的输入及参数,每个层对应一个张量算子,提供卷积、反卷积、全连接、偏置、激活、Batch Norm、Layer Norm、L2正则化、随机失活、池化、极大采样、剪切等,以及复合算子FCA、CBA、ResN、ResU、融合张量、Btnk1、Btnk2、OneStage、Softmax、TensorToLayer、SumLayer、RNN、GRU、自注意力、多头注意力、transformer等。
-
损失函数:SoftMax With lost、Focal Lost、MSE、RMSE、MAE
-
优化器:SGD、L2正则化、带动量更新
-
批处理大小、最大迭代学习次数、保存学习权重文件次数、学习率;
-
GPU、CPU内存使用大小配置;
-
样本增强:几何变化增强、高斯正态分布增强
-
图像读取存储,缩放,通道格式变换;
- 样本随机: 多线程随机读取BatchNum组数据
五 内存:
使用参数内存池、计算空间交换内存池,不动态开辟内存,计算过程中使用的内存全部来源于内存池,数据在网络计算流动的时候快速指向定位,没有多余的复制;相比其它人工智能框架极大的减少对内存、GPU显存的需求量。
六 训练及推理:

训练:使用自带的训练程序及配置XML文件来训练,也可以通过调用SDK构建网络训练。
推理:通过调用SDK推理,网络结构可以从XML加载或SDK加载。
七 开发SDK下载
八 联系方式
反馈问题及技术交流: zqgrmkl@sohu.com