深度势能生成器(DP-GEN)入门讲解

news2025/2/26 6:27:22

文章目录

  • 1.原子间相互作用
      • 1.为什么研究原子间相互作用
      • 2.研究原子间相互作用的传统方法
  • 2.深度学习研究原子间相互作用
      • 1.深度势能平滑模型(DeepPot-se)
      • 2.Deep Potential 模型训练
      • 3.同步学习→充足采样&筛选样本
  • 3.DP-GEN操作及运行
      • 1.DP-GEN主流程
      • 2.DP-GEN基本命令
      • 3.生成初始数据
  • 4.DP-GEN案例:气态甲烷CH~4~
      • 1.init_bulk 过程
      • 2.run 过程
      • 3.machine.json文件

1.原子间相互作用

1.为什么研究原子间相互作用

   计算模拟在材料性质研究和设计中发挥日益重要的作用,其关键科学问题是材料的微观结构,而微观结构由原子间相互作用决定的。 E = E ( r 1 , r 2 , r 3 , . . . ) E=E(r1,r2,r3,...) E=E(r1,r2,r3,...) 其中 E E E为势能, r 1 , r 2 , r 3 r1,r2,r3 r1,r2,r3为原子坐标。

2.研究原子间相互作用的传统方法

  • 第一性原理计算
      KS-DFT: E [ ρ ] = F H K [ ρ ] + ∫ ρ ( r ) v e x t ( r ) d r E[\rho ]=F_{HK}[\rho]+\int \rho(r)v_{ext}(r)dr E[ρ]=FHK[ρ]+ρ(r)vext(r)dr F H K [ ρ ] = T [ ρ ] + V e e [ ρ ] F_{HK}[\rho]=T[\rho]+V_{ee}[\rho] FHK[ρ]=T[ρ]+Vee[ρ]

  • 经验力场
      Lennard-Jones 势: V L J = 4 ε [ ( σ r ) 12 − ( σ r ) 6 ] V_{LJ}=4\varepsilon [(\frac{\sigma }{r})^{12}-(\frac{\sigma }{r})^{6}] VLJ=4ε[(rσ)12(rσ)6]

2.深度学习研究原子间相互作用

E = E ( r 1 , r 2 , r 3 , . . . ) E=E(r1,r2,r3,...) E=E(r1,r2,r3,...)   原子间相互作用的研究在数学上是高维函数的表示和逼近问题,而传统数学工具对高维函数缺乏有效手段,深度学习为高维函数的逼近提供了有力工具。

1.深度势能平滑模型(DeepPot-se)

