chemeleon2-模型加载基本情况
模型加载的差别
原版的数据加载路径在: https://huggingface.co/hspark1212/chemeleon2-checkpoints
- checkpoints/v0.0.1/alex_mp_20/vae/dng_j1jgz9t0_v1.ckpt 【alex mp-20数据集】对应VAE的模型
- checkpoints/v0.0.1/alex_mp_20/ldm/ldm_rl_dng_tuor5vgd.ckpt 【alex mp-20数据集】 LDM 和RL处理过的模型
- checkpoints/v0.0.1/mp_20/vae/dng_m4owq4i5_v0.ckpt 【mp-20数据集】VAE的模型,没有LDM
数据集来源区别
| 方面 | mp_20 / alex_mp_20 (Alex-MP-20) |
|---|---|
| 数据来源 | 仅来自 Materials Project (MP) 数据库 / 来自 Materials Project (MP) + Alexandria (Alex) 数据库 |
| 结构数量 | 约几万条(通常训练集 ~4–5万左右) / 约 60.7万 条(607,683 或 607,684 条) |
| 原子数限制 | 单元格内 ≤20 个原子 / 单元格内 ≤20 个原子 |
| 稳定性筛选 | 一般筛选稳定结构(E_hull 较低) / 更严格:E_above_hull < 0.1 eV/atom |
| 数据多样性 | 相对较小、覆盖面有限 / 显著更大、化学组成和结构类型更多样 |
| 典型用途 | 早期生成模型的基准(如 CDVAE、DiffCSP、MatterGen-MP 等) / MatterGen 等新一代大模型的训练集(性能显著提升) |
| 模型性能对比 | 训练出来的模型生成 SUN 材料比例较低、RMSD 较高 / 训练后 SUN% 可提升 70% 左右,RMSD 下降 5 倍左右 |
本地快速验证,可以用 mp_20 ,如果是精度要求高可以用 alex_mp_20
VAE的基本结构
VAEModule(
(encoder): TransformerEncoder(
(atom_type_embedder): Embedding(100, 512)
(lattices_embedder): Sequential(
(0): Linear(in_features=9, out_features=512, bias=False)
(1): SiLU()
(2): Linear(in_features=512, out_features=512, bias=True)
)
(frac_coords_embedder): Sequential(
(0): Linear(in_features=3, out_features=512, bias=False)
(1): SiLU()
(2): Linear(in_features=512, out_features=512, bias=True)
)
(transformer): TransformerEncoder(
(layers): ModuleList(
(0-7): 8 x TransformerEncoderLayer(
(self_attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
)
(linear1): Linear(in_features=512, out_features=2048, bias=True)
(dropout): Dropout(p=0.0, inplace=False)
(linear2): Linear(in_features=2048, out_features=512, bias=True)
(norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(dropout1): Dropout(p=0.0, inplace=False)
(dropout2): Dropout(p=0.0, inplace=False)
(activation): GELU(approximate='tanh')
)
)
(norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
)
)
(decoder): TransformerDecoder(
(transformer): TransformerEncoder(
(layers): ModuleList(
(0-7): 8 x TransformerEncoderLayer(
(self_attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
)
(linear1): Linear(in_features=512, out_features=2048, bias=True)
(dropout): Dropout(p=0.0, inplace=False)
(linear2): Linear(in_features=2048, out_features=512, bias=True)
(norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(dropout1): Dropout(p=0.0, inplace=False)
(dropout2): Dropout(p=0.0, inplace=False)
(activation): GELU(approximate='tanh')
)
)
(norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
)
(atom_types_head): Linear(in_features=512, out_features=100, bias=True)
(frac_coords_head): Linear(in_features=512, out_features=3, bias=False)
(lattice_head): Linear(in_features=512, out_features=6, bias=False)
)
(quant_conv): Linear(in_features=512, out_features=16, bias=False)
(post_quant_conv): Linear(in_features=8, out_features=512, bias=False)
)
LDM结构模型打印
LDMModule(
(denoiser): DiT(
(x_embedder): Linear(in_features=8, out_features=768, bias=True)
(t_embedder): TimestepEmbedder(
(mlp): Sequential(
(0): Linear(in_features=256, out_features=768, bias=True)
(1): SiLU()
(2): Linear(in_features=768, out_features=768, bias=True)
)
)
(blocks): ModuleList(
(0-11): 12 x DiTBlock(
(norm1): LayerNorm((768,), eps=1e-06, elementwise_affine=False)
(attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)
)
(norm2): LayerNorm((768,), eps=1e-06, elementwise_affine=False)
(mlp): Mlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU(approximate='tanh')
(drop1): Dropout(p=0, inplace=False)
(norm): Identity()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop2): Dropout(p=0, inplace=False)
)
(adaLN_modulation): Sequential(
(0): SiLU()
(1): Linear(in_features=768, out_features=4608, bias=True)
)
)
)
(final_layer): FinalLayer(
(norm_final): LayerNorm((768,), eps=1e-06, elementwise_affine=False)
(linear): Linear(in_features=768, out_features=16, bias=True)
(adaLN_modulation): Sequential(
(0): SiLU()
(1): Linear(in_features=768, out_features=1536, bias=True)
)
)
)
(vae): VAEModule(
(encoder): TransformerEncoder(
(atom_type_embedder): Embedding(100, 512)
(lattices_embedder): Sequential(
(0): Linear(in_features=9, out_features=512, bias=False)
(1): SiLU()
(2): Linear(in_features=512, out_features=512, bias=True)
)
(frac_coords_embedder): Sequential(
(0): Linear(in_features=3, out_features=512, bias=False)
(1): SiLU()
(2): Linear(in_features=512, out_features=512, bias=True)
)
(transformer): TransformerEncoder(
(layers): ModuleList(
(0-7): 8 x TransformerEncoderLayer(
(self_attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
)
(linear1): Linear(in_features=512, out_features=2048, bias=True)
(dropout): Dropout(p=0.0, inplace=False)
(linear2): Linear(in_features=2048, out_features=512, bias=True)
(norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(dropout1): Dropout(p=0.0, inplace=False)
(dropout2): Dropout(p=0.0, inplace=False)
(activation): GELU(approximate='tanh')
)
)
(norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
)
)
(decoder): TransformerDecoder(
(transformer): TransformerEncoder(
(layers): ModuleList(
(0-7): 8 x TransformerEncoderLayer(
(self_attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
)
(linear1): Linear(in_features=512, out_features=2048, bias=True)
(dropout): Dropout(p=0.0, inplace=False)
(linear2): Linear(in_features=2048, out_features=512, bias=True)
(norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
(dropout1): Dropout(p=0.0, inplace=False)
(dropout2): Dropout(p=0.0, inplace=False)
(activation): GELU(approximate='tanh')
)
)
(norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
)
(atom_types_head): Linear(in_features=512, out_features=100, bias=True)
(frac_coords_head): Linear(in_features=512, out_features=3, bias=False)
(lattice_head): Linear(in_features=512, out_features=6, bias=False)
)
(quant_conv): Linear(in_features=512, out_features=16, bias=False)
(post_quant_conv): Linear(in_features=8, out_features=512, bias=False)
)
)
评论