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

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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support