在这里插入图片描述
   笛卡尔坐标描述原子 i i i截断半径内的局域环境 R i = { r l i T , . . . , r j i T , . . . , r N i T , i } T , r j i = ( x j i , y j i , z j i ) \mathcal{R}^{i}=\left \{ r_{l_{i}}^{T},...,r_{j_{i}}^{T},...,r_{N_{i}}^{T},i \right \} ^{T},r_{ji}=(x_{ji},y_{ji},z_{ji}) Ri={rliT,...,rjiT,...,rNiT,i}T,rji=(xji,yji,zji)
   广义坐标 { x j i , y j i , z j i } → { s ( r j i ) , x ^ j i , y ^ j i , z ^ j i } \left \{x_{ji},y_{ji},z_{ji}\right \}\to \left \{ s(r_{ji}),\hat{x}_{ji},\hat{y}_{ji},\hat{z}_{ji}\right \} {xji,yji,zji}{s(rji),x^ji,y^ji,z^ji} x ^ j i = s ( r j i ) x j i r j i , y ^ j i = s ( r j i ) y j i r j i , z ^ j i = s ( r j i ) z j i r j i , a n d s ( r j i ) \hat{x}_{ji}=\frac{s(r_{ji})x_{ji}}{r_{ji}},\hat{y}_{ji}=\frac{s(r_{ji})y_{ji}}{r_{ji}},\hat{z}_{ji}=\frac{s(r_{ji})z_{ji}}{r_{ji}},and\quad s(r_{ji}) x^ji=rjis(rji)xji,y^ji=rjis(rji)yji,z^ji=rjis(rji)zji,ands(rji) s ( r j i ) = { 1 r j i , r j i < r c s 1 r j i { 1 2 c o s [ π ( r j i − r c s ) ( r c − r c s ) ] + 1 2 } , r c s < r j i < r c 0 , r j i > r c s(r_{ji})=\left\{\begin{matrix} \frac{1}{r_{ji}},\quad \quad \quad \quad \quad \quad \quad \quad \quad \quad & r_{ji}<r_{cs}\quad \quad \\ \frac{1}{r_{ji}}\left\{\frac{1}{2}cos[\pi \frac{(r_{ji}-r_{cs})}{(r_{c}-r{cs})}]+\frac{1}{2} \right\}, & r_{cs}<r_{ji}<r_{c}\\ 0,\quad \quad \quad \quad \quad \quad \quad \quad \quad \quad & r_{ji}>r_{c}\quad \quad \end{matrix}\right. s(rji)= rji1,rji1{21cos[π(rcrcs)(rjircs)]+21},0,rji<rcsrcs<rji<rcrji>rc

2.Deep Potential 模型训练

   能量: E = ∑ i E i E=\sum_{i} E_{i} E=iEi
   力: F = − ∇ R E ( F i j = − ∇ R i j E ) \mathcal{F}=-\nabla _{\mathcal{R}}E\quad (\mathcal{F}_{ij}=-\nabla_{\mathcal{R}_{ij}}E) F=RE(Fij=RijE)
   维里: Ξ = t r [ R ⊗ F ] ( Ξ i j = ∑ k = 1 N R k i F k i ) \Xi =tr[\mathcal{R}\otimes \mathcal{F}]\quad (\Xi_{ij}=\sum_{k=1}^{N}\mathcal{R}_{ki}\mathcal{F}_{ki}) Ξ=tr[RF](Ξij=k=1NRkiFki)    维里系数(Virial coefficient) B i B_{i} Bi是热力学状态方程按密度展开(称为维里展开)各项的系数。维里系数与分子间势能函数相关,体现多体相互作用对理想气体状态方程的修正。
   损失函数 L ( p ϵ , p f , p ξ ) = p ϵ Δ ϵ 2 + p f 3 N ∑ i ∣ Δ F i ∣ 2 + p ξ 9 ∣ ∣ Δ ξ ∣ ∣ 2 L(p_{\epsilon},p_{f},p_{\xi})=p_{\epsilon}\Delta \epsilon^{2}+\frac{p_{f}}{3N}\sum_{i}|\Delta F_{i}|^{2}+\frac{p_{\xi}}{9}||\Delta \xi||^{2} Lpϵ,pf,pξ=pϵΔϵ2+3Npfi∣ΔFi2+9pξ∣∣Δξ2 p ( t ) = p l i m i t [ 1 − r l ( t ) r l 0 ] + p s t a r t [ r l ( t ) r l 0 ] p(t)=p^{limit}[1-\frac{r_{l}(t)}{r_{l}^{0}}]+p^{start}[\frac{r_{l}(t)}{r_{l}^{0}}] p(t)=plimit[1rl0rl(t)]+pstart[rl0rl(t)]    方法:利用昂贵的第一性原理计算数据,通过神经网络进行训练,获得深度势能模型,从而精准预测势能面。

3.同步学习→充足采样&筛选样本

  • 采样器:DPMD
       DPMD势能面采样优势:高效、更新模型改进采样质量、改变MD条件拓展采样范围
       可拓展的采样策略:增强采样、蒙特卡洛、结构搜索…
  • 误差判据:模型偏差(model deviation)
    在这里插入图片描述
       模型偏差 ϵ t = m a x i ⟨ ∣ ∣ F ω , i ( R i ) − ⟨ F ω , i ( R i ) ⟩ ∣ ∣ 2 ⟩ \epsilon_{t}=max_{i}\sqrt{\left \langle \left || F_{\omega ,i}(\mathcal{R}_{i})-\left \langle F_{\omega ,i}(\mathcal{R}_{i})\right \rangle \right ||^{2} \right \rangle} ϵt=maxiFω,i(Ri)Fω,i(Ri)2    真实“力”偏差: ϵ ^ t = m a x i ⟨ ∣ ∣ F ω , i ( R i ) − F ~ ω , i ( R i ) ∣ ∣ 2 ⟩ \hat{\epsilon}_{t}=max_{i}\sqrt{\left \langle || F_{\omega ,i}(\mathcal{R}_{i})- \tilde{F}_{\omega ,i}(\mathcal{R}_{i}) ||^{2} \right \rangle} ϵ^t=maxi∣∣Fω,i(Ri)F~ω,i(Ri)2    基于不同的随机数训练出来的4个DP力场graph.pb,跑LAMMPS轨迹。如果4个DP力场对同一结构预测有分歧,则被标记该结构
  • DP-GEN标记数据点(相较于AIMD)的优势:
       1.速度快,只需要跑LAMMPS,对于特定结构计算DFT的单点能即可。如果采用AIMD标记数据点,则会浪费更多的算力。
       2.探索相空间更大,降低重复性数据。如果采用AIMD,则相邻帧之间相关性太强,相空间中部分区域数据重复出现,而部分区域又探索不到。

3.DP-GEN操作及运行

1.DP-GEN主流程

在这里插入图片描述

  • Exploration:探索样本空间,调用MD模拟软件
  • Labeling:增加标记样本,调用DFT计算软件
  • Training:训练新的模型,调用DeePMD-kit

2.DP-GEN基本命令

  • DP-GEN基本命令:
      dpgen sub-command PARAM MACHINE
  • sub-command为DP-GEN支持的任务类型,基本流程包括init_bulk/init_surf,run,test
      init_bulk/init_surf:为体相/表面体系准备初始数据
      run:深度势能生成器主流程
      test:计算模型在参考体系性质测试中的表现
  • PARAM:输入参数文件,各类型任务需要独立的参数文件
  • MACHINE:机器配置文件
  • Run主流程:dpgen run param machine
      多次迭代,每次迭代包括三个步骤:00.tran(Training,训练新的模型)、01.model_devi(Exploration,探索样本空间)、02.fp(Labeling,增加样本标记)

3.生成初始数据

  • 直接跑AIMD
      1.AIMD的温度要高于LAMMPS采样实际温度
      2.多选择不相干的初始结构跑,扩大相空间初始范围。
      3.间隔取点保存成数据集,避免相邻数据过于重复。
  • dpgen init_bulk/dpgen init_surf
      对原始晶胞进行压缩/扩展/畸变,对原子结构进行微扰,以模拟极端情况,扩大搜索相空间范围。

4.DP-GEN案例:气态甲烷CH4

  • 甲烷案例下载:https://dp-public.oss-cn-beijing.aliyuncs.com/community/dpgen_example.tar.xz

1.init_bulk 过程

  • 运行命令:dpgen init_bulk param.json machine.json
  • param.json文件
    {
      "stages":           [1,2,3,4],
      "cell_type":	"diamond",
      "super_cell":	[1, 1, 1],
      "elements":		["H","C"],
      "from_poscar":	true,
      "from_poscar_path":	"./CH4.POSCAR",
      "potcars":		["../run/POTCAR_H", "../run/POTCAR_C"],
      "relax_incar": 	"./INCAR_methane.rlx",
      "md_incar" : 	"./INCAR_methane.md",
      "scale":		[1.00],
      "skip_relax":	false,
      "pert_numb":	30,
      "md_nstep" : 	10,
      "pert_box":		0.03,
      "pert_atom":	0.01,
      "coll_ndata":	5000,
      "_comment":		"that's all"
    }
    

   1.stage:init_bulk 分为4个阶段,用数字1至4表示:1-初始结构的优化,2-对优化后结构进行微扰和缩放,3-对2的结构进行AIMD,4-收集AIMD数据。可将任意阶段组合,如[1,2,3,4]或[2,3]等。
   2.cell_type晶体结构类型,目前仅支持:fcc, hcp, bcc, sc, diamond 5种。可删掉,dpgen init_bulk 通过 from_poscar 和 from_poscar_path获得结构信息。
   3.super_cell:向xyz方向扩胞,[1, 1, 1]表示不扩胞
   4.elements:元素,与POSCAR文件一一对应
   5.from_poscar:是否使用给定的POSCAR文件作为弛豫的初始结构。如果为False,需设置cell_type和latt参数确定结构信息。
   6.from_poscar_path:VASP的POSCAR文件的路径。如果 from_poscar 为 true,则必需
   7.potcarsPOTCAR文件的路径。
   8.relax_incar:VASP中弛豫的INCAR文件的路径。如果包括阶段1,则必需
   9.md_incar:VASP中AIMD的INCAR文件的路径。如果包括阶段3,则必需
   10.scale:保持各向同性时的等比例缩放因子,[1.00]默认不缩放。
   11.skip_relax:如果为 true,则直接使用未弛豫的POSCAR文件进行阶段2(微扰和缩放)
   12.pert_numb:POSCAR文件的扰动结构的数目
   13.md_nstep:阶段3的AIMD步数。如果与md_incar中NSW不同,则遵循NSW。
   14.pert_box盒子尺寸的扰动,从均匀分布 [-pert_box, pert_box] 中随机采样。
   15.pert_atom原子坐标的扰动,单位埃,从均匀分布 [-pert_atom, pert_atom] 中随机采样。
   16.coll_ndata:最大数据收集量。
   17._comment:注释信息。

2.run 过程

  • 运行命令:dpgen run param.json machine.json
  • param.json文件
    {
       "type_map": ["H","C"],
       "mass_map": [1,12],
       "init_data_prefix": "../",
       "init_data_sys": ["init/CH4.POSCAR.01x01x01/02.md/sys-0004-0001/deepmd"],
       "sys_configs_prefix": "../",
       "sys_configs": [
           ["init/CH4.POSCAR.01x01x01/01.scale_pert/sys-0004-0001/scale-1.000/00000*/POSCAR"],
           ["init/CH4.POSCAR.01x01x01/01.scale_pert/sys-0004-0001/scale-1.000/00001*/POSCAR"]
       ],
       "_comment": " that's all ",
       "numb_models": 4,
       "default_training_param": {
           "model": {
               "type_map": ["H","C"],
               "descriptor": {
                   "type": "se_e2_a",
                   "sel": [16,4],
                   "rcut_smth": 0.5,
                   "rcut": 5.0,
                   "neuron": [120,120,120],
                   "resnet_dt": true,
                   "axis_neuron": 12,
                   "seed": 1
               },
               "fitting_net": {
                   "neuron": [25,50,100],
                   "resnet_dt": false,
                   "seed": 1
               }
           },
           "learning_rate": {
               "type": "exp",
               "start_lr": 0.001,
               "decay_steps": 5000
           },
           "loss": {
               "start_pref_e": 0.02,
               "limit_pref_e": 2,
               "start_pref_f": 1000,
               "limit_pref_f": 1,
               "start_pref_v": 0.0,
               "limit_pref_v": 0.0
           },
           "training": {
               "stop_batch": 2000,
               "disp_file": "lcurve.out",
               "disp_freq": 1000,
               "numb_test": 4,
               "save_freq": 1000,
               "save_ckpt": "model.ckpt",
               "disp_training": true,
               "time_training": true,
               "profiling": false,
               "profiling_file": "timeline.json",
               "_comment": "that's all"
           }
       },
       "model_devi_dt": 0.002,
       "model_devi_skip": 0,
       "model_devi_f_trust_lo": 0.05,
       "model_devi_f_trust_hi": 0.15,
       "model_devi_clean_traj": true,
       "model_devi_jobs": [
           {"sys_idx": [0],"temps": [100],"press": [1.0],"trj_freq": 10,"nsteps": 300,"ensemble": "nvt","_idx": "00"},
           {"sys_idx": [1],"temps": [100],"press": [1.0],"trj_freq": 10,"nsteps": 3000,"ensemble": "nvt","_idx": "01"}
       ],
       "fp_style": "vasp",
       "shuffle_poscar": false,
       "fp_task_max": 20,
       "fp_task_min": 5,
       "fp_pp_path": "./",
       "fp_pp_files": ["POTCAR_H","POTCAR_C"],
       "fp_incar": "./INCAR_methane"
    }
    
  • I 基础参数设置:
    1.type_map,mass_map:原子类型、相对原子质量,两者与type.raw文件一一对应
    2.init_data_prefix,init_data_sys:训练模型初始数据的位置,prefix为路径前缀。
    3.sys_configs_prefix,sys_configs分子动力学模拟和计算model deviation的结构位置,prefix为路径前缀。
    4.numb_models:训练模型的数量,推荐4个
  • II Deepmd-kit参数设置(default_training_param):
    1.描述符(descriptor)与拟合网络(fitting_net)设置:
           type:se_e2_a,根据原子构型的所有信息(角度和径向)构建模型,将原子间距离作为输入。
           sel:截止半径内的
    最大邻居量
    ,sel[i]表示类型i的邻居的最大邻居数。
           rcut_smth,rcut:模型的平滑起始距离截止距离
           neuron每个隐藏层的神经元数量,从输入到输出。
           resnet_dt:如果为 true,在ResNet加入时间步长。
           axis_neuron:嵌入矩阵的子矩阵大小
           seed:随机种子,用于初始化模型参数。
    2.descriptor:将原子构型映射成一组对称不变性的描述符
        fitting_net描述符为输入预测目标的物理属性的神经网络。
    3.学习率(learning_rate)设置:
           start_lr:训练初始学习率
           decay_steps:学习率衰减步数
    4.损失函数(loss)设置:
           start_pref_e:训练开始时能量损失的前因子,大于等于0。如果start_pref_e和limit_pref_e均为0,则忽略能量损失。
           limit_pref_e:训练极限时能量损失的前因子,大于等于0。
           start_pref_f:训练开始时力损失的前因子,大于等于0。如果start_pref_f和limit_pref_f均为0,则忽略力损失。
           limit_pref_f:训练极限时力损失的前因子,大于等于0。
           start_pref_v:训练开始时维里损失的前因子,大于等于0。如果start_pref_v和limit_pref_v均为0,则忽略维里损失。
           limit_pref_v:训练极限时维里损失的前因子,大于等于0。
    5.训练(training)设置:
           stop_batch/numb_steps::训练的停止批次或步数。
           disp_file": 保存学习曲线的文件路径。
           disp_freq":输出学习曲线的频率。
           numb_test": 4,
           save_freq保存检查点的频率,检查点是指在训练过程中定期保存的模型参数快照。
           save_ckpt:检查点文件的保存路径。
           disp_training:是否输出训练的详细信息
           time_training:是否记录训练时间
           profiling:是否记录训练中的性能分析数据
           profiling_file性能分析数据保存文件路径。
  • III LAMMPS相关设置:
       model_devi_dt:MD 的时间步长,建议为0.002,单位ps。
       model_devi_skip:MD 中跳过的fp(First Principles)结构数。
       model_devi_f_trust_lo:选取结构的力偏差最小值。
       model_devi_f_trust_hi:选取结构的力偏差最大值,最大值一般为最小值的3、4倍。
       model_devi_clean_traj:是否清理 MD 中的 traj(轨迹)文件夹
       model_devi_jobs
           sys_idx:MD初始结构的系统ID,该ID与 sys_configs 一一对应
           temps:MD模拟的温度(K)
           press:在npt系综下,MD模拟的压力(Bar)
           trj_freq:保存MD轨迹的频率。
           nsteps:MD模拟的步数,逐轮增大步数。
           ensemble系综设置(nvt/npt)。
           _idx:注释id。
  • IIII VASP相关设置:
       fp_style第一性原理计算软件类型。
       shuffle_poscar:模拟前是否每帧打乱原子
       fp_task_max:每次迭代计算的最多结构数
       fp_task_min:每次迭代计算的最少结构数,低于此数值将直接进行下次迭代。
       fp_pp_path赝势文件的路径。
       fp_pp_files赝势文件名,与type_map一一对应。
       fp_incarINCAR文件

3.machine.json文件

{
	"api_version": "1.0",
	"deepmd_version": "2.2.10",
	"train" :[
		{
			"command": "dp",
			"machine": {
				"batch_type": "Shell",
				"context_type": "local",
				"local_root" : "./",
				"remote_root": "/home/ecust/lws"
			},
			"resources": {
				"number_node": 1,
				"cpu_per_node": 4,
				"gpu_per_node": 1,
				"group_size": 1
			}
		}
	],
	"model_devi":[
		{
			"command": "mpirun -n 4 lmp_mpi -i input.lammps",
			"machine": {
				"batch_type": "Shell",
				"context_type": "local",
				"local_root" : "./",
				"remote_root": "/home/ecust/lws"
			},
			"resources": {
				"number_node": 1,
				"cpu_per_node": 4,
				"gpu_per_node": 1,
				"group_size": 5
			}
		}
	],
	"fp":[
		{
			"command": "mpirun -n 4 vasp_std",
			"machine": {
				"batch_type": "Shell",
				"context_type": "local",
				"local_root" : "./",
				"remote_root": "./"
			},
			"resources": {
				"number_node": 1,
				"cpu_per_node": 4,
				"gpu_per_node": 1,
				"group_size": 125
			}
		}
	]
}
  • api_version:api版本,1.0
  • deepmd_version:DeePMD-kit版本
  • train/model_devi/fp设置:
      1.command提交任务的命令。
      2.batch_type批处理作业系统类型,PBS(PBS队列)、Slurm(Slurm队列)、LSF(LSF队列)、Shell(无队列系统,直接用shell运行任务)。
      3.context_type远程机器连接类型,local(通过本地文件存储系统拷贝传输)、ssh(通过ssh和远程服务器通信上传和下载数据)。
      4.local_root:本地运行任务的目录,推荐设置为“./”
      5.remote_root远程计算机上运行任务的目录,如果本地运行则写本地任务的运行目录。
      6.number_node:每个作业需要的节点数
      7.cpu_per_node:分配给每个作业的每个节点的 cpu 数
      8.gpu_per_node:分配给每个作业的每个节点的 gpu 数
      9.group_size作业中的任务数量,把多少任务放到一个提交脚本里, 0 表示无穷大。

参考文献:Wen T, Zhang L, Wang H, et al. Deep potentials for materials science[J]. Materials Futures, 2022, 1(2): 022601.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)

简言&#xff1a; gitee地址&#xff1a;https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5注&#xff1a;…

用人工智能大模型预报气象,中国气象局示范计划公开征集火热报名中

近日&#xff0c;中国气象局发布了人工智能气象预报大模型示范计划&#xff08;以下简称“示范计划”&#xff09;&#xff0c;推进气象大模型标准规范和有序发展&#xff0c;引导解决预报业务实际难题&#xff0c;促进人工智能气象预报大模型业务的应用转化、准入&#xff0c;…

k8s笔记——helm chat与k8s Operator区别

k8s Operator Kubernetes 为自动化而生。无需任何修改&#xff0c;你即可以从 Kubernetes 核心中获得许多内置的自动化功能。 你可以使用 Kubernetes 自动化部署和运行工作负载&#xff0c;甚至 可以自动化 Kubernetes 自身。 Kubernetes 的 Operator 模式概念允许你在不修改…

10位时间戳、13位时间戳、17位时间戳,以及在JavaScript中的格式转换

一、介绍 1、10位时间戳 2、13位时间戳 3、17位时间戳 4、时间戳转换工具 二、13位时间戳的转换 1、转标准日期 2、转格式化日期 三、10位时间戳的转换 1、转标准日期 2、转格式化日期 四、17位时间戳的转换 1、解析思路 2、解析过程 3、完整代码 4、新的问题 …

【学习笔记】Redis学习笔记——第5章 跳跃表

第5章 跳跃表 有序集合&#xff0c;ZSet关键组成部分&#xff0c;时间复杂度媲美平衡树&#xff0c;且实现简单。 5.1 跳跃表的实现 可以简单理解为每个节点会有一些指向后面跨越N个节点的指针&#xff0c;比如说Node1不仅有指向Node2的指针&#xff0c;还可以有Node5的&…

【分布式计算框架 MapReduce】高级编程—搜索日志数据分析

目录 一、对于 sogou_500w_utf 数据&#xff0c;使用 MapReduce 编程模型完成对以下数据的分析任务 1. 统计 2011-12-30 日搜索记录&#xff0c;每个时间段的搜索次数 &#xff08;1&#xff09;运行截图 &#xff08;2&#xff09; 源代码 2. 统计 2011-12-30 日 3 点至 …

SCCB协议介绍,以及与IIC协议对比

在之前的文章里已经介绍了IIC协议&#xff1a;iic通信协议 这篇内容主要介绍一下SCCB协议。 文章目录 SCCB协议&#xff1a;SCCB时序图iic时序图SCCB时序 VS IIC时序 总&#xff1a;SCCB协议常用在摄像头配置上面&#xff0c;例如OV5640摄像头&#xff0c;和IIC协议很相似&…

Kubernetes Artemis系列 | 使用 ArtemisCloud Operator 部署 artemis

目录 一、ArtemisCloud Operator 介绍二、部署ArtemisCloud Operator三、使用 ArtemisCloud Operator 部署 artemis四、管理队列五、缩减规模时消息迁移 一、ArtemisCloud Operator 介绍 ArtemisCloud Operator 是一个用于管理和部署云端基础设施的工具。它基于 Kubernetes 平…

ArtTS系统能力-通知的学习(3.1)

上篇回顾&#xff1a; ArtTS语言基础类库-容器类库内容的学习(2.10.2&#xff09; 本篇内容&#xff1a; ArtTS系统能力-通知的学习&#xff08;3.1&#xff09; 一、 知识储备 1. 基础类型通知 按内容分成四类&#xff1a; 类型描述NOTIFICATION_CONTENT_BASIC_TEXT普通文…

大物3错题整理

平衡位置&#xff1a;在O点上的位置 相位&#xff1a; 当N很大的时候&#xff0c;wxwywz。因此&#xff0c;平均平动动能除以3&#xff0c;就是能量均分定理。 W F在x上的积分 Π时无单位 180&#xff0c;就是单位 1rad&#xff0c;rad就是单位 左手定则、右手定则、安培定…

金融科技如何多角度助力小微企业融资

一、引言 在全球化与数字化交织的时代背景下&#xff0c;金融科技&#xff08;FinTech&#xff09;作为新兴力量&#xff0c;正逐步改变传统的金融业态&#xff0c;尤其在助力小微企业融资方面&#xff0c;金融科技展现出了多元化的价值和优势。本文将从不同角度探讨金融科技如…

数据同步软件有哪些

数据同步软件有哪些呢&#xff1f;随着企业规模的扩大&#xff0c;企业数据也积累得越来越多&#xff0c;万一发生宕机风险&#xff0c;那么这个损失将不可估量。所以为了容灾备用&#xff0c;我们往往需要将数据同步到另一台备胎服务器上&#xff0c;进行冗余。 那么需要同步的…

适配手机《植物大战僵尸杂交版》最新整合包,附Android、iOS、Windows保姆级教程和工具合集!

最近&#xff0c;新版的《植物大战僵尸杂交版》火爆全网啊&#xff01;许多小伙伴不知道手机和电脑怎样安装设置才能畅玩《杂交版》&#xff0c;所以今天阿星特意为大家准备了一份安装工具集。 里面有安卓、iOS及电脑端的安装包&#xff0c;包含安装视频教程、修改器、防闪退、…

论文阅读《One-Step Image Translation with Text-to-Image Models》

Abstract. 在这项工作中&#xff0c;我们解决了现有条件扩散模型的两个局限性&#xff1a;迭代去噪过程导致的推理速度慢&#xff0c;以及模型微调对配对数据的依赖。为了解决这些问题&#xff0c;我们引入了一种通用方法&#xff0c;通过对抗学习目标将单步扩散模型适应新任务…

【C++】string基本用法(常用接口介绍)

文章目录 一、string介绍二、string类对象的创建&#xff08;常见构造&#xff09;三、string类对象的容量操作1.size()和length()2.capacity()3.empty()4.clear()5.reserve()6.resize() 四、string类对象的遍历与访问1.operator[ ]2.正向迭代器begin()和end()3.反向迭代器rbeg…

昇思25天学习打卡营第10天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成自己的个性化音乐 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型&#xff08;LM&#xff09;的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量的音乐样本&#xff0c;相关研究成果参考论文《Simple and Controllable …

Keepalive技术

文章目录 一、Keepalive基础vrrp技术Keepalived介绍Keepalived架构 二、 Keepalived 相关文件配置文件组成全局配置虚拟路由器配置 三、配置lvs和keepalive联动服务器架构抢占模式配置配置单播、组播配置通知模块日志功能脑裂现象 四、keepalived和nginx联动keepalive和其他应用…

html文章卡片

完成效果 中医网站的文本卡片制作&#xff0c;其中用到了grid布局 css基础知识回顾 阴影样式 好的阴影样式可以保存 box-shadow: 6px 6px 5px hsla(0, 0%, 0%, 0.02), 25px 25px 20px hsla(0, 0%, 0%, 0.03), 100px 100px 80px hsla(0, 0%, 0%, 0.05); grid-template-column…

Python的numpy简单使用

1.可以调用引入numpy里面的函数&#xff0c;如add可以把俩数相加&#xff0c;也可以创建一个数组arr&#xff0c;arr.shape是数组arr的属性&#xff0c;如果后有跟&#xff08;&#xff09;就是里面的一个函数 type()函数可以知道里面是什么类型 变量.shape可以知道这个变量是…

这些并发编程技术你都知道吗?

与其碌碌无为&#xff0c;不如兴风作浪。 虽然不是所有的系统都需要很多的并发编程技术&#xff0c;但是掌握常见的高并发秘籍&#xff0c;便能让我们的系统快起来&#xff0c;面对访问量的剧增从容应对。 接下来&#xff0c;为我们一起来看看常见的高并发技术有哪些。总结起来…