Au 7 mars 2024, nous avons mis à jour le repo avec une référence révisée V2.0 avec de nouveaux cas de test. Veuillez consulter notre article mis à jour pour plus de détails.
[Demo] [Site Web] [Papier]
Ce dépôt contient le code pour les règles: scénarios d'évaluation du langage de suivi des règles, une référence pour évaluer le suivi des règles dans les modèles linguistiques.
SimonSays et Questions , ajout de la prise en charge des modèles d'API Google Vertexai. Veuillez réévaluer les résultats existants avec python -m llm_rules.scripts.reevaluate .llm_rules .--conv_template à --fastchat_template . pip install -e .
Pour évaluer les modèles avec nos emballages API ( llm_rules/models/* ), installez les dépendances facultatives:
pip install -e .[models]
.env : OPENAI_API_KEY=<key>
ANTHROPIC_API_KEY=<key>
GEMINI_API_KEY=<key>
GCP_PROJECT_ID=<project_id>
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="meta-llama/Llama-2-7b-chat-hf", local_dir="/my_models/Llama-2-7b-chat-hf", local_dir_use_symlinks=False)
logs/ . Lancez une session interactive avec:
python -m llm_rules.scripts.manual_redteam --provider openai --model gpt-3.5-turbo-0613 --scenario Authentication --stream
Visualisez les cas de test avec:
python -m llm_rules.scripts.show_testcases --test_suite redteam
Notre principal script d'évaluation est llm_rules/scripts/evaluate.py , mais comme nous prenons en charge de nombreuses options d'évaluation, le code peut être difficile à suivre. Veuillez consulter llm_rules/scripts/evaluate_simple.py pour une version simplifiée du script d'évaluation.
Nous enroulons des appels API avec des tentatives illimitées pour faciliter l'évaluation. Vous voudrez peut-être modifier la fonctionnalité de réessayer en fonction de vos besoins.
redteam python -m llm_rules.scripts.evaluate --provider openai --model gpt-3.5-turbo-0613 --test_suite redteam --output_dir logs/redteam
Lors de l'évaluation des modèles à l'aide de VLLM, evaluate.py lance un serveur API en cours. La concurrence devrait être bien plus élevée pour les modèles VLLM. Exécutez l'évaluation avec:
python -m llm_rules.scripts.evaluate --provider vllm --model /path/to/model --fastchat_template llama-2 --concurrency 100
Afficher les résultats détaillés sur une seule suite de test avec:
python -m llm_rules.scripts.read_results --output_dir logs/redteam/gpt-3.5-turbo-0613
Après avoir évalué les trois suites de test (bénignes, basiques et redteam), calculez le score des règles agrégées avec:
python -m llm_rules.scripts.read_scores --model_name gpt-3.5-turbo-0613
Enfin, vous pouvez afficher les réponses aux cas de test individuels avec:
python -m llm_rules.scripts.show_responses --output_dir logs/redteam/gpt-3.5-turbo-0613 --failed_only
Exécutez l'attaque GCG avec des paramètres de scénario randomisés dans chaque itération:
cd gcg_attack
python main_gcg.py --model /path/to/model --fastchat_template <template_name> --scenario Authentication --behavior withholdsecret
Les journaux de sortie seront stockés dans logs/gcg_attack .
Pour évaluer ensuite les modèles sur les cas de test direct_request avec les suffixes GCG résultants:
python -m llm_rules.scripts.evaluate --provider vllm --model /path/to/model --suffix_dir logs/gcg_attack/<model_name> --test_dir data/direct_request --output_dir logs/direct_request_gcg
Pour reproduire nos expériences de réglage fin avec le chat LLAMA-2 7B sur les cas de test basic_like :
cd finetune
./finetune_llama.sh
Nous avons utilisé des GPU 4x A100-80G pour le chat de tun-2 7b de réglage fin et l'instruction Mistral 7B, vous pourrez peut-être ajuster les paramètres de vitesse profonde pour fonctionner sur des GPU plus petits / moins.
Lors de l'évaluation des modèles communautaires, nous comptons principalement sur des modèles de conversation FastChat (documentés dans model_templates.yaml ) à l'exception de quelques modèles personnalisés ajoutés à llm_rules/templates.py .
@article{mu2023rules,
title={Can LLMs Follow Simple Rules?},
author={Norman Mu and Sarah Chen and
Zifan Wang and Sizhe Chen and David Karamardian and
Lulwa Aljeraisy and Basel Alomair and
Dan Hendrycks and David Wagner},
journal={arXiv},
year={2023}
}