Description
Thank you for releasing the PLaID/PLaID++ code. I am trying to reproduce the SFT and iterative DPO pipeline, but I encountered several environment and implementation inconsistencies. Could you please clarify the following points and provide an environment/configuration that has been tested end to end?
1. Environment reproducibility
The environment installed using the README and uv sync appears incomplete:
datasets and trl are not included.
- The resolved Transformers version was
4.52.0, which caused an error during finetuning with torch==2.4.0.
- Upgrading Transformers to
4.53.0 fixed that issue, but loading the SFT checkpoint then failed because of another incompatibility with torch==2.4.0.
- Upgrading PyTorch to 2.6 introduced incompatibilities with other project dependencies.
- Installing from
requirements.txt also appears to leave out some required packages.
- Based on the imports and
DPOTrainer interface in DPO_train.py, the DPO code seems closest to the TRL 0.11–0.12 API.
Could you provide a tested reproducible environment, preferably as one of the following?
- a complete
pyproject.toml and uv.lock;
- a fully pinned requirements file;
- a Conda environment;
- or a Dockerfile.
Please also confirm the exact versions used for Python, CUDA, PyTorch, Transformers, TRL, PEFT, Datasets, Accelerate, bitsandbytes, and FlashAttention.
2. Initial DPO sampling from the SFT model
The current DPO script does not appear to include the initial sampling step using the SFT checkpoint.
Could you provide:
- the exact SFT checkpoint used for iteration 1;
- the unconditional sampling command and parameters;
- the space-group-conditioned sampling command and parameters;
- and whether the final SFT adapter or the largest
checkpoint-* directory should be used?
3. DPO preference-pair configuration
The current plaid_dpo.sh uses:
- iterations 1–2:
basic + sg_novel;
- iterations 3–7:
tieredNovel + sg_novel.
However, the paper appears to describe seven iterations using tiered stability/novelty preference pairs and the space-group preference construction described by sg.
Could you confirm which configuration produced the reported results?
- seven iterations of
tieredNovel + sg;
- two iterations of
basic + sg_novel followed by five iterations of tieredNovel + sg_novel;
- or another configuration?
Please also confirm whether sg_novel was used in the main paper results or was an additional repository experiment.
4. Inconsistent script paths and output filenames
Several paths and filenames in the DPO pipeline appear inconsistent:
llama_sample.py does not exist; should this be llm_sample.py?
- The novelty script path used by the shell pipeline does not appear to match the repository layout.
- Novelty evaluation writes files with an
_sun suffix, while the next DPO iteration appears to read the original filename without that suffix.
- Some input and output directories in
plaid_dpo.sh do not appear to connect directly between iterations.
Could the README or DPO script be updated with the correct paths and expected directory structure?
5. Novelty threshold mismatch
For unconditional generation, the DPO script appears to calculate novelty using an E_hull threshold of 0.1, while DPO_preprocess.py expects the column:
For space-group novelty, the preprocessing code expects:
Could you confirm the correct thresholds used for DPO preference construction?
My current interpretation is:
- unconditional stable novelty:
E_hull <= 0.0;
- space-group acceptable structures:
E_hull <= 0.08;
0.1 should only be used for evaluation, not for the DPO novelty columns.
6. Novelty reference set
The current novelty code appears to use the training split of diffcsp_mp20 as its reference set.
Is this reference set exactly identical to the training set used for PLaID SFT, including filtering, deduplication, and train/test splitting?
For strict reproduction, could you provide the exact SFT training-set file or manifest used to calculate novelty?
Requested materials
A minimal tested reproduction package would be very helpful, containing:
- a complete environment lock file;
- the exact SFT checkpoint;
- the initial sampling commands;
- the seven-iteration DPO configuration;
- the novelty thresholds and reference set;
- the expected file and directory structure;
- and a small smoke-test command.
Thank you for your help.
Description
Thank you for releasing the PLaID/PLaID++ code. I am trying to reproduce the SFT and iterative DPO pipeline, but I encountered several environment and implementation inconsistencies. Could you please clarify the following points and provide an environment/configuration that has been tested end to end?
1. Environment reproducibility
The environment installed using the README and
uv syncappears incomplete:datasetsandtrlare not included.4.52.0, which caused an error during finetuning withtorch==2.4.0.4.53.0fixed that issue, but loading the SFT checkpoint then failed because of another incompatibility withtorch==2.4.0.requirements.txtalso appears to leave out some required packages.DPOTrainerinterface inDPO_train.py, the DPO code seems closest to the TRL 0.11–0.12 API.Could you provide a tested reproducible environment, preferably as one of the following?
pyproject.tomlanduv.lock;Please also confirm the exact versions used for Python, CUDA, PyTorch, Transformers, TRL, PEFT, Datasets, Accelerate, bitsandbytes, and FlashAttention.
2. Initial DPO sampling from the SFT model
The current DPO script does not appear to include the initial sampling step using the SFT checkpoint.
Could you provide:
checkpoint-*directory should be used?3. DPO preference-pair configuration
The current
plaid_dpo.shuses:basic + sg_novel;tieredNovel + sg_novel.However, the paper appears to describe seven iterations using tiered stability/novelty preference pairs and the space-group preference construction described by
sg.Could you confirm which configuration produced the reported results?
tieredNovel + sg;basic + sg_novelfollowed by five iterations oftieredNovel + sg_novel;Please also confirm whether
sg_novelwas used in the main paper results or was an additional repository experiment.4. Inconsistent script paths and output filenames
Several paths and filenames in the DPO pipeline appear inconsistent:
llama_sample.pydoes not exist; should this bellm_sample.py?_sunsuffix, while the next DPO iteration appears to read the original filename without that suffix.plaid_dpo.shdo not appear to connect directly between iterations.Could the README or DPO script be updated with the correct paths and expected directory structure?
5. Novelty threshold mismatch
For unconditional generation, the DPO script appears to calculate novelty using an
E_hullthreshold of0.1, whileDPO_preprocess.pyexpects the column:For space-group novelty, the preprocessing code expects:
Could you confirm the correct thresholds used for DPO preference construction?
My current interpretation is:
E_hull <= 0.0;E_hull <= 0.08;0.1should only be used for evaluation, not for the DPO novelty columns.6. Novelty reference set
The current novelty code appears to use the training split of
diffcsp_mp20as its reference set.Is this reference set exactly identical to the training set used for PLaID SFT, including filtering, deduplication, and train/test splitting?
For strict reproduction, could you provide the exact SFT training-set file or manifest used to calculate novelty?
Requested materials
A minimal tested reproduction package would be very helpful, containing:
Thank you for your help.