python-gfm 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_gfm-0.1.3 → python_gfm-0.1.4}/PKG-INFO +16 -4
- python_gfm-0.1.4/pyproject.toml +58 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/python_gfm.egg-info/PKG-INFO +16 -4
- {python_gfm-0.1.3 → python_gfm-0.1.4}/python_gfm.egg-info/SOURCES.txt +6 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/python_gfm.egg-info/entry_points.txt +2 -0
- python_gfm-0.1.4/python_gfm.egg-info/requires.txt +22 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/__init__.py +1 -1
- python_gfm-0.1.4/src/pygfm/cli/baseline_registry.py +103 -0
- python_gfm-0.1.4/src/pygfm/cli/baselines/__init__.py +1 -0
- python_gfm-0.1.4/src/pygfm/cli/baselines/stub_config.py +40 -0
- python_gfm-0.1.4/src/pygfm/cli/mdgpt_stages.py +270 -0
- python_gfm-0.1.4/src/pygfm/cli/run_yaml.py +46 -0
- python_gfm-0.1.4/src/pygfm/cli/script_runner.py +217 -0
- python_gfm-0.1.3/pyproject.toml +0 -30
- python_gfm-0.1.3/python_gfm.egg-info/requires.txt +0 -10
- {python_gfm-0.1.3 → python_gfm-0.1.4}/README.md +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/python_gfm.egg-info/dependency_links.txt +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/python_gfm.egg-info/top_level.txt +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/setup.cfg +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bim_gfm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bim_gfm/ablation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bim_gfm/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bim_gfm/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bridge/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bridge/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bridge/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/bridge/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/classic_gnn/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/classic_gnn/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/classic_gnn/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/build_instruct_arxiv_ds.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/constants.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/conversation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/eval/run_graphgpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/eval/run_graphgpt_LP.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/eval/run_vicuna.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/GraphLlama.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/GraphLlama_pl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/apply_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/apply_lora.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/builder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/compression.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/convert_fp16.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/graph_layers/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/graph_layers/clip_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/graph_layers/graph_transformer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/graph_layers/mpnn.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/graph_layers/simple_tokenizer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/make_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/model_adapter.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/model_registry.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/monkey_patch_non_inplace.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/model/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/protocol/openai_api_protocol.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/api_provider.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/bard_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/cacheflow_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/cli.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/controller.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/controller_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_block_arena_anony.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_block_arena_named.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_css.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_web_server.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_web_server_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/gradio_web_server_multi.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/huggingface_api.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/inference.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/model_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/model_worker_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/monitor/basic_stats.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/monitor/clean_battle_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/monitor/elo_analysis.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/monitor/hf_space_leaderboard_app.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/monitor/monitor.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/openai_api_server.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/register_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/test_message.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/serve/test_throughput.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/graphchat_trainer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/llama_flash_attn_monkey_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/train_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/train_light.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/train_lora.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/train/train_mem.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/graphgpt/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/gcot/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/build_instruct_arxiv_ds.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/constants.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/conversation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/eval/run_graphgpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/eval/run_graphgpt_LP.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/eval/run_vicuna.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/GraphLlama.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/GraphLlama_pl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/apply_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/apply_lora.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/builder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/compression.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/convert_fp16.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/graph_layers/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/graph_layers/clip_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/graph_layers/graph_transformer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/graph_layers/mpnn.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/graph_layers/simple_tokenizer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/make_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/model_adapter.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/model_registry.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/monkey_patch_non_inplace.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/model/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/protocol/openai_api_protocol.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/api_provider.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/bard_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/cacheflow_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/cli.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/controller.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/controller_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_block_arena_anony.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_block_arena_named.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_css.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_web_server.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_web_server_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/gradio_web_server_multi.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/huggingface_api.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/inference.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/model_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/model_worker_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/monitor/basic_stats.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/monitor/clean_battle_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/monitor/elo_analysis.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/monitor/hf_space_leaderboard_app.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/monitor/monitor.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/openai_api_server.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/register_worker.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/test_message.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/serve/test_throughput.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/graphchat_trainer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/llama_flash_attn_monkey_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/train_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/train_light.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/train_lora.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/train/train_mem.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphgpt/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphkeeper/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphkeeper/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphkeeper/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphkeeper/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphmore/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphmore/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphmore/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphmore/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphprompt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphprompt/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphprompt/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphprompt/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphprompt/prompt_layers.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/eval/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/eval/run_icl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/agent.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/conversation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/graph_instruction_dataset.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/icl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/llama_flash_attn_monkey_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/prompts.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/graph_text/samplers.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/deepseek.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/fake_llm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/gpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/llama_icl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/llm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/llm/smoke_llm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/train/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/train/run_sft.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/cfg_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/iterables.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/logging.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/np_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/basics/os_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/graph_tree.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/ppr.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/preprocess.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/pyg_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/data/textual_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/pkg/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/pkg/dict2xml.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/pkg/distributed.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/pkg/graph_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/pkg/hf_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/project/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graphtext/utils/project/exp.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graver/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graver/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graver/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/graver/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/hgprompt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/hgprompt/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/hgprompt/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/hgprompt/prompt_layers.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/eval/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/eval/eval_pretrain.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/eval/eval_pretrain_logit.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/eval/eval_res.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/fixtures/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/fixtures/smoke_bundle.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/io_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/apply_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/builder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/consolidate.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/llaga_llama.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/llaga_mpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/llaga_opt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/adapt_tokenizer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/attention.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/blocks.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/configuration_mpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/custom_embedding.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/flash_attn_triton.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/hf_prefixlm_converter.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/meta_init_context.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/modeling_mpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/norm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/language_model/mpt/param_init_fns.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/llaga_arch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/make_delta.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/model/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/paths.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/pyg_dataset.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/train/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/train/llaga_trainer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/train/llama_flash_attn_monkey_patch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/train/train.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/train/train_mem.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/utils/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/utils/constants.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/utils/conversation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/utils/data_process.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/llaga/utils/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgfm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgfm/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgfm/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgfm/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgpt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgpt/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgpt/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgpt/multidomain_gfm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/mdgpt/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/aug.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/layers/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/layers/discriminator.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/layers/discriminator2.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/layers/gcn.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/layers/readout.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/LP.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/dgi.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/gcnlayers.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/graphcl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/models/logreg.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/paths.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/multigprompt/utils/process.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/KG/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/KG/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/chemmol/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/chemmol/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/chemmol/gen_raw_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/ofa_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/Cora/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/Cora/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/Pubmed/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/Pubmed/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/arxiv/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/arxiv/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/wikics/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/single_graph/wikics/gen_data.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/data/torch_io.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/fs_datamanager.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/lightning/data_template.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/lightning/metric.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/lightning/module_template.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/lightning/training.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/layer/pyg.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/loss.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/GNN.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/dgl.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/pyg.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/task_predictor.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/models/util_model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/pooling.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/nn/resolver.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/utils/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/utils/datasets.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/utils/graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/utils/io.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/gp/utils/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/lightning_model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/models/model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/ofa_datasets.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/paths.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/run_cdm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/task_constructor.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/oneforall/utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/rag_gfm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/rag_gfm/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/lib/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/lib/data_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/lib/gcn_surrogate.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/lib/paths.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/01_train_gcn_surrogate.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/02_nettack_reports.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/03_assemble_final.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/04_random_perturb.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/05_metattack_surrogate.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/attack_data_gen/pipeline/06_metattack_batch.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/community_detection/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/community_detection/pipeline/01_detect_communities.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/community_detection/pipeline/02_analyze_communities.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/lib/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/lib/config.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/models/down_model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/models/moe.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/pipeline/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/downstream/pipeline/train_downstream.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/few_shot_gen/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/few_shot_gen/pipeline/01_generate_splits.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/node_feature_enhance/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/node_feature_enhance/pipeline/01_build_enhanced_x.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/paths.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/pretrain/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/pretrain/pipeline/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/pretrain/pipeline/data_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/pretrain/pipeline/model.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/sa2gfm/pretrain/pipeline/train_single.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/samgpt/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/samgpt/downprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/samgpt/downprompt_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/baseline_models/samgpt/preprompt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/cli/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/cli/sa2gfm.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/core/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/core/gnn_encoder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/domain_alignment.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/downstream_data_gen/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/downstream_data_gen/generator.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/feature_handling.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/graph_construction.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/graph_type_variants.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/loss_calculation.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/rag_gfm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/rag_gfm/corpus_builder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/private/utlis/rag_gfm/motif_builder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/backbone_models/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/backbone_models/gnn_encoder.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/default_ckpt.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/export_yaml.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/multigprompt_config.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/yaml_config.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/cli/yaml_flat_to_argv.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/model_bases.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/data_process/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/data_process/ogb_preprocess.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/data_process/pyg_graph.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/data_process/text_embed.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/llm/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/llm/dev_llm_stub.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/llm/hf_hub.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/llm/openai_api.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/llm/openai_client.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/cca_loss.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/domain_contrastive.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/domain_regularizer.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/gradient_reversal.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/info_nce_mi_matrix.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/loss_support.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/motif_contrastive_loss.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/negative_sampling.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/node_node_contrastive.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/pairwise_ranking.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/spectral_loss.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/loss_func/task_head.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/__init__.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/core.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/dict2xml.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/distributed_compat.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/graph_utils.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/ppr.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/others/runtime.py +0 -0
- {python_gfm-0.1.3 → python_gfm-0.1.4}/src/pygfm/public/utils/runtime.py +0 -0
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gfm
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: An AI copilot for graph data and models (Under active development).
|
|
5
5
|
Author-email: BUAA SKLCCSE <your.email@example.com>
|
|
6
6
|
License: Apache-2.0
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
Requires-Dist: numpy>=1.20
|
|
10
10
|
Requires-Dist: pyyaml>=6
|
|
11
11
|
Provides-Extra: torch
|
|
12
|
-
Requires-Dist: torch
|
|
13
|
-
Requires-Dist: torch-geometric>=2.3; extra == "torch"
|
|
12
|
+
Requires-Dist: torch==2.8.0; extra == "torch"
|
|
13
|
+
Requires-Dist: torch-geometric>=2.3.0; extra == "torch"
|
|
14
|
+
Requires-Dist: torch-scatter==2.1.2; extra == "torch"
|
|
15
|
+
Requires-Dist: torch-sparse==0.6.18; extra == "torch"
|
|
16
|
+
Requires-Dist: torch-cluster==1.6.3; extra == "torch"
|
|
17
|
+
Requires-Dist: torch-spline-conv==1.2.2; extra == "torch"
|
|
18
|
+
Requires-Dist: scipy>=1.9.0; extra == "torch"
|
|
19
|
+
Requires-Dist: transformers>=4.36.0; extra == "torch"
|
|
20
|
+
Requires-Dist: joblib>=1.3.0; extra == "torch"
|
|
21
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "torch"
|
|
22
|
+
Requires-Dist: ftfy>=6.1.0; extra == "torch"
|
|
23
|
+
Requires-Dist: regex>=2023.0.0; extra == "torch"
|
|
24
|
+
Requires-Dist: accelerate>=0.26.0; extra == "torch"
|
|
25
|
+
Requires-Dist: fschat>=0.2.36; extra == "torch"
|
|
14
26
|
Provides-Extra: dev
|
|
15
27
|
Requires-Dist: pytest; extra == "dev"
|
|
16
28
|
Requires-Dist: ruff; extra == "dev"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "python-gfm"
|
|
7
|
+
version = "0.1.4"
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "BUAA SKLCCSE", email = "your.email@example.com" },
|
|
10
|
+
]
|
|
11
|
+
description = "An AI copilot for graph data and models (Under active development)."
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
requires-python = ">=3.12"
|
|
14
|
+
license = { text = "Apache-2.0" }
|
|
15
|
+
dependencies = [
|
|
16
|
+
"numpy>=1.20",
|
|
17
|
+
"pyyaml>=6",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
# Optional ML / GFM stack (default target: Python 3.12, Linux x86_64, CUDA 12.8).
|
|
21
|
+
# Torch and PyG extension versions are pinned to match:
|
|
22
|
+
# https://data.pyg.org/whl/torch-2.8.0+cu128.html
|
|
23
|
+
#
|
|
24
|
+
# Typical install:
|
|
25
|
+
# pip install torch==2.8.0 --index-url https://download.pytorch.org/whl/cu128
|
|
26
|
+
# pip install "python-gfm[torch]" -f https://data.pyg.org/whl/torch-2.8.0+cu128.html
|
|
27
|
+
#
|
|
28
|
+
# The -f URL is required so pip picks the +pt28cu128 wheels for torch-scatter / torch-sparse /
|
|
29
|
+
# torch-cluster / torch-spline-conv. CPU-only torch: use https://data.pyg.org/whl/torch-2.8.0+cpu.html
|
|
30
|
+
# and install torch from PyPI or the PyTorch CPU index instead.
|
|
31
|
+
[project.optional-dependencies]
|
|
32
|
+
torch = [
|
|
33
|
+
"torch==2.8.0",
|
|
34
|
+
"torch-geometric>=2.3.0",
|
|
35
|
+
"torch-scatter==2.1.2",
|
|
36
|
+
"torch-sparse==0.6.18",
|
|
37
|
+
"torch-cluster==1.6.3",
|
|
38
|
+
"torch-spline-conv==1.2.2",
|
|
39
|
+
"scipy>=1.9.0",
|
|
40
|
+
"transformers>=4.36.0",
|
|
41
|
+
"joblib>=1.3.0",
|
|
42
|
+
"scikit-learn>=1.3.0",
|
|
43
|
+
"ftfy>=6.1.0",
|
|
44
|
+
"regex>=2023.0.0",
|
|
45
|
+
"accelerate>=0.26.0",
|
|
46
|
+
"fschat>=0.2.36",
|
|
47
|
+
]
|
|
48
|
+
dev = ["pytest", "ruff"]
|
|
49
|
+
|
|
50
|
+
[project.scripts]
|
|
51
|
+
pygfm = "pygfm.cli.run_yaml:main"
|
|
52
|
+
gfm = "pygfm.cli.run_yaml:main"
|
|
53
|
+
gfm-sa2gfm-pretrain = "pygfm.cli.sa2gfm:pretrain_main"
|
|
54
|
+
gfm-sa2gfm-downstream = "pygfm.cli.sa2gfm:downstream_main"
|
|
55
|
+
|
|
56
|
+
[tool.setuptools.packages.find]
|
|
57
|
+
where = ["src", "scripts", "ckpts"]
|
|
58
|
+
include = ["pygfm*"]
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-gfm
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: An AI copilot for graph data and models (Under active development).
|
|
5
5
|
Author-email: BUAA SKLCCSE <your.email@example.com>
|
|
6
6
|
License: Apache-2.0
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
Requires-Dist: numpy>=1.20
|
|
10
10
|
Requires-Dist: pyyaml>=6
|
|
11
11
|
Provides-Extra: torch
|
|
12
|
-
Requires-Dist: torch
|
|
13
|
-
Requires-Dist: torch-geometric>=2.3; extra == "torch"
|
|
12
|
+
Requires-Dist: torch==2.8.0; extra == "torch"
|
|
13
|
+
Requires-Dist: torch-geometric>=2.3.0; extra == "torch"
|
|
14
|
+
Requires-Dist: torch-scatter==2.1.2; extra == "torch"
|
|
15
|
+
Requires-Dist: torch-sparse==0.6.18; extra == "torch"
|
|
16
|
+
Requires-Dist: torch-cluster==1.6.3; extra == "torch"
|
|
17
|
+
Requires-Dist: torch-spline-conv==1.2.2; extra == "torch"
|
|
18
|
+
Requires-Dist: scipy>=1.9.0; extra == "torch"
|
|
19
|
+
Requires-Dist: transformers>=4.36.0; extra == "torch"
|
|
20
|
+
Requires-Dist: joblib>=1.3.0; extra == "torch"
|
|
21
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "torch"
|
|
22
|
+
Requires-Dist: ftfy>=6.1.0; extra == "torch"
|
|
23
|
+
Requires-Dist: regex>=2023.0.0; extra == "torch"
|
|
24
|
+
Requires-Dist: accelerate>=0.26.0; extra == "torch"
|
|
25
|
+
Requires-Dist: fschat>=0.2.36; extra == "torch"
|
|
14
26
|
Provides-Extra: dev
|
|
15
27
|
Requires-Dist: pytest; extra == "dev"
|
|
16
28
|
Requires-Dist: ruff; extra == "dev"
|
|
@@ -361,7 +361,13 @@ src/pygfm/baseline_models/samgpt/downprompt.py
|
|
|
361
361
|
src/pygfm/baseline_models/samgpt/downprompt_graph.py
|
|
362
362
|
src/pygfm/baseline_models/samgpt/preprompt.py
|
|
363
363
|
src/pygfm/cli/__init__.py
|
|
364
|
+
src/pygfm/cli/baseline_registry.py
|
|
365
|
+
src/pygfm/cli/mdgpt_stages.py
|
|
366
|
+
src/pygfm/cli/run_yaml.py
|
|
364
367
|
src/pygfm/cli/sa2gfm.py
|
|
368
|
+
src/pygfm/cli/script_runner.py
|
|
369
|
+
src/pygfm/cli/baselines/__init__.py
|
|
370
|
+
src/pygfm/cli/baselines/stub_config.py
|
|
365
371
|
src/pygfm/private/__init__.py
|
|
366
372
|
src/pygfm/private/core/__init__.py
|
|
367
373
|
src/pygfm/private/core/gnn_encoder.py
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
numpy>=1.20
|
|
2
|
+
pyyaml>=6
|
|
3
|
+
|
|
4
|
+
[dev]
|
|
5
|
+
pytest
|
|
6
|
+
ruff
|
|
7
|
+
|
|
8
|
+
[torch]
|
|
9
|
+
torch==2.8.0
|
|
10
|
+
torch-geometric>=2.3.0
|
|
11
|
+
torch-scatter==2.1.2
|
|
12
|
+
torch-sparse==0.6.18
|
|
13
|
+
torch-cluster==1.6.3
|
|
14
|
+
torch-spline-conv==1.2.2
|
|
15
|
+
scipy>=1.9.0
|
|
16
|
+
transformers>=4.36.0
|
|
17
|
+
joblib>=1.3.0
|
|
18
|
+
scikit-learn>=1.3.0
|
|
19
|
+
ftfy>=6.1.0
|
|
20
|
+
regex>=2023.0.0
|
|
21
|
+
accelerate>=0.26.0
|
|
22
|
+
fschat>=0.2.36
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Resolve ``(baseline, stage)`` → runner for ``pygfm -c config.yaml``."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
import pkgutil
|
|
7
|
+
from typing import Any, Callable
|
|
8
|
+
|
|
9
|
+
from pygfm.cli.baselines.stub_config import ALL_SCRIPT_PAIRS
|
|
10
|
+
from pygfm.cli.script_runner import make_runner
|
|
11
|
+
|
|
12
|
+
Runner = Callable[[dict[str, Any]], None]
|
|
13
|
+
|
|
14
|
+
_STAGE_ALIASES: dict[str, str] = {
|
|
15
|
+
"ft": "finetune",
|
|
16
|
+
"finetune_node": "finetune",
|
|
17
|
+
"train": "pretrain",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def merge_config(cfg: dict[str, Any]) -> dict[str, Any]:
|
|
22
|
+
params = cfg.get("params")
|
|
23
|
+
base = {k: v for k, v in cfg.items() if k != "params"}
|
|
24
|
+
if isinstance(params, dict):
|
|
25
|
+
return {**params, **base}
|
|
26
|
+
return base
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _discover_module_runners() -> dict[tuple[str, str], Runner]:
|
|
30
|
+
out: dict[tuple[str, str], Runner] = {}
|
|
31
|
+
import pygfm.cli.baselines as baselines_pkg
|
|
32
|
+
|
|
33
|
+
for info in pkgutil.iter_modules(baselines_pkg.__path__):
|
|
34
|
+
name = info.name
|
|
35
|
+
if name.startswith("_") or name == "stub_config":
|
|
36
|
+
continue
|
|
37
|
+
mod = importlib.import_module(f"pygfm.cli.baselines.{name}")
|
|
38
|
+
runners = getattr(mod, "RUNNERS", None)
|
|
39
|
+
if not isinstance(runners, dict):
|
|
40
|
+
continue
|
|
41
|
+
for stage, fn in runners.items():
|
|
42
|
+
if callable(fn):
|
|
43
|
+
out[(name, str(stage))] = fn
|
|
44
|
+
return out
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _sa2gfm_pretrain(_cfg: dict[str, Any]) -> None:
|
|
48
|
+
from pygfm.cli.sa2gfm import pretrain_main
|
|
49
|
+
|
|
50
|
+
pretrain_main()
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _sa2gfm_downstream(_cfg: dict[str, Any]) -> None:
|
|
54
|
+
from pygfm.cli.sa2gfm import downstream_main
|
|
55
|
+
|
|
56
|
+
downstream_main()
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _build_registry() -> dict[tuple[str, str], Runner]:
|
|
60
|
+
reg: dict[tuple[str, str], Runner] = {}
|
|
61
|
+
|
|
62
|
+
for b, s in ALL_SCRIPT_PAIRS:
|
|
63
|
+
reg[(b, s)] = make_runner(b, s)
|
|
64
|
+
|
|
65
|
+
reg[("sa2gfm", "pretrain")] = _sa2gfm_pretrain
|
|
66
|
+
reg[("sa2gfm", "downstream")] = _sa2gfm_downstream
|
|
67
|
+
|
|
68
|
+
reg.update(_discover_module_runners())
|
|
69
|
+
return reg
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
_REGISTRY: dict[tuple[str, str], Runner] | None = None
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def get_registry() -> dict[tuple[str, str], Runner]:
|
|
76
|
+
global _REGISTRY
|
|
77
|
+
if _REGISTRY is None:
|
|
78
|
+
_REGISTRY = _build_registry()
|
|
79
|
+
return _REGISTRY
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def run_from_yaml_dict(cfg: dict[str, Any]) -> None:
|
|
83
|
+
merged = merge_config(cfg)
|
|
84
|
+
baseline = merged.get("baseline")
|
|
85
|
+
stage = merged.get("stage")
|
|
86
|
+
if baseline is None or stage is None:
|
|
87
|
+
raise ValueError("YAML must set `baseline` and `stage`.")
|
|
88
|
+
|
|
89
|
+
b = str(baseline).strip().lower()
|
|
90
|
+
s = str(stage).strip().lower()
|
|
91
|
+
s = _STAGE_ALIASES.get(s, s)
|
|
92
|
+
|
|
93
|
+
fn = get_registry().get((b, s))
|
|
94
|
+
if fn is None:
|
|
95
|
+
raise ValueError(
|
|
96
|
+
f"No runner for baseline={b!r}, stage={s!r}. "
|
|
97
|
+
f"Known: {len(list_implemented())} pairs — see list_implemented()."
|
|
98
|
+
)
|
|
99
|
+
fn(merged)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def list_implemented() -> list[str]:
|
|
103
|
+
return [f"{a}/{t}" for (a, t) in sorted(get_registry().keys())]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Per-baseline YAML runners (pretrain / finetune / …) for ``pygfm`` CLI."""
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Canonical list of ``(baseline, stage)`` pairs dispatched by ``script_runner`` (unless a
|
|
3
|
+
real ``RUNNERS`` in ``pygfm.cli.baselines.<name>`` overrides).
|
|
4
|
+
|
|
5
|
+
Used by ``baseline_registry`` to register ``make_runner(b, s)`` for every pair.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from pygfm.cli.script_runner import DEFAULT_STAGE_FILES, SCRIPT_OVERRIDES
|
|
11
|
+
|
|
12
|
+
# Folders under scripts/ with the usual pretrain / finetune / finetune_graph layout.
|
|
13
|
+
_STANDARD_BASELINES: tuple[str, ...] = (
|
|
14
|
+
"bridge",
|
|
15
|
+
"gcot",
|
|
16
|
+
"graver",
|
|
17
|
+
"graphkeeper",
|
|
18
|
+
"graphmore",
|
|
19
|
+
"graphprompt",
|
|
20
|
+
"hgprompt",
|
|
21
|
+
"mdgfm",
|
|
22
|
+
"mdgpt",
|
|
23
|
+
"rag_gfm",
|
|
24
|
+
"samgpt",
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
_STANDARD_STAGES: tuple[str, ...] = ("pretrain", "finetune", "finetune_graph")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _all_pairs() -> list[tuple[str, str]]:
|
|
31
|
+
pairs: set[tuple[str, str]] = set()
|
|
32
|
+
for b in _STANDARD_BASELINES:
|
|
33
|
+
for s in _STANDARD_STAGES:
|
|
34
|
+
pairs.add((b, s))
|
|
35
|
+
pairs.update(SCRIPT_OVERRIDES.keys())
|
|
36
|
+
pairs.add(("sa2gfm", "detect"))
|
|
37
|
+
return sorted(pairs)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
ALL_SCRIPT_PAIRS: list[tuple[str, str]] = _all_pairs()
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"""MDGPT pretrain / finetune runners driven by YAML config (no ``scripts/`` layout)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import torch
|
|
9
|
+
import torch.nn.functional as F
|
|
10
|
+
from torch_geometric.data import Batch, Data
|
|
11
|
+
|
|
12
|
+
from pygfm.baseline_models.mdgpt import DownPromptModel, PrePromptModel
|
|
13
|
+
from pygfm.private.utlis.domain_alignment import DomainAlignment
|
|
14
|
+
from pygfm.public.utils import early_stopping, load_all_datasets, set_seed
|
|
15
|
+
from pygfm.public.utils.loss_func import sample_negative_pairs
|
|
16
|
+
from pygfm.public.utils.runtime import load_single_graph_dataset
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _data_root(cfg: dict[str, Any]) -> str:
|
|
20
|
+
return str(cfg.get("data_root") or os.environ.get("GFM_DATA_ROOT", "datasets/mdgpt"))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def run_mdgpt_pretrain(cfg: dict[str, Any]) -> None:
|
|
24
|
+
p = cfg.get("pretrain") or {}
|
|
25
|
+
if not p:
|
|
26
|
+
raise ValueError("YAML: missing `pretrain:` block for stage=pretrain")
|
|
27
|
+
|
|
28
|
+
seed = int(cfg.get("seed", 42))
|
|
29
|
+
data_root = _data_root(cfg)
|
|
30
|
+
target = str(p.get("target", "Cora"))
|
|
31
|
+
|
|
32
|
+
unify_dim = int(p.get("unify_dim", 50))
|
|
33
|
+
hidden_dim = int(p.get("hidden_dim", 256))
|
|
34
|
+
num_layers = int(p.get("num_layers", 3))
|
|
35
|
+
num_neg = int(p.get("num_neg", 50))
|
|
36
|
+
lr = float(p.get("lr", 1e-5))
|
|
37
|
+
patience = int(p.get("patience", 50))
|
|
38
|
+
max_epochs = int(p.get("max_epochs", 200))
|
|
39
|
+
log_interval = int(p.get("log_interval", 50))
|
|
40
|
+
prompt_mode = str(p.get("prompt_mode", "mul"))
|
|
41
|
+
temperature = float(p.get("temperature", 1.0))
|
|
42
|
+
|
|
43
|
+
allow_pyg = bool(p.get("allow_pyg_download", False))
|
|
44
|
+
|
|
45
|
+
save_dir = p.get("save_dir")
|
|
46
|
+
if save_dir:
|
|
47
|
+
save_dir = str(save_dir)
|
|
48
|
+
else:
|
|
49
|
+
save_dir = os.path.join("ckpts", "mdgpt", target.lower())
|
|
50
|
+
save_name = str(p.get("save_name") or f"preprompt_{target.lower()}.pth")
|
|
51
|
+
|
|
52
|
+
set_seed(seed)
|
|
53
|
+
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
|
|
54
|
+
|
|
55
|
+
all_raw = load_all_datasets(data_root, allow_pyg_download=allow_pyg)
|
|
56
|
+
if not all_raw:
|
|
57
|
+
raise RuntimeError(
|
|
58
|
+
f"No datasets under {data_root!r}. Add flat *.pt files or set allow_pyg_download."
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
sources = [d for d in all_raw if d["name"].casefold() != target.casefold()]
|
|
62
|
+
ordered_names = [s["name"] for s in sources]
|
|
63
|
+
if not sources:
|
|
64
|
+
raise RuntimeError(
|
|
65
|
+
f"No source domains after excluding target={target!r}. Found: {[d['name'] for d in all_raw]}"
|
|
66
|
+
)
|
|
67
|
+
if not any(d["name"].casefold() == target.casefold() for d in all_raw):
|
|
68
|
+
print(
|
|
69
|
+
f"!! Warning: target {target!r} not in {data_root!r}. "
|
|
70
|
+
"Leave-one-out pretrain still runs; finetune needs target .pt later."
|
|
71
|
+
)
|
|
72
|
+
print(f"Target: {target} | sources: {ordered_names}")
|
|
73
|
+
|
|
74
|
+
source_list: list[Data] = []
|
|
75
|
+
aligners = []
|
|
76
|
+
for idx, s in enumerate(sources):
|
|
77
|
+
g0 = s["ds"][0]
|
|
78
|
+
feat = g0.x.numpy()
|
|
79
|
+
aligner = DomainAlignment(n_components=unify_dim)
|
|
80
|
+
aligner.fit(feat)
|
|
81
|
+
aligners.append(aligner)
|
|
82
|
+
aligned = torch.from_numpy(aligner.transform(feat)).float()
|
|
83
|
+
d = Data(x=aligned, edge_index=g0.edge_index, y=g0.y)
|
|
84
|
+
d.domain_id = torch.full((aligned.size(0),), idx, dtype=torch.long)
|
|
85
|
+
source_list.append(d)
|
|
86
|
+
|
|
87
|
+
big_batch = Batch.from_data_list(source_list).to(device)
|
|
88
|
+
tuples = sample_negative_pairs(
|
|
89
|
+
big_batch.edge_index,
|
|
90
|
+
big_batch.num_nodes,
|
|
91
|
+
num_neg=num_neg,
|
|
92
|
+
seed=seed,
|
|
93
|
+
).to(device)
|
|
94
|
+
|
|
95
|
+
model = PrePromptModel(
|
|
96
|
+
input_dim=unify_dim,
|
|
97
|
+
hidden_dim=hidden_dim,
|
|
98
|
+
num_domains=len(sources),
|
|
99
|
+
num_layers=num_layers,
|
|
100
|
+
prompt_mode=prompt_mode, # type: ignore[arg-type]
|
|
101
|
+
temperature=temperature,
|
|
102
|
+
device=device,
|
|
103
|
+
)
|
|
104
|
+
optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=0.0)
|
|
105
|
+
|
|
106
|
+
best_loss = 1e9
|
|
107
|
+
cnt_wait = 0
|
|
108
|
+
for epoch in range(max_epochs):
|
|
109
|
+
model.train()
|
|
110
|
+
optimizer.zero_grad()
|
|
111
|
+
loss = model(big_batch.x, big_batch.edge_index, big_batch.batch, tuples)
|
|
112
|
+
loss.backward()
|
|
113
|
+
optimizer.step()
|
|
114
|
+
should_stop, best_loss, cnt_wait = early_stopping(loss.item(), best_loss, cnt_wait, patience)
|
|
115
|
+
if epoch % log_interval == 0:
|
|
116
|
+
print(f"epoch={epoch} loss={loss.item():.4f}")
|
|
117
|
+
if should_stop:
|
|
118
|
+
print("early stopping")
|
|
119
|
+
break
|
|
120
|
+
|
|
121
|
+
os.makedirs(save_dir, exist_ok=True)
|
|
122
|
+
ckpt_path = os.path.join(save_dir, save_name)
|
|
123
|
+
torch.save(
|
|
124
|
+
{
|
|
125
|
+
"model": model.state_dict(),
|
|
126
|
+
"unify_dim": unify_dim,
|
|
127
|
+
"hidden_dim": hidden_dim,
|
|
128
|
+
"num_domains": len(sources),
|
|
129
|
+
"ordered_names": ordered_names,
|
|
130
|
+
"prompt_mode": prompt_mode,
|
|
131
|
+
"target": target,
|
|
132
|
+
},
|
|
133
|
+
ckpt_path,
|
|
134
|
+
)
|
|
135
|
+
print("saved:", ckpt_path)
|
|
136
|
+
|
|
137
|
+
try:
|
|
138
|
+
import joblib
|
|
139
|
+
|
|
140
|
+
aligner_path = os.path.join(save_dir, "aligners.pkl")
|
|
141
|
+
joblib.dump({"aligners": aligners, "ordered_names": ordered_names}, aligner_path)
|
|
142
|
+
print("saved aligners:", aligner_path)
|
|
143
|
+
except Exception:
|
|
144
|
+
pass
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def run_mdgpt_finetune(cfg: dict[str, Any]) -> None:
|
|
148
|
+
f = cfg.get("finetune") or {}
|
|
149
|
+
if not f:
|
|
150
|
+
raise ValueError("YAML: missing `finetune:` block for stage=finetune")
|
|
151
|
+
|
|
152
|
+
seed = int(cfg.get("seed", 42))
|
|
153
|
+
data_root = _data_root(cfg)
|
|
154
|
+
|
|
155
|
+
dataset = str(f.get("dataset", "Cora"))
|
|
156
|
+
k_shot = int(f.get("k_shot", 1))
|
|
157
|
+
split_id = int(f.get("split_id", 0))
|
|
158
|
+
ckpt_path = f.get("ckpt")
|
|
159
|
+
if not ckpt_path:
|
|
160
|
+
raise ValueError("YAML finetune.ckpt: path to preprompt *.pth required")
|
|
161
|
+
ckpt_path = str(ckpt_path)
|
|
162
|
+
|
|
163
|
+
downstream_root = str(f.get("downstream_root", "downstream_data/mdgpt"))
|
|
164
|
+
splits_path = f.get("splits_path")
|
|
165
|
+
if splits_path:
|
|
166
|
+
splits_path = str(splits_path)
|
|
167
|
+
else:
|
|
168
|
+
splits_path = os.path.join(downstream_root, dataset, f"{k_shot}shot", "splits.pt")
|
|
169
|
+
|
|
170
|
+
lr = float(f.get("lr", 1e-3))
|
|
171
|
+
patience = int(f.get("patience", 50))
|
|
172
|
+
max_steps = int(f.get("max_steps", 400))
|
|
173
|
+
test_reserve = int(f.get("test_reserve", 1000))
|
|
174
|
+
allow_pyg = bool(f.get("allow_pyg_download", False))
|
|
175
|
+
|
|
176
|
+
set_seed(seed)
|
|
177
|
+
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
|
|
178
|
+
|
|
179
|
+
ckpt = torch.load(ckpt_path, map_location=device)
|
|
180
|
+
unify_dim = int(ckpt["unify_dim"])
|
|
181
|
+
hidden_dim = int(ckpt["hidden_dim"])
|
|
182
|
+
prompt_mode = str(ckpt["prompt_mode"])
|
|
183
|
+
|
|
184
|
+
preprompt = PrePromptModel(
|
|
185
|
+
input_dim=unify_dim,
|
|
186
|
+
hidden_dim=hidden_dim,
|
|
187
|
+
num_domains=int(ckpt.get("num_domains", 4)),
|
|
188
|
+
num_layers=int(f.get("num_layers", 3)),
|
|
189
|
+
prompt_mode=prompt_mode, # type: ignore[arg-type]
|
|
190
|
+
temperature=float(f.get("temperature", 1.0)),
|
|
191
|
+
device=device,
|
|
192
|
+
)
|
|
193
|
+
preprompt.load_state_dict(ckpt["model"], strict=False)
|
|
194
|
+
preprompt.eval()
|
|
195
|
+
|
|
196
|
+
data, num_classes = load_single_graph_dataset(data_root, dataset, allow_pyg_download=allow_pyg)
|
|
197
|
+
edge_index = data.edge_index.to(device)
|
|
198
|
+
y = data.y.to(device)
|
|
199
|
+
|
|
200
|
+
x_raw = data.x.cpu().numpy()
|
|
201
|
+
aligner = DomainAlignment(n_components=unify_dim)
|
|
202
|
+
aligner.fit(x_raw)
|
|
203
|
+
x = torch.from_numpy(aligner.transform(x_raw)).float().to(device)
|
|
204
|
+
|
|
205
|
+
down_data = torch.load(splits_path, map_location="cpu")
|
|
206
|
+
splits = down_data["splits"]
|
|
207
|
+
if not (0 <= split_id < len(splits)):
|
|
208
|
+
raise IndexError(f"split_id {split_id} out of range 0..{len(splits)-1}")
|
|
209
|
+
split = splits[split_id]
|
|
210
|
+
support_idx = torch.tensor(split["indices"], dtype=torch.long, device=device)
|
|
211
|
+
support_labels = torch.tensor(split["labels"], dtype=torch.long, device=device)
|
|
212
|
+
|
|
213
|
+
test_start = max(0, len(y) - test_reserve)
|
|
214
|
+
test_idx = torch.arange(test_start, len(y), device=device)
|
|
215
|
+
test_labels = y[test_idx]
|
|
216
|
+
|
|
217
|
+
down = DownPromptModel(
|
|
218
|
+
gcn=preprompt.gcn,
|
|
219
|
+
input_dim=unify_dim,
|
|
220
|
+
hidden_dim=hidden_dim,
|
|
221
|
+
num_classes=num_classes,
|
|
222
|
+
prompt_mode=prompt_mode,
|
|
223
|
+
device=device,
|
|
224
|
+
)
|
|
225
|
+
try:
|
|
226
|
+
down.prefeature.load_state_dict(preprompt.pretexts[0].state_dict(), strict=False)
|
|
227
|
+
except Exception:
|
|
228
|
+
pass
|
|
229
|
+
|
|
230
|
+
opt = torch.optim.Adam(down.prefeature.parameters(), lr=lr)
|
|
231
|
+
best_loss = 1e9
|
|
232
|
+
wait = 0
|
|
233
|
+
for step in range(max_steps):
|
|
234
|
+
down.train()
|
|
235
|
+
opt.zero_grad()
|
|
236
|
+
logits = down(
|
|
237
|
+
x,
|
|
238
|
+
edge_index,
|
|
239
|
+
support_idx=support_idx,
|
|
240
|
+
support_labels=support_labels,
|
|
241
|
+
query_idx=support_idx,
|
|
242
|
+
train=True,
|
|
243
|
+
)
|
|
244
|
+
loss = F.cross_entropy(logits, support_labels)
|
|
245
|
+
loss.backward()
|
|
246
|
+
opt.step()
|
|
247
|
+
if loss.item() < best_loss:
|
|
248
|
+
best_loss = loss.item()
|
|
249
|
+
wait = 0
|
|
250
|
+
else:
|
|
251
|
+
wait += 1
|
|
252
|
+
if step % 50 == 0:
|
|
253
|
+
print(f"step={step} loss={loss.item():.4f}")
|
|
254
|
+
if wait >= patience:
|
|
255
|
+
print(f"early stopping step={step} best_loss={best_loss:.4f}")
|
|
256
|
+
break
|
|
257
|
+
|
|
258
|
+
down.eval()
|
|
259
|
+
with torch.inference_mode():
|
|
260
|
+
logits = down(
|
|
261
|
+
x,
|
|
262
|
+
edge_index,
|
|
263
|
+
support_idx=support_idx,
|
|
264
|
+
support_labels=support_labels,
|
|
265
|
+
query_idx=test_idx,
|
|
266
|
+
train=False,
|
|
267
|
+
)
|
|
268
|
+
preds = logits.argmax(dim=1)
|
|
269
|
+
acc = (preds == test_labels).float().mean().item()
|
|
270
|
+
print(f"[{dataset}] {k_shot}-shot split {split_id} test acc: {acc:.4f}")
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Unified CLI: run experiments from YAML for any registered ``baseline`` + ``stage``."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
11
|
+
from pygfm.cli.baseline_registry import list_implemented, run_from_yaml_dict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def main(argv: list[str] | None = None) -> None:
|
|
15
|
+
p = argparse.ArgumentParser(
|
|
16
|
+
description=(
|
|
17
|
+
"Run GFM from YAML with `baseline` and `stage` (e.g. mdgpt + pretrain). "
|
|
18
|
+
"Registered pairs include all stub stages from stub_config plus real RUNNERS in "
|
|
19
|
+
"pygfm.cli.baselines.<name> — see list_implemented() in baseline_registry."
|
|
20
|
+
),
|
|
21
|
+
)
|
|
22
|
+
p.add_argument(
|
|
23
|
+
"-c",
|
|
24
|
+
"--config",
|
|
25
|
+
"--yaml-config",
|
|
26
|
+
dest="config",
|
|
27
|
+
type=str,
|
|
28
|
+
required=True,
|
|
29
|
+
help="Path to YAML config file",
|
|
30
|
+
)
|
|
31
|
+
args = p.parse_args(argv)
|
|
32
|
+
|
|
33
|
+
path = Path(args.config)
|
|
34
|
+
if not path.is_file():
|
|
35
|
+
raise SystemExit(f"Config not found: {path}")
|
|
36
|
+
|
|
37
|
+
raw = path.read_text(encoding="utf-8")
|
|
38
|
+
cfg: dict[str, Any] = yaml.safe_load(raw) or {}
|
|
39
|
+
if not isinstance(cfg, dict):
|
|
40
|
+
raise SystemExit("YAML root must be a mapping (object)")
|
|
41
|
+
|
|
42
|
+
run_from_yaml_dict(cfg)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
main()
|