attacklm 0.9.0__tar.gz → 0.9.2__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.
- {attacklm-0.9.0 → attacklm-0.9.2}/PKG-INFO +16 -7
- {attacklm-0.9.0 → attacklm-0.9.2}/pyproject.toml +4 -2
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/train_template.py +60 -0
- attacklm-0.9.2/src/attacklm/__version__.py +1 -0
- attacklm-0.9.0/src/attacklm/__version__.py +0 -1
- {attacklm-0.9.0 → attacklm-0.9.2}/.github/workflows/release.yml +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/.gitignore +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/ATTRIBUTION.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/CHANGELOG.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/CONTRIBUTING.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/EVALUATION.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/LICENSE +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/MANIFEST.in +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/Makefile +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/NOTICE +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/pyproject.toml +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/__init__.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/app.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/cli.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/presets.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/runner.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/screens/__init__.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/screens/command_forms.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/screens/main_menu.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/screens/train_form.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/screens/train_live.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/src/attacklm_gui/widgets/__init__.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/attacklm-gui/tests/test_gui.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/ATTRIBUTION.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/LEGAL.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/REMOVAL.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/bench/questions.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/bench/speed_context.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/acquisition_report.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/manifest.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/_index.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/base/collection/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/base/discovery/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/base/execution/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/atomic-red-team/base/persistence/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/attacklm-synthetic/orchestrator/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/azure-pyrit/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/azure-pyrit/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/cyberark-fuzzyai/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/cyberark-fuzzyai/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/elastic-rules/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/elastic-rules/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/elastic-rules/defensive/detection_engineering/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/cloud/attacks/data_llm.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/ics/attacks/data_llm.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/social_engineering/phishing/data_llm.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/llm-generated/wireless/attacks/data_llm.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/collection/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/credential_access/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/defense_evasion/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/discovery/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/execution/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/lateral_movement/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/persistence/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/base/privilege_escalation/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/tools/metasploit/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-atlas-arsenal/base/discovery/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/base/collection/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/base/discovery/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/base/execution/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-stockpile/base/persistence/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mordor/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mordor/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mordor/defensive/threat_hunting/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nist-ir/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nist-ir/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nist-ir/defensive/incident_response/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nvidia-garak/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nvidia-garak/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/nvidia-garak/ai/jailbreaking/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptfoo/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptfoo/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptfoo/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptmap/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptmap/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/promptmap/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/base/replay/data_code.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/base/replay/data_conversation.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/base/replay/data_factual.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/replay-general/base/replay/data_reasoning.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/sigma-hq/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/sigma-hq/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/sigma-hq/defensive/detection_engineering/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/splunk-content/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/splunk-content/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/splunk-content/defensive/detection_engineering/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/threathunter-playbook/defensive/threat_hunting/data.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/golden/prompts.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/reference/prompts.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/steering/prompts/opsec_aware.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/steering/prompts/opsec_unaware.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/steering/prompts/succinct.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/data/steering/prompts/verbose.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/experiments/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/experiments/synthetic_dataset_mutator_evol_instruct.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/.gitattributes +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/data/manifest.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/dataset_infos.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/scripts/build_hf_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hf/scripts/push_to_hf.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hpo_runs/.gitkeep +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hpo_runs/hpo_state.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/hpo_runs/hpo_trial_dataset.jsonl +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/logs/.gitkeep +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/pipeline.example.yaml +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/blue-team.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/deepspeed/README.md +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/deepspeed/zero2_cpu_offload.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/deepspeed/zero3_cpu_offload.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/deepspeed/zero3_gpu_only.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/purple-team.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/presets/red-team.json +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/requirements.txt +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/_eval_loader.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_cloud_attack_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_ics_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_phishing_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_red_team_tactics.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_replay_general.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_supply_chain_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_web_attack_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/acquire_wireless_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/audit_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/balance_buckets.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/bucket_loader.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/build.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/clone_repos.sh +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/collect_reference.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/compare_scores.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/convert_to_gguf.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/demo.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/device_utils.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/domain_bench.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/eval_retention.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/evolve_pairs.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/evolved_mixer.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_ai_tools_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_atomic_red_team_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_by_tactic.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_caldera_plugins_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_elastic_rules.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_infection_monkey_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_mordor.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_nist_ir.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_rta_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_sigma_defensive.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_splunk_content.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/extract_threathunter_playbook.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/filter_evolved.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/generate_synthetic_scarce.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/golden_vectors.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/hpo_runner.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/import_gguf.sh +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/import_to_lmstudio.sh +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/infer.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/init_pipeline.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/merge_adapter.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/mitre_tactic_lookup.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/package_dataset.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/parse_metasploit_to_jsonl.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/pipeline.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/rebuild_manifest.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/register_ollama.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/reorganize_buckets.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/replay_mixer.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/score_candidates.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/setup_buckets.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/speed_bench.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/steering.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/scripts/train_all.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/src/attacklm/__init__.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/src/attacklm/_project_root.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/src/attacklm/cli.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_balance_buckets.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_collect_reference.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_compare_scores.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_domain_bench.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_eval_loader.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_eval_retention.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_evolve_pairs.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_golden_vectors.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_init_pipeline.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_memory_optimization.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_replay_mixer.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_score_candidates.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_speed_bench.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_steering.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/tests/test_thinking_models.py +0 -0
- {attacklm-0.9.0 → attacklm-0.9.2}/uv.lock +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attacklm
|
|
3
|
-
Version: 0.9.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.9.2
|
|
4
|
+
Summary: A high-performance fine-tuning pipeline (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA, DeepSpeed) for creating MITRE ATT&CK-grounded security AI assistants
|
|
5
5
|
Project-URL: Homepage, https://github.com/Veedubin/AttackLM
|
|
6
6
|
Project-URL: Repository, https://github.com/Veedubin/AttackLM
|
|
7
7
|
Project-URL: Issues, https://github.com/Veedubin/AttackLM/issues
|
|
@@ -26,19 +26,16 @@ Provides-Extra: all
|
|
|
26
26
|
Requires-Dist: accelerate==1.14.0; extra == 'all'
|
|
27
27
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'all'
|
|
28
28
|
Requires-Dist: datasets==5.0.0; extra == 'all'
|
|
29
|
+
Requires-Dist: deepspeed>=0.16; extra == 'all'
|
|
29
30
|
Requires-Dist: gguf; extra == 'all'
|
|
30
31
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'all'
|
|
31
|
-
Requires-Dist: ipython; extra == 'all'
|
|
32
32
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'all'
|
|
33
33
|
Requires-Dist: llama-cpp-python; extra == 'all'
|
|
34
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'all'
|
|
35
35
|
Requires-Dist: peft==0.19.1; extra == 'all'
|
|
36
|
-
Requires-Dist: pytest; extra == 'all'
|
|
37
36
|
Requires-Dist: pyyaml; extra == 'all'
|
|
38
37
|
Requires-Dist: requests; extra == 'all'
|
|
39
|
-
Requires-Dist: ruff; extra == 'all'
|
|
40
38
|
Requires-Dist: safetensors==0.7.0; extra == 'all'
|
|
41
|
-
Requires-Dist: scipy>=1.11; extra == 'all'
|
|
42
39
|
Requires-Dist: tokenizers==0.22.2; extra == 'all'
|
|
43
40
|
Requires-Dist: torch==2.12.0; extra == 'all'
|
|
44
41
|
Requires-Dist: torchvision==0.27.0; extra == 'all'
|
|
@@ -49,10 +46,12 @@ Provides-Extra: all-cuda
|
|
|
49
46
|
Requires-Dist: accelerate==1.14.0; extra == 'all-cuda'
|
|
50
47
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'all-cuda'
|
|
51
48
|
Requires-Dist: datasets==5.0.0; extra == 'all-cuda'
|
|
49
|
+
Requires-Dist: deepspeed>=0.16; extra == 'all-cuda'
|
|
52
50
|
Requires-Dist: gguf; extra == 'all-cuda'
|
|
53
51
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'all-cuda'
|
|
54
52
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'all-cuda'
|
|
55
53
|
Requires-Dist: llama-cpp-python; extra == 'all-cuda'
|
|
54
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'all-cuda'
|
|
56
55
|
Requires-Dist: peft==0.19.1; extra == 'all-cuda'
|
|
57
56
|
Requires-Dist: pyyaml; extra == 'all-cuda'
|
|
58
57
|
Requires-Dist: requests; extra == 'all-cuda'
|
|
@@ -67,10 +66,12 @@ Provides-Extra: all-rocm
|
|
|
67
66
|
Requires-Dist: accelerate==1.14.0; extra == 'all-rocm'
|
|
68
67
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'all-rocm'
|
|
69
68
|
Requires-Dist: datasets==5.0.0; extra == 'all-rocm'
|
|
69
|
+
Requires-Dist: deepspeed>=0.16; extra == 'all-rocm'
|
|
70
70
|
Requires-Dist: gguf; extra == 'all-rocm'
|
|
71
71
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'all-rocm'
|
|
72
72
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'all-rocm'
|
|
73
73
|
Requires-Dist: llama-cpp-python; extra == 'all-rocm'
|
|
74
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'all-rocm'
|
|
74
75
|
Requires-Dist: peft==0.19.1; extra == 'all-rocm'
|
|
75
76
|
Requires-Dist: pyyaml; extra == 'all-rocm'
|
|
76
77
|
Requires-Dist: requests; extra == 'all-rocm'
|
|
@@ -149,8 +150,10 @@ Provides-Extra: train
|
|
|
149
150
|
Requires-Dist: accelerate==1.14.0; extra == 'train'
|
|
150
151
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'train'
|
|
151
152
|
Requires-Dist: datasets==5.0.0; extra == 'train'
|
|
153
|
+
Requires-Dist: deepspeed>=0.16; extra == 'train'
|
|
152
154
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train'
|
|
153
155
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'train'
|
|
156
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'train'
|
|
154
157
|
Requires-Dist: peft==0.19.1; extra == 'train'
|
|
155
158
|
Requires-Dist: safetensors==0.7.0; extra == 'train'
|
|
156
159
|
Requires-Dist: tokenizers==0.22.2; extra == 'train'
|
|
@@ -161,8 +164,10 @@ Requires-Dist: trl==1.5.1; extra == 'train'
|
|
|
161
164
|
Provides-Extra: train-base
|
|
162
165
|
Requires-Dist: accelerate==1.14.0; extra == 'train-base'
|
|
163
166
|
Requires-Dist: datasets==5.0.0; extra == 'train-base'
|
|
167
|
+
Requires-Dist: deepspeed>=0.16; extra == 'train-base'
|
|
164
168
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train-base'
|
|
165
169
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'train-base'
|
|
170
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'train-base'
|
|
166
171
|
Requires-Dist: peft==0.19.1; extra == 'train-base'
|
|
167
172
|
Requires-Dist: safetensors==0.7.0; extra == 'train-base'
|
|
168
173
|
Requires-Dist: tokenizers==0.22.2; extra == 'train-base'
|
|
@@ -172,8 +177,10 @@ Provides-Extra: train-cuda
|
|
|
172
177
|
Requires-Dist: accelerate==1.14.0; extra == 'train-cuda'
|
|
173
178
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'train-cuda'
|
|
174
179
|
Requires-Dist: datasets==5.0.0; extra == 'train-cuda'
|
|
180
|
+
Requires-Dist: deepspeed>=0.16; extra == 'train-cuda'
|
|
175
181
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train-cuda'
|
|
176
182
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'train-cuda'
|
|
183
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'train-cuda'
|
|
177
184
|
Requires-Dist: peft==0.19.1; extra == 'train-cuda'
|
|
178
185
|
Requires-Dist: safetensors==0.7.0; extra == 'train-cuda'
|
|
179
186
|
Requires-Dist: tokenizers==0.22.2; extra == 'train-cuda'
|
|
@@ -185,8 +192,10 @@ Provides-Extra: train-rocm
|
|
|
185
192
|
Requires-Dist: accelerate==1.14.0; extra == 'train-rocm'
|
|
186
193
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'train-rocm'
|
|
187
194
|
Requires-Dist: datasets==5.0.0; extra == 'train-rocm'
|
|
195
|
+
Requires-Dist: deepspeed>=0.16; extra == 'train-rocm'
|
|
188
196
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train-rocm'
|
|
189
197
|
Requires-Dist: kernels<0.14,>=0.12; extra == 'train-rocm'
|
|
198
|
+
Requires-Dist: lomo-optim>=0.1; extra == 'train-rocm'
|
|
190
199
|
Requires-Dist: peft==0.19.1; extra == 'train-rocm'
|
|
191
200
|
Requires-Dist: safetensors==0.7.0; extra == 'train-rocm'
|
|
192
201
|
Requires-Dist: tokenizers==0.22.2; extra == 'train-rocm'
|
|
@@ -11,7 +11,7 @@ build-backend = "hatchling.build"
|
|
|
11
11
|
[project]
|
|
12
12
|
name = "attacklm"
|
|
13
13
|
dynamic = ["version"]
|
|
14
|
-
description = "
|
|
14
|
+
description = "A high-performance fine-tuning pipeline (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA, DeepSpeed) for creating MITRE ATT&CK-grounded security AI assistants"
|
|
15
15
|
readme = "README.md"
|
|
16
16
|
license = "MIT"
|
|
17
17
|
requires-python = ">=3.10"
|
|
@@ -105,6 +105,8 @@ train-base = [
|
|
|
105
105
|
"huggingface-hub==1.18.0",
|
|
106
106
|
"tokenizers==0.22.2",
|
|
107
107
|
"safetensors==0.7.0",
|
|
108
|
+
"deepspeed>=0.16",
|
|
109
|
+
"lomo-optim>=0.1",
|
|
108
110
|
]
|
|
109
111
|
infer-base = [
|
|
110
112
|
"transformers==5.12.1",
|
|
@@ -217,7 +219,7 @@ eval = [
|
|
|
217
219
|
# at install time. Resolving `attacklm[all]` on a build/CI server without
|
|
218
220
|
# that index URL would fail.
|
|
219
221
|
all = [
|
|
220
|
-
"attacklm[train-cuda,extract,convert
|
|
222
|
+
"attacklm[train-cuda,extract,convert]",
|
|
221
223
|
]
|
|
222
224
|
all-cuda = ["attacklm[train-cuda,extract,convert]"]
|
|
223
225
|
all-rocm = ["attacklm[train-rocm,extract,convert]"]
|
|
@@ -565,6 +565,15 @@ Examples:
|
|
|
565
565
|
"Takes precedence over --deepspeed-offload if both are set."
|
|
566
566
|
),
|
|
567
567
|
)
|
|
568
|
+
parser.add_argument(
|
|
569
|
+
"--force-deepspeed-cuda",
|
|
570
|
+
action="store_true",
|
|
571
|
+
default=False,
|
|
572
|
+
help=(
|
|
573
|
+
"Skip DeepSpeed CUDA version check even when major versions differ. "
|
|
574
|
+
"Only use if you know your CUDA toolkit is ABI-compatible with PyTorch's CUDA."
|
|
575
|
+
),
|
|
576
|
+
)
|
|
568
577
|
|
|
569
578
|
# ---- torch.compile ----
|
|
570
579
|
parser.add_argument(
|
|
@@ -3180,6 +3189,57 @@ def main() -> None:
|
|
|
3180
3189
|
# With CPU offload, a 16GB GPU + 64GB RAM can train 40B+ parameter models.
|
|
3181
3190
|
deepspeed_config_path = None
|
|
3182
3191
|
if args.use_deepspeed:
|
|
3192
|
+
# DeepSpeed compiles CUDA extensions at runtime and checks that the
|
|
3193
|
+
# system CUDA version exactly matches what PyTorch was compiled with.
|
|
3194
|
+
# CUDA guarantees ABI compatibility within a major version (e.g. 13.0
|
|
3195
|
+
# and 13.3 are compatible), so we only skip the check when the major
|
|
3196
|
+
# versions match. If they differ, we warn and let the user force it.
|
|
3197
|
+
import re, subprocess
|
|
3198
|
+
|
|
3199
|
+
_torch_cuda = getattr(torch.version, "cuda", None) or ""
|
|
3200
|
+
_sys_cuda = ""
|
|
3201
|
+
try:
|
|
3202
|
+
_nvcc = subprocess.run(
|
|
3203
|
+
["nvcc", "--version"], capture_output=True, text=True, timeout=5
|
|
3204
|
+
)
|
|
3205
|
+
_m = re.search(r"release\s+(\d+\.\d+)", _nvcc.stdout)
|
|
3206
|
+
if _m:
|
|
3207
|
+
_sys_cuda = _m.group(1)
|
|
3208
|
+
except Exception:
|
|
3209
|
+
pass
|
|
3210
|
+
|
|
3211
|
+
if _torch_cuda and _sys_cuda:
|
|
3212
|
+
_torch_major = _torch_cuda.split(".")[0]
|
|
3213
|
+
_sys_major = _sys_cuda.split(".")[0]
|
|
3214
|
+
if _torch_major == _sys_major:
|
|
3215
|
+
os.environ.setdefault("DS_SKIP_CUDA_CHECK", "1")
|
|
3216
|
+
console.print(
|
|
3217
|
+
f" [dim]DeepSpeed:[/dim] CUDA {_sys_cuda} (system) ≈ "
|
|
3218
|
+
f"CUDA {_torch_cuda} (torch) — same major version, "
|
|
3219
|
+
f"skipping strict version check"
|
|
3220
|
+
)
|
|
3221
|
+
else:
|
|
3222
|
+
console.print(
|
|
3223
|
+
f"[yellow]WARNING:[/yellow] System CUDA {_sys_cuda} != "
|
|
3224
|
+
f"torch CUDA {_torch_cuda} (different major versions). "
|
|
3225
|
+
f"DeepSpeed may fail to compile extensions."
|
|
3226
|
+
)
|
|
3227
|
+
console.print(
|
|
3228
|
+
" If you know these are ABI-compatible, set "
|
|
3229
|
+
"DS_SKIP_CUDA_CHECK=1 in your environment."
|
|
3230
|
+
)
|
|
3231
|
+
console.print(" Or pass --force-deepspeed-cuda to skip the check.")
|
|
3232
|
+
if not args.force_deepspeed_cuda:
|
|
3233
|
+
console.print(
|
|
3234
|
+
"[red]ERROR:[/red] Refusing to proceed with CUDA version "
|
|
3235
|
+
"mismatch. Use --force-deepspeed-cuda to override."
|
|
3236
|
+
)
|
|
3237
|
+
sys.exit(1)
|
|
3238
|
+
os.environ["DS_SKIP_CUDA_CHECK"] = "1"
|
|
3239
|
+
else:
|
|
3240
|
+
# Can't detect versions — skip the check and hope for the best
|
|
3241
|
+
os.environ.setdefault("DS_SKIP_CUDA_CHECK", "1")
|
|
3242
|
+
|
|
3183
3243
|
# Verify deepspeed package is installed
|
|
3184
3244
|
try:
|
|
3185
3245
|
import deepspeed # noqa: F401
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.2"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.9.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.9.0 → attacklm-0.9.2}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|