ImBD相关
上一个文章好像存不进东西去了,后边的新内容用这个来记录,成功跑通了 generate_local.py,这说明环境已经完全正常,模型可以生成三种修订版本了。
接下来,要完成创新点一的核心工作:构建混合修订数据集 → 训练泛化性更强的检测模型 → 验证性能提升。
20260414
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm -rf /root/miniconda3/pkgs/*
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm -rf ~/.local/share/Trash/*
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm -rf /tmp/*
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh /root/* 2>/dev/null | sort -hr | head -10
47G /root/autodl-tmp
14G /root/miniconda3
10G /root/autodl-fs
0 /root/tf-logs
0 /root/autodl-pub
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh /root/autodl-tmp/* | sort -hr | head -10
35G /root/autodl-tmp/ImBD-main
1.2G /root/autodl-tmp/datasets
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# conda deactivate
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# mv /root/miniconda3 /root/autodl-tmp/miniconda3
mv: error writing '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libcusparseLt-f80c68d1.so.0': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libgomp-a34b3233.so.1': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libshm.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch_cpu.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch_cuda.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch_cuda_linalg.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch_global_deps.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/lib/libtorch_python.so': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/linalg': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/quantization': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/distributed': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/masked': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_prims': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_functorch': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/share': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_C.cpython-312-x86_64-linux-gnu.so': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_VF.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_VF.pyi': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/__config__.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/__future__.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/__init__.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_appdirs.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_classes.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_compile.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_custom_ops.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_deploy.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_guards.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_jit_internal.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_linalg_utils.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_lobpcg.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_lowrank.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_meta_registrations.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_namedtensor_internals.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_ops.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_prims_common': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_python_dispatcher.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_sources.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_storage_docs.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_streambase.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_tensor.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_tensor_docs.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_tensor_str.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_torch_docs.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_utils.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_utils_internal.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_vmap_internals.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_weights_only_unpickler.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/functional.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/hub.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/library.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/overrides.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/py.typed': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/quasirandom.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/random.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/return_types.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/return_types.pyi': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/serialization.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/storage.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/torch_version.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/types.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/version.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_C': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/monitor': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/onnx': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/xpu': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/__pycache__': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_refs': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_awaits': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_higher_order_ops': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/mps': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_custom_op': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/_inductor': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch/multiprocessing': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/menuinst-2.0.2.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/requests-2.31.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/absl_py-2.1.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/babel': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/decorator.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/fontTools': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/ipykernel_launcher.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/isympy.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/jupyter.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/kiwisolver-1.4.5.dist-info': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nest_asyncio.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_cufft_cu12-11.0.2.54.dist-info': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/pandocfilters.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/prompt_toolkit': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/pylab.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/rfc3339_validator.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/rfc3986_validator.py': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/six.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/supervisor-4.2.5.dist-info': No space left on device
mv: cannot create regular file '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/typing_extensions.py': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/webcolors-1.13.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/zmq': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/certifi-2024.2.2.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/packaging': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/ruamel': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/Babel-2.15.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/anyio': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/google': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/ipykernel': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/isoduration-20.11.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/jupyter_lsp': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/jupyterlab_language_pack_zh_CN': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/markdown': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/networkx-3.3.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_curand_cu12-10.3.2.106.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/sympy': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/webencodings': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/cffi': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/conda_libmamba_solver': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/urllib3-2.1.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/IPython': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/comm': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/jedi': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/notebook_shim': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_cusolver_cu12-11.4.5.107.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torch-2.3.0+cu121.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/packaging-23.2.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_cusparse_cu12-12.1.0.106.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/pygments-2.18.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/torchgen': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/webencodings-0.5.1.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/cffi-1.16.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/conda_libmamba_solver-24.1.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/pip': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/comm-0.2.2.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_nccl_cu12-2.20.5.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/six-1.16.0.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/websocket': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/ruamel.yaml-0.17.21.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/wheel': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/charset_normalizer': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/setuptools': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/markupsafe': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/nvidia_nvjitlink_cu12-12.5.40.dist-info': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/pyparsing': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/site-packages/sniffio': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/urllib': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/ensurepip': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/pydoc_data': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/venv': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/html': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/python3.12/re': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/krb5': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/tcl8.6': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/ossl-modules': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/lib/pkgconfig': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/compiler_compat': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/conda-meta': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/condabin': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/envs': No space left on device
mv: cannot create directory '/root/autodl-tmp/miniconda3/shell': No space left on device
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# df -h /
Filesystem Size Used Avail Use% Mounted on
overlay 30G 24G 6.6G 79% /
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh /root/autodl-tmp/*
35G /root/autodl-tmp/ImBD-main
1.2G /root/autodl-tmp/datasets
3.7G /root/autodl-tmp/miniconda3
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh * | sort -hr | head -20
35G ckpt
28M data
708K results
184K logs
148K local_infer_ref
116K spo
92K other_models
88K scripts
56K tools
36K imbd_roc_curve.png
20K ablation_exp
12K load_model_data.py
12K LICENSE
8.0K evaluation
8.0K README.md
4.0K requirements.txt
4.0K imdb_test.csv
4.0K imbd_metrics.txt
4.0K generate_local.py
4.0K download_datasets.py
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh ckpt/* | sort -hr | head -10
20G ckpt/ai_detection_polish_500_spo_lr_0.0001_beta_0.05_a_1
15G ckpt/Spanish_polish_500_spo_lr_0.0001_beta_0.05_a_1
416K ckpt/Portuguese_polish_500_spo_lr_0.0001_beta_0.05_a_1
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm -rf /root/autodl-tmp/ImBD-main/ImBD/ckpt/Spanish_polish_500_spo_lr_0.0001_beta_0.05_a_1
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 30G 24G 6.6G 79% /
tmpfs 64M 0 64M 0% /dev
/dev/md0 14T 13T 1.2T 92% /autodl-pub
AutoFS:fswestb1 20T 1.6T 18T 9% /autodl-pub/data
shm 45G 0 45G 0% /dev/shm
/dev/nvme0n1p2 1.8T 17G 1.7T 1% /usr/bin/nvidia-smi
tmpfs 4.0K 4.0K 0 100% /run/nvidia-ctk-hook
tmpfs 504G 0 504G 0% /proc/asound
tmpfs 504G 0 504G 0% /proc/acpi
tmpfs 504G 0 504G 0% /proc/scsi
tmpfs 504G 0 504G 0% /sys/firmware
tmpfs 504G 0 504G 0% /sys/devices/virtual/powercap
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# df -h /root/autodl-tmp
Filesystem Size Used Avail Use% Mounted on
/dev/md0 50G 36G 15G 71% /root/autodl-tmp
root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# conda activate ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# cd /root/autodl-tmp/ImBD-main/ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python generate_mixed_dataset.py
`torch_dtype` is deprecated! Use `dtype` instead!
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 453/453 [00:01<00:00, 286.36it/s]
'[Errno 101] Network is unreachable' thrown while requesting HEAD https://huggingface.co/microsoft/phi-2/resolve/main/custom_generate/generate.py
Retrying in 1s [Retry 1/5].
Traceback (most recent call last):
File "/root/autodl-tmp/ImBD-main/ImBD/generate_mixed_dataset.py", line 16, in <module>
model = AutoModelForCausalLM.from_pretrained(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 374, in from_pretrained
return model_class.from_pretrained(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/modeling_utils.py", line 4145, in from_pretrained
model.adjust_generation_fn(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/generation/utils.py", line 425, in adjust_generation_fn
custom_generate = self.load_custom_generate(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/generation/utils.py", line 463, in load_custom_generate
module = get_cached_module_file(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/dynamic_module_utils.py", line 390, in get_cached_module_file
resolved_module_file = cached_file(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 277, in cached_file
file = cached_files(path_or_repo_id=path_or_repo_id, filenames=[filename], **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 508, in cached_files
raise e
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 420, in cached_files
hf_hub_download(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 986, in hf_hub_download
return _hf_hub_download_to_cache_dir(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1119, in _hf_hub_download_to_cache_dir
_get_metadata_or_catch_error(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1653, in _get_metadata_or_catch_error
metadata = get_hf_file_metadata(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1576, in get_hf_file_metadata
response = _httpx_follow_relative_redirects_with_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 685, in _httpx_follow_relative_redirects_with_backoff
response = http_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 559, in http_backoff
return next(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 467, in _http_backoff_base
response = client.request(method=method, url=url, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 825, in request
return self.send(request, auth=auth, follow_redirects=follow_redirects)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 901, in send
raise RuntimeError("Cannot send a request, as the client has been closed.")
RuntimeError: Cannot send a request, as the client has been closed.
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python generate_mixed_dataset.py
正在加载模型和分词器...
'[Errno 101] Network is unreachable' thrown while requesting HEAD https://huggingface.co/facebook/opt-350m/resolve/main/config.json
Retrying in 1s [Retry 1/5].
'[Errno 101] Network is unreachable' thrown while requesting HEAD https://huggingface.co/facebook/opt-350m/resolve/main/config.json
Retrying in 1s [Retry 1/5].
Traceback (most recent call last):
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 629, in _get_config_dict
resolved_config_file = cached_file(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 277, in cached_file
file = cached_files(path_or_repo_id=path_or_repo_id, filenames=[filename], **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 508, in cached_files
raise e
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 420, in cached_files
hf_hub_download(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 986, in hf_hub_download
return _hf_hub_download_to_cache_dir(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1119, in _hf_hub_download_to_cache_dir
_get_metadata_or_catch_error(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1653, in _get_metadata_or_catch_error
metadata = get_hf_file_metadata(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1576, in get_hf_file_metadata
response = _httpx_follow_relative_redirects_with_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 685, in _httpx_follow_relative_redirects_with_backoff
response = http_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 559, in http_backoff
return next(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 467, in _http_backoff_base
response = client.request(method=method, url=url, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 825, in request
return self.send(request, auth=auth, follow_redirects=follow_redirects)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 901, in send
raise RuntimeError("Cannot send a request, as the client has been closed.")
RuntimeError: Cannot send a request, as the client has been closed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 654, in from_pretrained
config = AutoConfig.from_pretrained(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/models/auto/configuration_auto.py", line 1429, in from_pretrained
config_dict, unused_kwargs = PreTrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 574, in get_config_dict
config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 651, in _get_config_dict
raise OSError(
OSError: Can't load the configuration of 'facebook/opt-350m'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'facebook/opt-350m' is the correct path to a directory containing a config.json file
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 629, in _get_config_dict
resolved_config_file = cached_file(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 277, in cached_file
file = cached_files(path_or_repo_id=path_or_repo_id, filenames=[filename], **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 508, in cached_files
raise e
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/utils/hub.py", line 420, in cached_files
hf_hub_download(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 986, in hf_hub_download
return _hf_hub_download_to_cache_dir(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1119, in _hf_hub_download_to_cache_dir
_get_metadata_or_catch_error(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1653, in _get_metadata_or_catch_error
metadata = get_hf_file_metadata(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 89, in _inner_fn
return fn(*args, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1576, in get_hf_file_metadata
response = _httpx_follow_relative_redirects_with_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 685, in _httpx_follow_relative_redirects_with_backoff
response = http_backoff(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 559, in http_backoff
return next(
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/huggingface_hub/utils/_http.py", line 467, in _http_backoff_base
response = client.request(method=method, url=url, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 825, in request
return self.send(request, auth=auth, follow_redirects=follow_redirects)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/httpx/_client.py", line 901, in send
raise RuntimeError("Cannot send a request, as the client has been closed.")
RuntimeError: Cannot send a request, as the client has been closed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/autodl-tmp/ImBD-main/ImBD/generate_mixed_dataset.py", line 17, in <module>
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 658, in from_pretrained
config = PreTrainedConfig.from_pretrained(pretrained_model_name_or_path, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 533, in from_pretrained
config_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 574, in get_config_dict
config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
File "/root/miniconda3/envs/ImBD/lib/python3.10/site-packages/transformers/configuration_utils.py", line 651, in _get_config_dict
raise OSError(
OSError: Can't load the configuration of 'facebook/opt-350m'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'facebook/opt-350m' is the correct path to a directory containing a config.json file
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# export HF_ENDPOINT=https://hf-mirror.com
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python generate_mixed_dataset.py
正在加载模型和分词器...
config.json: 644B [00:00, 1.81MB/s]
tokenizer_config.json: 685B [00:00, 1.00MB/s]
vocab.json: 899kB [00:01, 534kB/s]
merges.txt: 456kB [00:00, 678kB/s]
special_tokens_map.json: 441B [00:00, 617kB/s]
`torch_dtype` is deprecated! Use `dtype` instead!
pytorch_model.bin: 8%|██████████▏ | 52.4M/663M [00:05<0 pytorch_model.bin: 9%|████████████▎ | 62.9M/663M [00:06<0 pytorch_model.bin: 11%|██████████████▎ pytorch_model.bin: 13%|████████████████▎ pytorch_model.bin: 14%|██████████████████▍ pytorch_model.bin: 16%|████████████████████▌ pytorch_model.bin: 17%|██████████████████████▋ pytorch_model.bin: 19%|████████████████████████▋ pytorch_model.bin: 21%|██████████████████████████▋ pytorch_model.bin: 22%|████████████████████████████▊ pytorch_model.bin: 24%|██████████████████████████████▊ pytorch_model.bin: 25%|████████████████████████████████▉ pytorch_model.bin: 27%|██████████████████████████████████▉ pytorch_model.bin: 28%|█████████████████████████████████████ pytorch_model.bin: 30%|███████████████████████████████████████ pytorch_model.bin: 32%|█████████████████████████████████████████▏ pytorch_model.bin: 33%|███████████████████████████████████████████▏ pytorch_model.bin: 35%|█████████████████████████████████████████████▎ pytorch_model.bin: 36%|███████████████████████████████████████████████▎ pytorch_model.bin: 38%|█████████████████████████████████████████████████▍ pytorch_model.bin: 40%|███████████████████████████████████████████████████▍ pytorch_model.bin: 41%|█████████████████████████████████████████████████████▍ pytorch_model.bin: 43%|███████████████████████████████████████████████████████▌ pytorch_model.bin: 44%|█████████████████████████████████████████████████████████▌ pytorch_model.bin: 46%|███████████████████████████████████████████████████████████▋ pytorch_model.bin: 47%|█████████████████████████████████████████████████████████████▋ pytorch_model.bin: 49%|███████████████████████████████████████████████████████████████▊ pytorch_model.bin: 51%|█████████████████████████████████████████████████████████████████▊ pytorch_model.bin: 52%|███████████████████████████████████████████████████████████████████▉ pytorch_model.bin: 54%|█████████████████████████████████████████████████████████████████████▉ pytorch_model.bin: 55%|████████████████████████████████████████████████████████████████████████ pytorch_model.bin: 57%|██████████████████████████████████████████████████████████████████████████ pytorch_model.bin: 59%|████████████████████████████████████████████████████████████████████████████▏ pytorch_model.bin: 60%|██████████████████████████████████████████████████████████████████████████████▏ pytorch_model.bin: 62%|████████████████████████████████████████████████████████████████████████████████▏ pytorch_model.bin: 63%|██████████████████████████████████████████████████████████████████████████████████▎ pytorch_model.bin: 65%|████████████████████████████████████████████████████████████████████████████████████▎ pytorch_model.bin: 66%|██████████████████████████████████████████████████████████████████████████████████████▍ pytorch_model.bin: 68%|████████████████████████████████████████████████████████████████████████████████████████▍ pytorch_model.bin: 70%|██████████████████████████████████████████████████████████████████████████████████████████▌ pytorch_model.bin: 71%|████████████████████████████████████████████████████████████████████████████████████████████▌ pytorch_model.bin: 73%|██████████████████████████████████████████████████████████████████████████████████████████████▋ pytorch_model.bin: 74%|████████████████████████████████████████████████████████████████████████████████████████████████▋ pytorch_model.bin: 76%|██████████████████████████████████████████████████████████████████████████████████████████████████▊ pytorch_model.bin: 78%|████████████████████████████████████████████████████████████████████████████████████████████████████▊ pytorch_model.bin: 79%|██████████████████████████████████████████████████████████████████████████████████████████████████████▉ pytorch_model.bin: 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████▉ pytorch_model.bin: 82%|██████████████████████████████████████████████████████████████████████████████████████████████████████████▉ pytorch_model.bin: 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████ pytorch_model.bin: 85%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████ pytorch_model.bin: 87%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ pytorch_model.bin: 89%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ pytorch_model.bin: 90%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ pytorch_model.bin: 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ pytorch_model.bin: 93%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ pytorch_model.bin: 95%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ pytorch_model.bin: 97%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ pytorch_model.bin: 98%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌pytorch_model.bin: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████pytorch_model.bin: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 663M/663M [00:52<00:00, 12.7MB/s]
Loading weights: 100%|██████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 2799.68it/s]
generation_config.json: 137B [00:00, 179kB/s]
模型加载完成!
加载数据集...
Generating: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:16<00:00, 1.68s/it]
完成!生成 10 条样本,保存在 /root/autodl-tmp/mixed_revision_dataset/full_mixed_dataset.csv | 126M/662M [00:12<00:45, 11.7MB/s]
model.safetensors: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 662M/662M [00:51<00:00, 12.8MB/s]
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -lh /root/autodl-tmp/mixed_revision_dataset/
total 80K
-rw-r--r-- 1 root root 31K Apr 14 19:36 full_mixed_dataset.csv
-rw-r--r-- 1 root root 31K Apr 14 19:36 intermediate_10.csv
-rw-r--r-- 1 root root 15K Apr 14 19:36 intermediate_5.csv
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# head -n 3 /root/autodl-tmp/mixed_revision_dataset/full_mixed_dataset.csv
original,polish,rewrite,expand
"The full cost of damage in Newton Stewart, one of the areas worst affected, is still being assessed.
Repair work is ongoing in Hawick and many roads in Peeblesshire remain badly affected by standing water.
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python prepare_training_data.py
python: can't open file '/root/autodl-tmp/ImBD-main/ImBD/prepare_training_data.py': [Errno 2] No such file or directory
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python prepare_training_data.py
生成 30 条训练样本,保存至 /root/autodl-tmp/mixed_revision_dataset/train_mixed.json
目前
今日完成的任务清单
1.环境与磁盘管理
清理磁盘空间:删除系统盘上占用 35GB 的旧 checkpoint(ckpt/ 下两个大文件夹),释放空间。 创建软链接:将 ./ckpt 链接到数据盘 /root/autodl-tmp/ckpt,避免训练保存的模型撑爆系统盘。
迁移模型缓存:将HuggingFace模型缓存从系统盘(/root/.cache/huggingface)复制到数据盘(/root/autodl-tmp/.cache/huggingface),并建立软链接,确保后续模型下载和加载不占用系统盘。
2. 数据准备
下载数据集:使用 download_datasets.py 下载了 XSum 等数据集(存于 /root/autodl-tmp/datasets/)。
生成混合修订数据集:
编写并运行 generate_mixed_dataset.py,使用 facebook/opt-350m 模型,生成了 500 条原始文本 的 Polish、Rewrite、Expand 三个版本(共 1500 对数据)。
数据集保存为 CSV 和 JSON 格式:/root/autodl-tmp/mixed_revision_dataset/full_mixed_dataset.csv 和 train_mixed.json。
转换为 ImBD 训练格式:
编写 prepare_training_data.py 将 CSV 转为 JSON Lines。
编写 convert_to_imbd_format.py 将 JSON Lines 转为 ImBD 需要的 {“original”: […], “rewritten”: […]} 格式,最终得到 train_imbd.json(1500 对)。
3.训练基线模型(Polish-only)
使用 ImBD 自带的 polish 训练数据 ./data/ai_detection_500_polish.raw_data.json,运行 run_spo.py 成功训练 2 个 epoch。
训练输出显示:
Epoch 0 验证 AUC: 0.9537
Epoch 1 验证 AUC: 0.9665
模型保存至:/root/autodl-tmp/ckpt/baseline_polish_spo_lr_0.0001_beta_0.05_a_1/ours-finetuned.pth
4. 尝试训练混合模型(未完全成功,但已修复核心问题)
遇到的问题:训练混合模型时,ValueError: text input must be of type str,因为 DataLoader 返回的 batch 是 (list_of_original, list_of_sampled),而模型 forward_SPO_single 期望单个字符串元组。
解决方案:
修改 spo.py,添加 forward_SPO 方法以支持 batch 输入(通过判断 isinstance(text[1], list) 来拆分 batch 并循环调用 forward_SPO_single)。
但该方法仍未触发,最终采用更彻底的方案:修改 engine.py 中的训练循环,在调用模型前手动拆分 batch 为单样本。
20260415
今日成果
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python run_spo.py \
--train_dataset /root/autodl-tmp/mixed_revision_dataset/train_imbd.json \
--eval_dataset ../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json \
--task_name mixed_model \
--datanum 1500 \
--epochs 2 \
--lr 1e-4 \
--beta 0.05 \
--output_file ../results/mixed \
--base_model /root/autodl-tmp/models/opt-350m
Running with args: Namespace(lr=0.0001, beta=0.05, a=1, task_name='mixed_model', epochs=2, val_freq=1, ebt=False, datanum=1500, eval_only=False, SPOtrained='True', seed=42, from_pretrained=None, eval_dataset='../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json', output_file='../results/mixed', base_model='/root/autodl-tmp/models/opt-350m', cache_dir='./models', train_dataset='/root/autodl-tmp/mixed_revision_dataset/train_imbd.json')
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3433.25it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3530.70it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
1500
150
Fine-tuning model...
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:74: FutureWarning: `torch.cuda.amp.GradScaler(args...)` is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` instead.
scaler = GradScaler()
Fine-tuning: 0 epoch: 0%| | 0/1500 [00:00<?, ?it/s]/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:88: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`. Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
scheduler.step()
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:89: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with autocast():
Fine-tuning: 0 epoch: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1500/1500 [02:14<00:00, 11.18it/s]
Total time: 134.2162s
ROC AUC: 0.6236, PR AUC: 0.7695
Real mean/std: 1.96/1.37, Samples mean/std: 0.36/11.27
Average Loss for Epoch 0: 0.06783304725150612
Evaluating on xsum...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:06<00:00, 24.86it/s]
Total time: 6.0348s
val_loss: 0.295827
val_ROC_AUC: 0.6240, PR AUC: 0.6718
val_Real_mean/std: 1.33/1.15, val_Samples_mean/std: 1.91/1.57
==========
Fine-tuning: 1 epoch: 0%| | 0/1500 [00:00<?, ?it/s]/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:89: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with autocast():
Fine-tuning: 1 epoch: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1500/1500 [02:06<00:00, 11.83it/s]
Total time: 126.7778s
ROC AUC: 0.5866, PR AUC: 0.7499
Real mean/std: 2.01/1.29, Samples mean/std: -1.99/14.64
Average Loss for Epoch 1: 0.03590765879201068
Evaluating on xsum...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.56it/s]
Total time: 5.8697s
val_loss: 0.296775
val_ROC_AUC: 0.6047, PR AUC: 0.6520
val_Real_mean/std: 1.42/1.19, val_Samples_mean/std: 1.92/1.60
==========
Saved finetuned model to ./ckpt/mixed_model_spo_lr_0.0001_beta_0.05_a_1/ours-finetuned.pth
修改后的spo.py成为
import torch
from torch import nn
import sys
from peft import get_peft_model, LoraConfig, TaskType, AutoPeftModelForCausalLM
import os
import torch.nn.functional as F
from utils_spo import calculate_SPO_loss
from transformers import AutoModelForCausalLM, AutoTokenizer
import time
def from_pretrained(cls, model_name, kwargs, cache_dir):
if "/" in model_name:
local_path = os.path.join(cache_dir, model_name.split("/")[1])
else:
local_path = os.path.join(cache_dir, model_name)
if os.path.exists(local_path):
return cls.from_pretrained(local_path, **kwargs)
return cls.from_pretrained(model_name, **kwargs, cache_dir=cache_dir, device_map='auto')
model_fullnames = {
'gpt-neo-2.7B': 'EleutherAI/gpt-neo-2.7B',
'gpt-j-6B': 'EleutherAI/gpt-j-6B',
}
float16_models = ['gpt-j-6B']
def get_model_fullname(model_name):
return model_fullnames[model_name] if model_name in model_fullnames else model_name
def load_tokenizer(model_name, for_dataset, cache_dir):
model_fullname = get_model_fullname(model_name)
optional_tok_kwargs = {}
if "facebook/opt-" in model_fullname:
print("Using non-fast tokenizer for OPT")
optional_tok_kwargs['fast'] = False
if for_dataset in ['pubmed']:
optional_tok_kwargs['padding_side'] = 'left'
else:
optional_tok_kwargs['padding_side'] = 'right'
base_tokenizer = from_pretrained(AutoTokenizer, model_fullname, optional_tok_kwargs, cache_dir=cache_dir)
if base_tokenizer.pad_token_id is None:
base_tokenizer.pad_token_id = base_tokenizer.eos_token_id
if '13b' in model_fullname:
base_tokenizer.pad_token_id = 0
return base_tokenizer
def get_sampling_discrepancy_analytic(logits_ref, logits_score, labels):
if logits_ref.size(-1) != logits_score.size(-1):
vocab_size = min(logits_ref.size(-1), logits_score.size(-1))
logits_ref = logits_ref[:, :, :vocab_size]
logits_score = logits_score[:, :, :vocab_size]
labels = labels.unsqueeze(-1) if labels.ndim == logits_score.ndim - 1 else labels
lprobs_score = torch.log_softmax(logits_score, dim=-1)
probs_ref = torch.softmax(logits_ref, dim=-1)
log_likelihood = lprobs_score.gather(dim=-1, index=labels).squeeze(-1)
mean_ref = (probs_ref * lprobs_score).sum(dim=-1)
var_ref = (probs_ref * torch.square(lprobs_score)).sum(dim=-1) - torch.square(mean_ref)
discrepancy = (log_likelihood.sum(dim=-1) - mean_ref.sum(dim=-1)) / var_ref.sum(dim=-1).sqrt()
return discrepancy, log_likelihood.sum(dim=-1)
class ComputeScore(nn.Module):
def __init__(self, scoring_model_name, reference_model_name, SPOtrained=True, SPO_beta=0.5, dataset='xsum', device='cuda', cache_dir='./models'):
super().__init__()
self.device = device
self.reference_model_name = get_model_fullname(reference_model_name)
self.scoring_model_name = get_model_fullname(scoring_model_name)
self.beta = SPO_beta
def load_model(model_name, device, cache_dir, SPOtrained=True):
model_fullname = get_model_fullname(model_name)
print(f'Loading model {model_fullname}...')
model_kwargs = {}
if model_name in float16_models:
model_kwargs.update(dict(torch_dtype=torch.float16))
if 'gpt-j' in model_name:
model_kwargs.update(dict(revision='float16'))
if SPOtrained:
model = from_pretrained(AutoModelForCausalLM, model_fullname, model_kwargs, cache_dir=cache_dir)
else:
model = from_pretrained(AutoPeftModelForCausalLM, model_fullname, model_kwargs, cache_dir=cache_dir)
print('Moving model to GPU...', end='', flush=True)
start = time.time()
model.to(device)
print(f'DONE ({time.time() - start:.2f}s)')
return model
self.scoring_tokenizer = load_tokenizer(scoring_model_name, dataset, cache_dir=cache_dir)
scoring_model = load_model(scoring_model_name, device, cache_dir, SPOtrained)
self.peft_config = LoraConfig(
task_type=TaskType.CAUSAL_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1
)
reference_model = load_model(reference_model_name, device, cache_dir, SPOtrained)
if SPOtrained:
self.scoring_model = get_peft_model(scoring_model, self.peft_config)
self.reference_model = get_peft_model(reference_model, self.peft_config)
else:
self.scoring_model = scoring_model
self.reference_model = reference_model
self.reference_tokenizer = load_tokenizer(reference_model_name, dataset, cache_dir=cache_dir)
self.criterion_fn = get_sampling_discrepancy_analytic
self.forward = self.forward_SPO
self.scoring_model.print_trainable_parameters()
def print_gradient_requirement(self):
for name, param in self.named_parameters():
gradient_requirement = 'Requires Grad' if param.requires_grad else 'Does not require grad'
color_code = '\033[92m' if param.requires_grad else '\033[91m'
reset_color = '\033[0m'
print(f"{name}: {color_code}{gradient_requirement}{reset_color}")
def register_no_grad(self, module_names):
for name, param in self.named_parameters():
for selected_module in module_names:
if selected_module in name:
param.requires_grad = False
def save_pretrained(self, save_directory):
os.makedirs(save_directory, exist_ok=True)
torch.save(self.state_dict(), os.path.join(save_directory, "model.bin"))
def from_pretrained(self, load_directory):
if not os.path.exists(load_directory):
raise ValueError(f"Directory {load_directory} does not exist.")
self.load_state_dict(torch.load(os.path.join(load_directory, "model.bin"), map_location=self.device))
def get_SPO_input(self, tokenized=None, text=[""], labels=[""], training_module=False):
if training_module:
logits_score = self.scoring_model(tokenized.input_ids, attention_mask=tokenized.attention_mask).logits[:,:-1,:]
logits_ref = logits_score
if self.reference_model_name != self.scoring_model_name:
tokenized = self.reference_tokenizer(text, return_tensors="pt", padding=True, return_token_type_ids=False, add_special_tokens=True, return_attention_mask=True).to(self.device)
assert torch.all(tokenized.input_ids[:, 1:] == labels), "Tokenizer is mismatch."
logits_ref = self.reference_model(tokenized.input_ids).logits[:,:-1,:]
crit, SPO_input = self.criterion_fn(logits_ref, logits_score, labels)
else:
with torch.no_grad():
if self.reference_model_name != self.scoring_model_name:
tokenized = self.reference_tokenizer(text, return_tensors="pt", padding=True, return_token_type_ids=False, add_special_tokens=True, return_attention_mask=True).to(self.device)
assert torch.all(tokenized.input_ids[:, 1:] == labels), "Tokenizer is mismatch."
logits_score = self.reference_model(tokenized.input_ids, attention_mask=tokenized.attention_mask).logits[:,:-1,:]
logits_ref = logits_score
crit, SPO_input = self.criterion_fn(logits_ref, logits_score, labels)
return crit, SPO_input, logits_score
def forward_SPO(self, text):
original_list, sampled_list = text
batch_outputs = []
for orig, samp in zip(original_list, sampled_list):
out = self.forward_SPO_single((orig, samp))
batch_outputs.append(out)
loss = torch.stack([o['loss'] for o in batch_outputs]).mean()
crit = [torch.cat([o['crit'][i] for o in batch_outputs]) for i in range(4)]
return {'loss': loss, 'crit': crit}
def forward_SPO_single(self, text):
original_text = text[0]
sampled_text = text[1]
tokenized = self.scoring_tokenizer(
str(sampled_text) if sampled_text is not None else "",
return_tensors="pt",
padding=True,
truncation=True,
max_length=512,
return_token_type_ids=False
).to(self.device)
labels = tokenized.input_ids[:, 1:]
tokenized_origin = self.scoring_tokenizer(
str(original_text) if original_text is not None else "",
return_tensors="pt",
padding=True,
truncation=True,
max_length=512,
return_token_type_ids=False
).to(self.device)
labels_origin = tokenized_origin.input_ids[:, 1:]
ref_original_crit, ref_prefered_logprob, _ = self.get_SPO_input(tokenized_origin, original_text, labels_origin)
train_original_crit, train_prefered_logprob, _ = self.get_SPO_input(tokenized_origin, original_text, labels_origin, training_module=True)
ref_sampled_crit, ref_disprefered_logprob, _ = self.get_SPO_input(tokenized, sampled_text, labels)
train_sampled_crit, train_disprefered_logprob, _ = self.get_SPO_input(tokenized, sampled_text, labels, training_module=True)
SPOloss, _, _, _, _ = calculate_SPO_loss(
train_prefered_logprob,
train_disprefered_logprob,
ref_prefered_logprob,
ref_disprefered_logprob,
beta=self.beta
)
output = dict(
crit=[ref_original_crit, train_original_crit, ref_sampled_crit, train_sampled_crit],
loss=SPOloss
)
return output
engine.py修改成了
# -*- coding: utf-8 -*-
from torch.utils.data import DataLoader
import tqdm
from torch.cuda.amp import GradScaler, autocast
import torch.nn.functional as F
from torch import nn
import torch
import numpy as np
from torch.utils.tensorboard import SummaryWriter
import datetime
import os
import json
from metrics import get_roc_metrics, get_precision_recall_metrics
from torch.optim.lr_scheduler import CosineAnnealingLR
from torch.optim import AdamW
import time
def evaluate_model_SPO(model, data, DEVICE):
model.to(DEVICE)
model.eval()
loss = 0
eval_loader = DataLoader(data, batch_size=1, shuffle=False)
epoch_crit_train_original, epoch_crit_train_sampled = [],[]
start_time = time.time()
with torch.no_grad():
for batch in tqdm.tqdm(eval_loader, desc="Evaluating"):
# batch 是 (original_list, sampled_list),每个列表长度为1
orig_list, samp_list = batch
orig = orig_list[0] if isinstance(orig_list, list) else orig_list
samp = samp_list[0] if isinstance(samp_list, list) else samp_list
output = model.forward_SPO_single((orig, samp))
loss += output['loss'].item()
epoch_crit_train_original.extend(output['crit'][1].tolist())
epoch_crit_train_sampled.extend(output['crit'][3].tolist())
print(f"Total time: {time.time() - start_time:.4f}s")
avg_loss = loss / len(eval_loader)
fpr, tpr, roc_auc = get_roc_metrics(epoch_crit_train_original, epoch_crit_train_sampled)
p, r, pr_auc = get_precision_recall_metrics(epoch_crit_train_original, epoch_crit_train_sampled)
print(f"val_loss: {avg_loss:.6f}")
print(f"val_ROC_AUC: {roc_auc:.4f}, PR AUC: {pr_auc:.4f}")
print(f"val_Real_mean/std: {np.mean(epoch_crit_train_original):.2f}/{np.std(epoch_crit_train_original):.2f}, val_Samples_mean/std: {np.mean(epoch_crit_train_sampled):.2f}/{np.std(epoch_crit_train_sampled):.2f}")
print("="*10)
results_dict = {
"name": "SPO",
'val_loss': avg_loss,
'val_ROC_AUC': roc_auc,
'val_PR_AUC': pr_auc,
'val_crit_real_mean': np.mean(epoch_crit_train_original),
'val_crit_real_std': np.std(epoch_crit_train_original),
'val_crit_sampled_mean': np.mean(epoch_crit_train_sampled),
'val_crit_sampled_std': np.std(epoch_crit_train_sampled),
'crit_real': epoch_crit_train_original,
'crit_sampled': epoch_crit_train_sampled,
'fpr': fpr,
'tpr': tpr,
}
return results_dict
def fine_tune_ours(model, data, DEVICE, ckpt_dir='./ckpt', args=None):
current_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
writer = SummaryWriter(log_dir=f"logs/{args.task_name}_spo_lr_{args.lr}_beta_{args.beta}_a_{args.a}_{current_time}/train_ai_detection")
train_loader = DataLoader(data[0], batch_size=1, shuffle=True)
epochs = args.epochs
optimizer = AdamW(model.parameters(), lr=args.lr)
scheduler = CosineAnnealingLR(optimizer, T_max=len(train_loader) * epochs, eta_min=0,
last_epoch=-1)
scaler = GradScaler()
model.to(DEVICE)
accumulation_steps = args.a
epoch_losses, i, loss = [], 0, torch.tensor(0.0).to(DEVICE)
epoch_crit_train_original, epoch_crit_train_sampled = [],[]
start_time = time.time()
for epoch in range(epochs):
optimizer.zero_grad()
start_time = time.time()
for batch in tqdm.tqdm(train_loader, desc=f"Fine-tuning: {epoch} epoch"):
orig_list, samp_list = batch
orig = orig_list[0] if isinstance(orig_list, list) else orig_list
samp = samp_list[0] if isinstance(samp_list, list) else samp_list
scheduler.step()
with autocast():
outputs_1 = model.forward_SPO_single((orig, samp))
loss += outputs_1['loss'].to(torch.float32) / accumulation_steps
epoch_crit_train_original.extend(outputs_1['crit'][1].tolist())
epoch_crit_train_sampled.extend(outputs_1['crit'][3].tolist())
if ((i + 1) % accumulation_steps) == 0:
scaler.scale(loss).backward()
scaler.step(optimizer)
optimizer.zero_grad()
scaler.update()
writer.add_scalar('Loss/train', loss.item(), i)
epoch_losses.append(loss.item())
loss = torch.tensor(0.0).to(DEVICE)
i += 1
print(f"Total time: {time.time() - start_time:.4f}s")
fpr, tpr, roc_auc = get_roc_metrics(epoch_crit_train_original, epoch_crit_train_sampled)
p, r, pr_auc = get_precision_recall_metrics(epoch_crit_train_original, epoch_crit_train_sampled)
print(f"ROC AUC: {roc_auc:.4f}, PR AUC: {pr_auc:.4f}")
print(f"Real mean/std: {np.mean(epoch_crit_train_original):.2f}/{np.std(epoch_crit_train_original):.2f}, Samples mean/std: {np.mean(epoch_crit_train_sampled):.2f}/{np.std(epoch_crit_train_sampled):.2f}")
epoch_avg_loss = np.mean(epoch_losses)
writer.add_scalar('Loss/epoch', epoch_avg_loss, epoch)
writer.add_scalar('ROC_AUC/epoch', roc_auc, epoch)
writer.add_scalar('PR_AUC/epoch', pr_auc, epoch)
writer.add_scalar('Real_mean/epoch', np.mean(epoch_crit_train_original), epoch)
writer.add_scalar('Real_std/epoch', np.std(epoch_crit_train_original), epoch)
writer.add_scalar('Sampled_mean/epoch', np.mean(epoch_crit_train_sampled), epoch)
writer.add_scalar('Sampled_std/epoch', np.std(epoch_crit_train_sampled), epoch)
epoch_crit_train_original, epoch_crit_train_sampled = [], [] # reset crit
print(f"\nAverage Loss for Epoch {epoch}: {epoch_avg_loss}")
if ((epoch+1) % args.val_freq) == 0:
dataset_name = args.eval_dataset.split("/")[-1].split("_")[0]
print(f"Evaluating on {dataset_name}...")
val_result = evaluate_model_SPO(model, data[1], DEVICE)
valwriter = SummaryWriter(log_dir=f"logs/{args.task_name}_spo_lr_{args.lr}_beta_{args.beta}_a_{args.a}_{current_time}/val_{dataset_name}")
valwriter.add_scalar('val_Loss/epoch', val_result['val_loss'], epoch)
valwriter.add_scalar('val_ROC_AUC/epoch', val_result['val_ROC_AUC'], epoch)
valwriter.add_scalar('val_PR_AUC/epoch', val_result['val_PR_AUC'], epoch)
valwriter.add_scalar('val_Real_mean/epoch', val_result['val_crit_real_mean'], epoch)
valwriter.add_scalar('val_Real_std/epoch', val_result['val_crit_real_std'], epoch)
valwriter.add_scalar('val_Sampled_mean/epoch', val_result['val_crit_sampled_mean'], epoch)
valwriter.add_scalar('val_Sampled_std/epoch', val_result['val_crit_sampled_std'], epoch)
valwriter.close()
if not os.path.exists(ckpt_dir):
os.makedirs(ckpt_dir)
model.save_pretrained(ckpt_dir)
print(f"Saved finetuned model to {os.path.join(ckpt_dir, 'ours-finetuned.pth')}")
writer.close()
return model
def run(
model,
data,
DEVICE,
args,
ckpt_dir='./ckpt',
):
if args.ebt or args.eval_only:
print("Evaluating model before tuning...")
dataset_name = args.eval_dataset.split("/")[-1].split("_")[0]
d = evaluate_model_SPO(model, data[1], DEVICE)
if args.SPOtrained:
output_path = os.path.join(args.output_file, f"{dataset_name}.spo.json" )
else:
method_name=args.base_model.split("_")[-1]
output_path = os.path.join(args.output_file, f"{dataset_name}.{method_name}.json" )
with open(output_path, "w") as j:
json.dump(d,j)
print(f"Results saved to {output_path}.")
if args.eval_only:
return
print('Fine-tuning model...')
model = fine_tune_ours(
model,
data,
DEVICE=DEVICE,
ckpt_dir=ckpt_dir,
args=args
)
之前生成的1500条数据里有的有问题,算是没有清洗处理,现在处理一下可以运行了,虽然AUC有点低,不如基线模型的高,但是我们要做的事是
- 评估基线模型在rewrite和expand测试集上的AUC(证明泛化能力差)
- 评估混合模型在rewrite和expand测试集上的AUC(证明混合训练提升泛化)
- 对比表格,完成实验报告。
20260422
(base) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# conda activate ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# cd /root/autodl-tmp/ImBD-main/ImBD/spo
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export HF_HUB_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export TRANSFORMERS_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python eval_models.py
Loading baseline model from /root/autodl-tmp/ckpt/baseline_polish_spo_lr_0.0001_beta_0.05_a_1/model.bin...
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 985.06it/s]
Moving model to GPU...DONE (0.01s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3773.13it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
Evaluating baseline on polish...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:06<00:00, 24.88it/s]
Total time: 6.0288s
val_loss: 8.198945
val_ROC_AUC: 0.9672, PR AUC: 0.9708
val_Real_mean/std: -11.33/2.13, val_Samples_mean/std: -5.37/2.51
==========
polish ROC_AUC: 0.9672
Evaluating baseline on rewrite...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 26.34it/s]
Total time: 5.6959s
val_loss: 5.603343
val_ROC_AUC: 0.7993, PR AUC: 0.7986
val_Real_mean/std: -11.33/2.13, val_Samples_mean/std: -8.93/1.84
==========
rewrite ROC_AUC: 0.7993
Evaluating baseline on expand...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.93it/s]
Total time: 5.7862s
val_loss: 6.963021
val_ROC_AUC: 0.9737, PR AUC: 0.9768
val_Real_mean/std: -11.33/2.13, val_Samples_mean/std: -5.81/1.98
==========
expand ROC_AUC: 0.9737
Loading mixed model from /root/autodl-tmp/ckpt/mixed_model_spo_lr_0.0001_beta_0.05_a_1/model.bin...
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3238.26it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 4096.86it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
Evaluating mixed on polish...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.87it/s]
Total time: 5.7977s
val_loss: 0.296775
val_ROC_AUC: 0.6047, PR AUC: 0.6520
val_Real_mean/std: 1.42/1.19, val_Samples_mean/std: 1.92/1.60
==========
polish ROC_AUC: 0.6047
Evaluating mixed on rewrite...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.51it/s]
Total time: 5.8809s
val_loss: 0.410963
val_ROC_AUC: 0.2808, PR AUC: 0.3702
val_Real_mean/std: 1.42/1.19, val_Samples_mean/std: 0.40/1.26
==========
rewrite ROC_AUC: 0.2808
Evaluating mixed on expand...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 26.25it/s]
Total time: 5.7143s
val_loss: 0.278520
val_ROC_AUC: 0.7127, PR AUC: 0.7124
val_Real_mean/std: 1.42/1.19, val_Samples_mean/std: 2.36/1.25
==========
expand ROC_AUC: 0.7127
==================================================
Comparison of ROC AUC
==================================================
Task Baseline Mixed
polish 0.9672 0.6047
rewrite 0.7993 0.2808
expand 0.9737 0.7127
Results saved to ../results/comparison.json
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ls /root/autodl-tmp/ImBD-main/ImBD/data/rewrite/gpt-3.5-turbo/*.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/rewrite/gpt-3.5-turbo/pubmed_rewrite_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/rewrite/gpt-3.5-turbo/squad_rewrite_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/rewrite/gpt-3.5-turbo/writing_rewrite_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/rewrite/gpt-3.5-turbo/xsum_rewrite_gpt-3.5-turbo.raw_data.json
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ls /root/autodl-tmp/ImBD-main/ImBD/data/expand/gpt-3.5-turbo/*.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/expand/gpt-3.5-turbo/pubmed_expand_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/expand/gpt-3.5-turbo/squad_expand_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/expand/gpt-3.5-turbo/writing_expand_gpt-3.5-turbo.raw_data.json
/root/autodl-tmp/ImBD-main/ImBD/data/expand/gpt-3.5-turbo/xsum_expand_gpt-3.5-turbo.raw_data.json
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# pip install -U transformers modelscope
Looking in indexes: http://mirrors.aliyun.com/pypi/simple
Requirement already satisfied: transformers in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (5.3.0)
Collecting transformers
Downloading http://mirrors.aliyun.com/pypi/packages/29/fb/162a66789c65e5afa3b051309240c26bf37fbc8fea285b4546ae747995a2/transformers-5.5.4-py3-none-any.whl (10.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 1.5 MB/s 0:00:06
Collecting modelscope
Downloading http://mirrors.aliyun.com/pypi/packages/23/12/6c02d0c9a8e7f35c91b5f9c14b184fbec26f290b7314cb1cb98b3d4bf4df/modelscope-1.36.1-py3-none-any.whl (6.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.1/6.1 MB 1.5 MB/s 0:00:03
Requirement already satisfied: huggingface-hub<2.0,>=1.5.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (1.6.0)
Requirement already satisfied: numpy>=1.17 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (2.2.6)
Requirement already satisfied: packaging>=20.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (25.0)
Requirement already satisfied: pyyaml>=5.1 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (6.0.3)
Requirement already satisfied: regex>=2025.10.22 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (2026.2.28)
Requirement already satisfied: tokenizers<=0.23.0,>=0.22.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (0.22.2)
Requirement already satisfied: typer in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (0.24.1)
Requirement already satisfied: safetensors>=0.4.3 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (0.7.0)
Requirement already satisfied: tqdm>=4.27 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from transformers) (4.67.3)
Requirement already satisfied: filelock>=3.10.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (3.25.1)
Requirement already satisfied: fsspec>=2023.5.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (2026.2.0)
Requirement already satisfied: hf-xet<2.0.0,>=1.3.2 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (1.3.2)
Requirement already satisfied: httpx<1,>=0.23.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (0.28.1)
Requirement already satisfied: typing-extensions>=4.1.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (4.15.0)
Requirement already satisfied: anyio in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (4.12.1)
Requirement already satisfied: certifi in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (2026.2.25)
Requirement already satisfied: httpcore==1.* in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (1.0.9)
Requirement already satisfied: idna in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (3.11)
Requirement already satisfied: h11>=0.16 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (0.16.0)
Requirement already satisfied: requests>=2.25 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from modelscope) (2.32.5)
Requirement already satisfied: setuptools in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from modelscope) (80.10.2)
Requirement already satisfied: urllib3>=1.26 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from modelscope) (2.6.3)
Requirement already satisfied: charset_normalizer<4,>=2 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from requests>=2.25->modelscope) (3.4.5)
Requirement already satisfied: exceptiongroup>=1.0.2 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from anyio->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (1.3.1)
Requirement already satisfied: click>=8.2.1 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from typer->transformers) (8.3.1)
Requirement already satisfied: shellingham>=1.3.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from typer->transformers) (1.5.4)
Requirement already satisfied: rich>=12.3.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from typer->transformers) (14.3.3)
Requirement already satisfied: annotated-doc>=0.0.2 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from typer->transformers) (0.0.4)
Requirement already satisfied: markdown-it-py>=2.2.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from rich>=12.3.0->typer->transformers) (4.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from rich>=12.3.0->typer->transformers) (2.19.2)
Requirement already satisfied: mdurl~=0.1 in /root/miniconda3/envs/ImBD/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich>=12.3.0->typer->transformers) (0.1.2)
Installing collected packages: modelscope, transformers
Attempting uninstall: transformers
Found existing installation: transformers 5.3.0
Uninstalling transformers-5.3.0:
Successfully uninstalled transformers-5.3.0
Successfully installed modelscope-1.36.1 transformers-5.5.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export HF_HOME=/root/autodl-tmp/.cache/huggingface
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export MODELSCOPE_CACHE=/root/autodl-tmp/.cache/modelscope
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python -c "from modelscope import snapshot_download; snapshot_download('Qwen/Qwen2-1.5B-Instruct', cache_dir='/root/autodl-tmp/.cache/modelscope')"
Downloading Model from https://www.modelscope.cn to directory: /root/autodl-tmp/.cache/modelscope/Qwen/Qwen2-1.5B-Instruct
2026-04-22 10:47:34,682 - modelscope - INFO - Got 10 files, start to download ...
Downloading [generation_config.json]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████| 242/242 [00:00<00:00, 1.02kB/s]
Downloading [README.md]: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3.45k/3.45k [00:00<00:00, 14.7kB/s]
Downloading [LICENSE]: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 11.1k/11.1k [00:00<00:00, 44.6kB/s]
Downloading [config.json]: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 660/660 [00:00<00:00, 2.35kB/s]
Downloading [configuration.json]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 48.0/48.0 [00:00<00:00, 142B/s]
Downloading [merges.txt]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.59M/1.59M [00:00<00:00, 3.77MB/s]
Downloading [tokenizer_config.json]: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 1.26k/1.26k [00:00<00:00, 5.28kB/s]
Downloading [tokenizer.json]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 6.70M/6.70M [00:00<00:00, 10.7MB/s]
Downloading [vocab.json]: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.65M/2.65M [00:00<00:00, 4.88MB/s]
Downloading [model.safetensors]: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 2.88G/2.88G [05:59<00:00, 8.58MB/s]
Processing 10 items: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10.0/10.0 [05:59<00:00, 36.0s/it]
2026-04-22 10:53:34,676 - modelscope - INFO - Finish downloading 10 files for repo 'Qwen/Qwen2-1.5B-Instruct'
2026-04-22 10:53:34,677 - modelscope - INFO - Creating symbolic link [/root/autodl-tmp/.cache/modelscope/Qwen/Qwen2-1.5B-Instruct].
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ^C
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ls | 1.00M/6.70M [00:00<00:02, 2.22MB/s]
__pycache__ ckpt dataset.py engine.py engine.py.bak2 eval_models.py evaluation.py inference.py logs metrics.py models run_spo.py spo.py spo.py.bak utils_spo.pyB/s]
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# cd /root/autodl-tmp
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp# du -sh * | sort -hr | head -20
20G ImBD-main
3.8G ckpt
3.7G miniconda3
1.2G datasets
634M models
106M mixed_revision_dataset
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp# cd /root/autodl-tmp/ImBD-main
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main# du -sh * | sort -hr | head -10
20G ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main# cd /root/autodl-tmp/ImBD-main/ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# du -sh * | sort -hr | head -10
20G ckpt
28M data
1.9M spo
712K results
184K logs
148K local_infer_ref
92K other_models
88K scripts
56K tools
36K imbd_roc_curve.png
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -la /root/autodl-tmp/ImBD-main/ImBD/ckpt
total 4
drwxr-xr-x 4 root root 134 Apr 14 19:12 .
drwxr-xr-x 15 root root 4096 Apr 14 19:50 ..
drwxr-xr-x 2 root root 31 Mar 10 17:54 Portuguese_polish_500_spo_lr_0.0001_beta_0.05_a_1
drwxr-xr-x 2 root root 31 Mar 10 16:55 ai_detection_polish_500_spo_lr_0.0001_beta_0.05_a_1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -lh /root/autodl-tmp/ImBD-main/ImBD/ckpt/
total 0
drwxr-xr-x 2 root root 31 Mar 10 17:54 Portuguese_polish_500_spo_lr_0.0001_beta_0.05_a_1
drwxr-xr-x 2 root root 31 Mar 10 16:55 ai_detection_polish_500_spo_lr_0.0001_beta_0.05_a_1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# find /root/autodl-tmp/ImBD-main/ImBD/ckpt -type f -size +1M -exec ls -lh {} \;
-rw-r--r-- 1 root root 20G Mar 10 16:56 /root/autodl-tmp/ImBD-main/ImBD/ckpt/ai_detection_polish_500_spo_lr_0.0001_beta_0.05_a_1/model.bin
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -la /root/autodl-tmp/ckpt/
total 4
drwxr-xr-x 5 root root 162 Apr 15 16:57 .
drwxr-xr-x 11 root root 4096 Apr 14 20:48 ..
drwxr-xr-x 2 root root 31 Apr 14 20:50 baseline_polish_spo_lr_0.0001_beta_0.05_a_1
drwxr-xr-x 2 root root 31 Apr 15 16:57 mixed_model_spo_lr_0.0001_beta_0.05_a_1
drwxr-xr-x 2 root root 31 Apr 15 16:34 polish_spo_lr_0.0001_beta_0.05_a_1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm /root/autodl-tmp/ImBD-main/ImBD/ckpt/ai_detection_polish_500_spo_lr_0.0001_beta_0.05_a_1/model.bin
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -lh /root/autodl-tmp/ImBD-main/ImBD/ckpt/Portuguese_polish_500_spo_lr_0.0001_beta_0.05_a_1/
total 416K
-rw-r--r-- 1 root root 413K Mar 10 17:54 model.bin
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# rm -rf /root/autodl-tmp/ImBD-main/ImBD/ckpt/Portuguese_polish_500_spo_lr_0.0001_beta_0.05_a_1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# df -h /root/autodl-tmp
Filesystem Size Used Avail Use% Mounted on
/dev/md0 50G 30G 21G 59% /root/autodl-tmp
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# cd /root/autodl-tmp/ImBD-main/ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# nohup python generate_qwen2_mixed.py > generate_qwen2.log 2>&1 &
[1] 4730
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# tail -f generate_qwen2.log
[1]+ Exit 2 nohup python generate_qwen2_mixed.py > generate_qwen2.log 2>&1
nohup: ignoring input
python: can't open file '/root/autodl-tmp/ImBD-main/ImBD/generate_qwen2_mixed.py': [Errno 2] No such file or directory
^C
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# nohup python generate_qwen2_mixed.py > generate_qwen2.log 2>&1 &
[1] 4867
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# tail -f generate_qwen2.log
nohup: ignoring input
`torch_dtype` is deprecated! Use `dtype` instead!
正在加载 Qwen2-1.5B-Instruct 模型...
Loading weights: 100%|██████████| 338/338 [00:01<00:00, 335.63it/s]
模型加载完成!
Generating: 100%|██████████| 500/500 [53:12<00:00, 6.39s/it]
完成!生成 500 条 rewrite/expand 样本,保存在 /root/autodl-tmp/mixed_revision_dataset_qwen2/rewrite_expand_500.csv
^C
[1]+ Done nohup python generate_qwen2_mixed.py > generate_qwen2.log 2>&1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# ls -l /root/autodl-tmp/ImBD-main/ImBD/data/ai_detection_500_polish.raw_data.json
-rw-r--r-- 1 root root 601000 Mar 10 10:11 /root/autodl-tmp/ImBD-main/ImBD/data/ai_detection_500_polish.raw_data.json
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# cd /root/autodl-tmp/ImBD-main/ImBD
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# python merge_qwen2_polish.py
合并完成,共 1500 对数据,保存至 /root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD# cd /root/autodl-tmp/ImBD-main/ImBD/spo
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export HF_HUB_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export TRANSFORMERS_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python run_spo.py \
--train_dataset /root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json \
--eval_dataset ../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json \
--task_name mixed_qwen2 \
--datanum 1500 \
--epochs 2 \
--lr 1e-4 \
--beta 0.05 \
--output_file ../results/mixed_qwen2 \
--base_model /root/autodl-tmp/models/opt-350m
Running with args: Namespace(lr=0.0001, beta=0.05, a=1, task_name='mixed_qwen2', epochs=2, val_freq=1, ebt=False, datanum=1500, eval_only=False, SPOtrained='True', seed=42, from_pretrained=None, eval_dataset='../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json', output_file='../results/mixed_qwen2', base_model='/root/autodl-tmp/models/opt-350m', cache_dir='./models', train_dataset='/root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json')
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3586.16it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3193.03it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
1500
150
Fine-tuning model...
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:74: FutureWarning: `torch.cuda.amp.GradScaler(args...)` is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` instead.
scaler = GradScaler()
Fine-tuning: 0 epoch: 0%| | 0/1500 [00:00<?, ?it/s]/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:88: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`. Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
scheduler.step()
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:89: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with autocast():
Fine-tuning: 0 epoch: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1500/1500 [02:07<00:00, 11.79it/s]
Total time: 127.2068s
ROC AUC: 0.2533, PR AUC: 0.3742
Real mean/std: -0.62/1.80, Samples mean/std: -2.29/2.02
Average Loss for Epoch 0: 0.0921937537838608
Evaluating on xsum...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 27.15it/s]
Total time: 5.5249s
val_loss: 0.010229
val_ROC_AUC: 0.1805, PR AUC: 0.3515
val_Real_mean/std: -1.74/1.13, val_Samples_mean/std: -3.47/1.64
==========
Fine-tuning: 1 epoch: 0%| | 0/1500 [00:00<?, ?it/s]/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:89: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with autocast():
Fine-tuning: 1 epoch: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1500/1500 [02:03<00:00, 12.14it/s]
Total time: 123.5899s
ROC AUC: 0.1995, PR AUC: 0.3499
Real mean/std: -1.62/2.41, Samples mean/std: -4.40/2.38
Average Loss for Epoch 1: 0.05741473008125915
Evaluating on xsum...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 27.40it/s]
Total time: 5.4753s
val_loss: 0.005600
val_ROC_AUC: 0.1093, PR AUC: 0.3277
val_Real_mean/std: -2.30/1.26, val_Samples_mean/std: -4.98/1.89
==========
Saved finetuned model to ./ckpt/mixed_qwen2_spo_lr_0.0001_beta_0.05_a_1/ours-finetuned.pth
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# cd /root/autodl-tmp/ImBD-main/ImBD/spo
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python -c "
> import torch
from spo import ComputeScore
from engine import evaluate_model_SPO
from dataset import CustomDataset_rewrite
import json
DEVICE = 'cuda'
BASE_MODEL_PATH = '/root/autodl-tmp/models/opt-350m'
CKPT_MIXED = '/root/autodl-tmp/ckpt/mixed_qwen2_spo_lr_0.0001_beta_0.05_a_1/model.bin'
test_sets = {
'polish': '../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json',
'rewrite': '../data/rewrite/gpt-3.5-turbo/xsum_rewrite_gpt-3.5-turbo.raw_data.json',
'expand': '../data/expand/gpt-3.5-turbo/xsum_expand_gpt-3.5-turbo.raw_data.json'
}
model = ComputeScore(BASE_MODEL_PATH, BASE_MODEL_PATH, SPOtrained=True, SPO_beta=0.05, cache_dir='./models')
state_dict = torch.load(CKPT_MIXED, map_location=DEVICE)
model.load_state_dict(state_dict)
model.to(DEVICE)
model.eval()
results = {}
for task, path in test_sets.items():
dataset = CustomDataset_rewrite(path)
eval_result = evaluate_model_SPO(model, dataset, DEVICE)
results[task] = eval_result['val_ROC_AUC']
print(f'{task} ROC_AUC: {eval_result["val_ROC_AUC"]:.4f}')
print('\\n混合模型评估完成。')
"
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3991.84it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3332.61it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 26.17it/s]
Total time: 5.7319s
val_loss: 0.005600
val_ROC_AUC: 0.1093, PR AUC: 0.3277
val_Real_mean/std: -2.30/1.26, val_Samples_mean/std: -4.98/1.89
==========
Traceback (most recent call last):
File "<string>", line 29, in <module>
NameError: name 'val_ROC_AUC' is not defined
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo#
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ls -l /root/autodl-tmp/ckpt/ | grep mixed
drwxr-xr-x 2 root root 31 Apr 15 16:57 mixed_model_spo_lr_0.0001_beta_0.05_a_1
drwxr-xr-x 2 root root 31 Apr 22 12:18 mixed_qwen2_spo_lr_0.0001_beta_0.05_a_1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# ls -l /root/autodl-tmp/ckpt/mixed_qwen2_spo_lr_0.0001_beta_0.05_a_1/
total 1300324
-rw-r--r-- 1 root root 1331529619 Apr 22 12:18 model.bin
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python eval_new_mixed.py
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3199.52it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 3141.64it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
Evaluating polish...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:06<00:00, 24.34it/s]
Total time: 6.1641s
val_loss: 0.005600
val_ROC_AUC: 0.1093, PR AUC: 0.3277
val_Real_mean/std: -2.30/1.26, val_Samples_mean/std: -4.98/1.89
==========
Keys: dict_keys(['name', 'val_loss', 'val_ROC_AUC', 'val_PR_AUC', 'val_crit_real_mean', 'val_crit_real_std', 'val_crit_sampled_mean', 'val_crit_sampled_std', 'crit_real', 'crit_sampled', 'fpr', 'tpr'])
polish ROC_AUC: 0.1093
Evaluating rewrite...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.66it/s]
Total time: 5.8465s
val_loss: 0.010298
val_ROC_AUC: 0.0499, PR AUC: 0.3114
val_Real_mean/std: -2.30/1.26, val_Samples_mean/std: -5.66/1.60
==========
Keys: dict_keys(['name', 'val_loss', 'val_ROC_AUC', 'val_PR_AUC', 'val_crit_real_mean', 'val_crit_real_std', 'val_crit_sampled_mean', 'val_crit_sampled_std', 'crit_real', 'crit_sampled', 'fpr', 'tpr'])
rewrite ROC_AUC: 0.0499
Evaluating expand...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.91it/s]
Total time: 5.7904s
val_loss: 0.001550
val_ROC_AUC: 0.1511, PR AUC: 0.3298
val_Real_mean/std: -2.30/1.26, val_Samples_mean/std: -4.26/1.43
==========
Keys: dict_keys(['name', 'val_loss', 'val_ROC_AUC', 'val_PR_AUC', 'val_crit_real_mean', 'val_crit_real_std', 'val_crit_sampled_mean', 'val_crit_sampled_std', 'crit_real', 'crit_sampled', 'fpr', 'tpr'])
expand ROC_AUC: 0.1511
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export HF_HUB_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# export TRANSFORMERS_OFFLINE=1
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python run_spo.py \
--train_dataset /root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json \
--eval_dataset ../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json \
--task_name mixed_qwen2_debug \
--datanum 100 \
--epochs 1 \
--lr 1e-4 \
--beta 0.05 \
--output_file ../results/debug \
--base_model /root/autodl-tmp/models/opt-350m
Running with args: Namespace(lr=0.0001, beta=0.05, a=1, task_name='mixed_qwen2_debug', epochs=1, val_freq=1, ebt=False, datanum=100, eval_only=False, SPOtrained='True', seed=42, from_pretrained=None, eval_dataset='../data/polish/gpt-3.5-turbo/xsum_polish_gpt-3.5-turbo.raw_data.json', output_file='../results/debug', base_model='/root/autodl-tmp/models/opt-350m', cache_dir='./models', train_dataset='/root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json')
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 4084.56it/s]
Moving model to GPU...DONE (0.00s)
Loading model /root/autodl-tmp/models/opt-350m...
Loading weights: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [00:00<00:00, 4032.75it/s]
Moving model to GPU...DONE (0.00s)
trainable params: 786,432 || all params: 331,982,848 || trainable%: 0.2369
100
150
Fine-tuning model...
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:74: FutureWarning: `torch.cuda.amp.GradScaler(args...)` is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` instead.
scaler = GradScaler()
Fine-tuning: 0 epoch: 0%| | 0/100 [00:00<?, ?it/s]/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:88: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`. Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
scheduler.step()
/root/autodl-tmp/ImBD-main/ImBD/spo/engine.py:89: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with autocast():
Fine-tuning: 0 epoch: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:09<00:00, 10.44it/s]
Total time: 9.5784s
ROC AUC: 0.4657, PR AUC: 0.5128
Real mean/std: -0.72/1.45, Samples mean/std: -0.85/1.68
Average Loss for Epoch 0: 0.3216328967275331
Evaluating on xsum...
Evaluating: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150/150 [00:05<00:00, 25.16it/s]
Total time: 5.9615s
val_loss: 0.074285
val_ROC_AUC: 0.4494, PR AUC: 0.5110
val_Real_mean/std: -1.31/1.08, val_Samples_mean/std: -1.63/1.64
==========
Saved finetuned model to ./ckpt/mixed_qwen2_debug_spo_lr_0.0001_beta_0.05_a_1/ours-finetuned.pth
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# python -c "
import json
with open('/root/autodl-tmp/mixed_revision_dataset_qwen2/train_mixed_qwen2.json') as f:
data = json.load(f)
print('样本数:', len(data['original']))
print('第一条 original:', data['original'][0][:200])
print('第一条 rewritten:', data['rewritten'][0][:200])
print('最后一条 original:', data['original'][-1][:200])
print('最后一条 rewritten:', data['rewritten'][-1][:200])
"
样本数: 1500
第一条 original: We're already looking forward to a brand new Premier League campaign - but what can we expect to be different next time round? Sky Sports News HQ understands that next month Premier League clubs will
第一条 rewritten: The dawn of a new Premier League season beckons, with whispers of change swirling in the air. Sky Sports News HQ hints at a shift in the winds, as clubs consider expanding the bench to accommodate nin
最后一条 original: NUT Cymru had responses from 17 of Wales' 22 local authorities to Freedom of Information requests.
The number of assaults average at eight per school day in Wales, which the union said was "a great co
最后一条 rewritten: NUT Cymru has responded to Freedom of Information requests submitted by 17 of Wales' 22 local authorities regarding their records of physical and verbal assaults by pupils towards teachers and other s
(ImBD) root@autodl-container-ba1a42beae-e2a0ce04:~/autodl-tmp/ImBD-main/ImBD/spo# head -n 2 /root/autodl-tmp/mixed_revision_dataset_qwen2/rewrite_expand_500.csv
original,rewrite,expand
"The full cost of damage in Newton Stewart, one of the areas worst affected, is still being assessed.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)