VQNet Changelog ###################### [v2.17.0] - 2025-4-22 *************************** Added =================== - 增加了张量网络后端实现量子线路模块功能,增加基础逻辑门、测量、复杂量子线路支持。 - 增加了张量网络后端对大比特量子线路构建功能实现。 - 增加QTensor.swapaxes接口,为swapaxis的别名。 Changed =================== - 使用openblas进行矩阵运算。 - 使用sleef进行CPU SIMD运算。 - 删除qnn.MeasurePauliSum。 - 当torch低于2.4.0版本时候,使用torch后端计算抛出警告。 Fixed =================== - 解决保存和载入模型时候QMachine states无法载入的问题。 - 解决layernorm,groupnorm当affine=False时候的问题。 - 解决 QuantumLayerAdjoint在eval模式下的问题。 - 解决 `toCPU()` 的bug。 - 解决 BatchNorm1d,BatchNorm2d, BatchNormNd 在affine=False 的bug。 [v2.16.0] - 2025-1-15 *************************** Added =================== - 增加使用pyqpanda3进行量子线路计算的接口。 - MeasureAll接口支持复合泡利算符。 - 增加DataParallelVQCAdjointLayer以及DataParallelVQCLayer接口。 Changed =================== - 移除ONNX过时功能,移除集成pyqpanda的绝大部分接口,保留示例代码中使用的部分接口。 - VQC_QuantumEmbedding接口修改 - 安装本软件包时不再同时安装pyqpanda, 而是同时安装pyqpanda3. - VQC接口支持入参使用 `x[,:2]`,原先只支持 `x[:,[2]]` 形式。 - 本软件支持3.9,3.10,3.11版本python 不再支持python3.8 Fixed =================== - 解决发现的内存泄漏问题; - 解决发现的GPU随机数问题; - reduce相关操作,可支持的数组的最大维度从8提升到30; - 优化代码,提升了部分情况下的python代码运行速度; [v2.15.0] - 2024-11-19 *************************** Added =================== - 增加 `pyvqnet.backends.set_backend()` 接口, 在用户安装 `torch` 时候, 可使用 `torch` 进行QTensor的矩阵计算, 变分量子线路计算, 具体见文档 :ref:`torch_api` 。 - 增加 `pyvqnet.nn.torch` 下继承于 `torch.nn.Module` 的神经网络接口, 变分量子线路神经接口等, 具体见文档 :ref:`torch_api` 。 - 增加量子大模型微调模块微调训练介绍,具体步骤可以见文档 :ref:`llm` 。 Changed =================== - diag接口修改。 - 修改all_gather实现与torch.distributed.all_gather一致。 - 修改 `QTensor` 最大支持30维度数据。 - 修改分布式功能所需 `mpi4py` 需要4.0.1版本以上 Fixed =================== - 部分随机数实现由于omp无法固定种子。 - 修复分布式启动的部分bug。 [v2.14.0] - 2024-09-30 *************************** Added =================== - 增加 `VQC_LCU`, `VQC_FABLE`, `VQC_QSVT` 的block-encoding算法, 以及qpanda算法实现 `QPANDA_QSVT`, `QPANDA_LCU`, `QPANDA_FABLE` 接口. - 增加整数加到量子比特上 `vqc_qft_add_to_register`, 两个量子比特上的数加法 `vqc_qft_add_two_register`,两个量子比特上的数乘法的 `vqc_qft_mul`. - 增加混合qpanda与vqc的训练模块 `HybirdVQCQpandaQVMLayer`. - 增加 `einsum`, `moveaxis`, `eigh`, `dignoal` 等接口实现. - 增加分布式计算中张量并行计算功能 `ColumnParallelLinear`, `RowParallelLinear`. - 增加分布式计算中Zero stage-1 功能 `ZeroModelInitial`. - `QuantumBatchAsyncQcloudLayer` 指定 diff_method == "random_coordinate_descent" 时候不会使用PSR而是随机对量子参数选择一个进行梯度计算. Changed =================== - 移除了xtensor部分。 - api文档进行部分修改。区分了基于自动微分的量子机器学习示例以及基于qpanda的机器学习示例,区别基于自动微分的量子机器学习接口以及基于qpanda的机器学习示例接口。 - `matmul` 支持1d@1d,2d@1d,1d@2d。 - 增加了一些量子计算层别名: `QpandaQCircuitVQCLayer`` = `QuantumLayer` , `QpandaQCircuitVQCLayerLite` = `QuantumLayerV2`, `QpandaQProgVQCLayer` = `QuantumLayerV3`. Fixed =================== - 修改分布式计算功能中底层通信接口 `allreduce`, `allgather`, `reduce`, `broadcast` , 添加对 `core.Tensor` 数据通信支持 - 解决随机数生成的bug。 - 解决了 VQC的 `RXX`, `RYY`, `RZZ`, `RZX` 转换成originIR的错误。 [v2.13.0] - 2024-07-30 *************************** Added =================== - 增加 `no_grad`, `GroupNorm`, `Interpolate`, `contiguous`, `QuantumLayerV3`, `fuse_model`, `SDPA`, `quantum_fisher` 接口。 - 为解决量子机器学习过程中出现的过拟合问题添加量子Dropout样例. Changed =================== - `BatchNorm`, `LayerNorm`, `GroupNorm` 增加affine接口。 - `diag` 接口在2d输入时候现在返回对角线上的1d输出,与torch一致。 - slice,permute等操作会尝试使用view方式返回共享内存的QTensor。 - 所有接口支持非contiguous的输入。 - `Adam` 支持 weight_decay 参数。 Fixed =================== - 修改 VQC 部分逻辑门分解函数的错误。 - 修复部分函数的内存泄露问题。 - 修复 `QuantumLayerMultiProcess` 不支持GPU输入的问题。 - 修改 `Linear` 的默认参数初始化话方式 [v2.12.0] - 2024-05-01 *************************** Added =================== - 添加流水线并行PipelineParallelTrainingWrapper接口。 - 添加 `Gelu`, `DropPath`, `binomial`, `adamW` 接口。 - 添加 `QuantumBatchAsyncQcloudLayer` 支持pyqpanda的本地虚拟机模拟计算。 - 添加 xtensor的 `QuantumBatchAsyncQcloudLayer` 支持pyqpanda的本地虚拟机模拟计算以及真机计算。 - 使得QTensor 可以被deepcopy以及pickle。 - 添加分布式计算启动命令 `vqnetrun`, 使用分布式计算接口时使用。 - 添加ES梯度计算方法真机接口 `QuantumBatchAsyncQcloudLayerES` 支持pyqpanda的本地虚拟机模拟计算以及真机计算。 - 添加在分布式计算中支持QTensor的数据通信接口 `allreduce`, `reduce`, `broadcast`, `allgather`, `send`, `recv` 等。 Changed =================== - 安装包新加入依赖 "Pillow", "hjson", linux系统下安装包添加新依赖 "psutil"。 "cloudpickle"。 - 优化softmax以及tranpose在GPU下运行速度。 - 使用cuda11.8编译。 - 整合了基于cpu、gpu下的分布式计算接口。 Fixed =================== - 降低Linux-GPU版本启动时候的显存消耗。 - 修复select以及power函数的内存泄露问题。 - 移除了cpu、gpu下基于reduce方法的模型参数以及梯度更新方法 `nccl_average_parameters_reduce`, `nccl_average_grad_reduce`。 [v2.11.0] - 2024-03-01 *************************** Added =================== - 添加新的 `QNG` (量子自然梯度)API 和演示。 - 添加量子电路优化,例如 `wrapper_single_qubit_op_fuse` , `wrapper_commute_controlled` , `wrapper_merge_rotations` api 和 demo。 - 添加 `CY`, `SparseHamiltonian` , `HermitianExpval` 。 - 添加 `is_csr`、 `is_dense`、 `dense_to_csr` 、 `csr_to_dense` 。 - 添加 `QuantumBatchAsyncQcloudLayer` 支持pyqpanda的QCloud真实芯片计算, `expval_qcloud`。 - 添加基于NCCL的单节点下多GPU分布式计算数据并行模型训练的相关接口实现 `nccl_average_parameters_allreduce`, `nccl_average_parameters_reduce`, `nccl_average_grad_allreduce`, `nccl_average_grad_reduce` 以及控制NCCL初始化以及相关操作的类 `NCCL_api`。 - 添加量子线路进化策略梯度计算方法 `QuantumLayerES` 接口。 Changed =================== - 将 `VQC_CSWAP` 电路重构为 `CSWAP`。 - 移除旧的 QNG 文档。 - 从 `pyvqnet.qnn.vqc` 中移除函数和类无用的 `num_wires` 参数。 - 重构 `MeasureAll`, `Probability` api。 - 为 `QuantumMeasure` 增加qtype参数。 Fixed =================== - 将 `QuantumMeasure` 的 slots 改为 shots。 [v2.10.0] - 2023-12-30 *************************** Added =========== - 增加了pyvqnet.qnn.vqc下的新接口:IsingXX、IsingXY、IsingYY、IsingZZ、SDG、TDG、PhaseShift、MutliRZ、MultiCnot、MultixCnot、ControlledPhaseShift、SingleExcitation、DoubleExcitation、VQC_AllSinglesDoubles,ExpressiveEntanglingAnsatz等; - 支持adjoint梯度计算的pyvqnet.qnn.vqc.QuantumLayerAdjoint接口; - 支持originIR与VQC相互转换的功能; - 支持统计VQC模型中的经典和量子模块信息; - 增加量子经典神经网络混合模型下的两个案例: 基于小样本的量子卷积神经网络模型、用于手写数字识别的量子核函数模型; - 增加对arm芯片Mac的支持; [v2.9.0] - 2023-11-15 *************************** Added =========== - 增加了xtensor接口定义,支持经典神经网络模块自动并行和CPU/GPU多后端,包含对多维数组的常用数学,逻辑,矩阵计算,以及常见的经典神经网络层,优化器等150余个接口。 Changed =========== - 从本版本开始,版本号从2.0.8 升级为2.9.0。 - 自本版本开始,软件包上传到 https://pypi.originqc.com.cn, 使用 ``pip install pyvqnet --index-url https://pypi.originqc.com.cn`` 安装。 [v2.0.8] - 2023-09-26 *************************** Added =========== - 增加了现有接口支持complex128、complex64、double、float、uint8、int8、bool、int16、int32、int64等类型计算。 - Linux版本支持gpu下的计算,需要cuda11.7版本cudatoolkit以及nvidia驱动。 - 基于vqc的基础逻辑门: Hadamard、CNOT、I、RX、RY、PauliZ、PauliX、PauliY、S、RZ、RXX、RYY、RZZ、RZX、X1、Y1、Z1、U1、U2、U3、T、SWAP、P、TOFFOLI、CZ、CR。 - 基于vqc的组合量子线路: VQC_HardwareEfficientAnsatz、VQC_BasicEntanglerTemplate、VQC_StronglyEntanglingTemplate、VQC_QuantumEmbedding、VQC_RotCircuit、VQC_CRotCircuit、VQC_CSWAPcircuit、VQC_Controlled_Hadamard、VQC_CCZ、VQC_FermionicSingleExcitation、VQC_FermionicDoubleExcitation、VQC_UCCSD、VQC_QuantumPoolingCircuit、VQC_BasisEmbedding、VQC_AngleEmbedding、VQC_AmplitudeEmbedding、VQC_IQPEmbedding。 - 基于vqc的测量方法: VQC_Purity、VQC_VarMeasure、VQC_DensityMatrixFromQstate、Probability、MeasureAll。 [v2.0.7] - 2023-07-03 *************************** Added =========== - 经典神经网络,增加kron,gather,scatter,broadcast_to接口。 - 增加对不同数据精度支持: 数据类型dtype支持kbool,kuint8,kint8,kint16,kint32,kint64,kfloat32,kfloat64,kcomplex64,kcomplex128.分别代表C++的 bool,uint8_t,int8_t,int16_t,int32_t,int64_t,float,double,complex,complex. - 支持python 3.8,3.9,3.10三个版本。 Changed =========== - QTensor 以及Module类的init函数增加 `dtype` 参数。对QTensor索引、 部分神经网络层的输入进行了类型限制。 - 量子神经网络,由于MacOS兼容性问题,去掉了Mnist_Dataset,CIFAR10_Dataset接口。 [v2.0.6] - 2023-02-22 *************************** Added =========== - 经典神经网络,增加接口: multinomial,pixel_shuffle,pixel_unshuffle,为QTensor增加numel,增加CPU动态内存池功能,为Parameter增加init_from_tensor接口。 - 经典神经网络,增加接口: Dynamic_LSTM,Dynamic_RNN,Dynamic_GRU。 - 经典神经网络,增加接口: pad_sequence,pad_packed_sequence,pack_pad_sequence。 - 量子神经网络,增加接口: CCZ,Controlled_Hadamard,FermionicSingleExcitation,UCCSD,QuantumPoolingCircuit, - 量子神经网络,增加接口: Quantum_Embedding,Mnist_Dataset,CIFAR10_Dataset,grad,Purity。 - 量子神经网络,增加示例: 基于梯度裁剪,quanvolution,量子线路表达力,贫瘠高原,量子强化学习QDRL。 Changed =========== - API文档,重构内容结构,增加 `量子机器学习研究` 模块,将 `VQNet2ONNX模块` 改为 `其他函数` 。 Fixed =========== - 经典神经网络,解决相同随机种子跨平台产生不同正态分布的问题。 - 量子神经网络,实现expval,ProbMeasure,QuantumMeasure 对QPanda GPU虚拟机的支持。 [v2.0.5] - 2022-12-25 *************************** Added =========== - 经典神经网络,增加log_softmax实现,增加模型转ONNX的接口export_model函数。 - 经典神经网络,支持当前已有的绝大多数经典神经网络模块转换为ONNX,详情参考API文档 “VQNet2ONNX模块”。 - 量子神经网络,增加VarMeasure,MeasurePauliSum,Quantum_Embedding,SPSA等接口 - 量子神经网络,增加LinearGNN,ConvGNN,ConvGNN,QMLP,量子自然梯度,量子随机parameter-shift算法,DoublySGD算法等。 Changed =========== - 经典神经网络,为BN1d,BN2d接口增加维度检查。 Fixed =========== - 解决maxpooling参数检查的bug。 - 解决[::-1]的切片bug。 [v2.0.4] - 2022-09-20 *************************** Added =========== - 经典神经网络,增加LayernormNd实现,支持多维数据layernorm计算。 - 经典神经网络,增加CrossEntropyLoss以及NLL_Loss损失函数计算接口,支持1维~N维输入。 - 量子神经网络,增加常用线路模板: HardwareEfficientAnsatz,StronglyEntanglingTemplate,BasicEntanglerTemplate。 - 量子神经网络,增加计算量子比特子系统互信息的Mutal_info接口、Von Neumann 熵VB_Entropy、密度矩阵DensityMatrixFromQstate。 - 量子神经网络,增加量子感知器算法例子QuantumNeuron,增加量子傅里叶级数算法例子。 - 量子神经网络,增加支持多进程加速运行量子线路的接口QuantumLayerMultiProcess。 Changed =========== - 经典神经网络,支持组卷积参数group,空洞卷积dilation_rate,任意数值padding作为一维卷积Conv1d、二维卷积Conv2d、反卷积ConvT2d的参数。 - 在相同维度的数据跳过广播操作,减少不必要运行逻辑。 Fixed =========== - 解决stack函数在部分参数下计算错误的问题。 [v2.0.3] - 2022-07-15 *************************** Added =========== - 增加支持stack,双向的循环神经网络接口: RNN, LSTM, GRU - 增加常用计算性能指标的接口: MSE,RMSE, MAE, R_Square, precision_recall_f1_2_score, precision_recall_f1_Multi_scoreprecision_recall_f1_N_score, auc_calculate - 增加量子核SVM的算法示例 Changed =========== - 加快QTensor数据过多时候的print速度 - Windows和linux下使用openmp加速运算。 Fixed =========== - 解决部分python import方式无法导入的问题 - 解决批归一化BN层重复计算的问题 - 解决QTensor.reshape,transpose接口无法计算梯度的bug - 为tensor.power接口增加入参形状判断 [v2.0.2] - 2022-05-15 *************************** Added =========== - 增加topK, argtoK - 增加cumsum - 增加masked_fill - 增加triu,tril - 增加QGAN生成随机分布的示例 Changed =========== - 支持高级切片索引和普通切片索引 - matmul支持3D,4D张量运算 - 修改HardSigmoid函数实现 Fixed =========== - 解决卷积,批归一化,反卷积,池化层等层没有缓存内部变量,导致一次前传后多次反传时计算梯度的问题 - 修正QLinear层的实现和示例 - 解决MAC在conda环境中导入VQNet时候 Image not load的问题。 [v2.0.1] - 2022-03-30 *************************** Added =========== - 增加基本数据结构QTensor接口100余个,包括创建函数,逻辑函数,数学函数,矩阵操作。 - 增加基本神经网络网络函数14个,包括卷积,反卷积,池化等。 - 增加损失函数4个,包括MSE,BCE,CCE,SCE等。 - 增加激活函数10个,包括ReLu,Sigmoid,ELU等。 - 增加优化器6个,包括SGD,RMSPROP,ADAM等。 - 增加机器学习示例: QVC,QDRL,Q-KMEANS,QUnet,HQCNN,VSQL,量子自编码器。 - 增加量子机器学习层: QuantumLayer,NoiseQuantumLayer。