ICFlowNet released models
This is a lightweight, model-only release of ICFlowNet. It contains three versioned PyTorch checkpoints, the model definitions, and evaluation scripts. The clean-test data is downloaded separately from the released Zenodo artifact.
Included checkpoints
| File | Architecture | Evaluated output |
|---|---|---|
models/ic_hub_model.pt |
Single-task Dual-Hub GAT | Indirect calls |
models/ic_nohub_model.pt |
Single-task No-Hub ablation | Indirect calls |
models/mtl_model.pt |
Dual-Hub multi-task GAT | Returns, jump tables, indirect calls, and tail calls |
All checkpoints use the icflownet_model_v1 artifact format and store both
model_config and model_state_dict. They are custom DGL/PyTorch models, not
Transformers from_pretrained() checkpoints.
Repository contents
models/ released checkpoints
src/ model definitions
scripts/ single-task and multi-task evaluators
reference_results/metrics.json released FP32 metrics
verify_package.py package integrity/preflight check
download_data.sh resumable Zenodo clean-test downloader
smoke_test.py representative test of all three checkpoints
verify_results.py full-result comparison against the release
environment.yml pinned Conda environment
No clean-test graphs, labels, metadata, or executable binaries are included in the model repository.
Environment
The released setup uses Linux, Python 3.11, PyTorch 2.3, DGL 2.4, CUDA 11.8, and FP32 inference. The exact environment can be created with:
conda env create -f environment.yml
conda activate icflownet-ae
requirements.txt provides the smaller inference dependency set. Its DGL
wheel targets CUDA 11.8, but CPU inference remains available from the same
wheel.
Verify and smoke-test
Run the model-only integrity check:
python verify_package.py
Download the released artifact and extract its clean-test data locally:
bash download_data.sh
The downloader supports resume, checks the archive against the checksum in the
Zenodo record, extracts data/cleantest, verifies the index, and deletes the
downloaded archive after successful extraction. Set
ICFLOWNET_KEEP_ARCHIVE=1 to retain the archive. The download is about 8.2 GB
and the extracted clean-test directory is about 8.4 GB.
Load all three checkpoints and exercise both evaluation scopes and all four multi-task heads on CPU:
python smoke_test.py --device cpu
The smoke test is designed to confirm that the package is portable. It uses a small representative prefix and does not reproduce full aggregate metrics.
Full clean-test evaluation
Evaluate each single-task checkpoint on both scopes, in FP32, on GPU 0:
python scripts/eval_single_cleantest.py \
--checkpoint models/ic_hub_model.pt \
--clean_root data/cleantest \
--task indirectcall \
--scope both \
--output outputs/hub \
--gpu 0
python scripts/eval_single_cleantest.py \
--checkpoint models/ic_nohub_model.pt \
--clean_root data/cleantest \
--task indirectcall \
--scope both \
--output outputs/nohub \
--gpu 0
The released multi-task result used exactly two GPU processes:
for scope in overall long_range; do
torchrun --standalone --nproc_per_node=2 \
scripts/eval_cleantest_ddp.py \
--checkpoint models/mtl_model.pt \
--clean_root data/cleantest \
--scope "$scope" \
--output_dir "outputs/mtl/$scope"
done
If NCCL cannot initialize because of a local driver/NVML mismatch, keep GPU inference unchanged and use Gloo only for metric reduction:
export ICFLOWNET_DIST_BACKEND=gloo
For a portability check, or on a host without two working GPUs, the bundled single-device evaluator can run the same MTL logic on CPU or one GPU:
python scripts/eval_mtl_single_device.py \
--checkpoint models/mtl_model.pt \
--clean_root data/cleantest \
--scope both \
--output_dir outputs/mtl-single-device \
--device auto
Full CPU evaluation is supported but can be slow. The largest compressed graph is about 260 MB, so substantial RAM is required after decompression.
Released clean-test results
All results below use a fixed threshold of 0.5 and FP32 inference.
| Checkpoint / task | Overall F1 | Long-range F1 |
|---|---|---|
| Dual-Hub single-task / indirect call | 0.935525 | 0.930946 |
| No-Hub single-task / indirect call | 0.927454 | 0.924675 |
| Multi-task / indirect call | 0.954714 | 0.957179 |
| Multi-task / macro over four tasks | 0.952579 | 0.910253 |
Exact precision, recall, confusion matrices, and per-task MTL F1 values are in
reference_results/metrics.json.
After running all full evaluations into outputs/full/{hub,nohub,mtl}, verify
every aggregate against the release:
python verify_results.py outputs/full
Source and release provenance
- Source artifact: Ryan-hub-bit/icflownet_artifact
- Released model/data artifact: Zenodo 10.5281/zenodo.22291756
License and data note
The bundled software is released under the MIT License; see LICENSE. The
Zenodo record currently has no explicit rights/license metadata, so confirm the
intended checkpoint license before publishing the Hugging Face repository.