
Pour cloner ce référentiel avec tous ses sous-modules, utilisez le drapeau --recurse-submodules :
git clone --recurse-submodules https://github.com/gersteinlab/ML-Bench.git
cd ML-Bench Si vous avez déjà cloné le référentiel sans l'indicateur --recurse-submodules , vous pouvez exécuter les commandes suivantes pour récupérer les sous-modules:
git submodule update --init --recursivePuis courez
pip install -r requirements.txtVous pouvez charger l'ensemble de données à l'aide du code suivant:
from datasets import load_dataset
ml_bench = load_dataset ( "super-dainiu/ml-bench" ) # splits: ['full', 'quarter']L'ensemble de données contient les colonnes suivantes:
github_id : l'ID du référentiel GitHub.github : L'URL du référentiel GitHub.repo_id : l'ID de l'échantillon dans chaque référentiel.id : L'ID unique de l'échantillon dans l'ensemble de données.path : le chemin vers le dossier correspondant dans LLM-Bench.arguments : les arguments spécifiés dans les exigences de l'utilisateur.instruction : les instructions de l'utilisateur pour la tâche.oracle : le contenu Oracle pertinent pour la tâche.type : le type de sortie attendu basé sur le contenu Oracle.output : La sortie de vérité au sol générée en fonction du contenu Oracle.prefix_code : l'extrait de code pour préparer l'environnement d'exécutionSi vous souhaitez exécuter ML-LLM-BENCH, vous devez faire du post-traitement sur l'ensemble de données. Vous pouvez utiliser le code suivant pour post-processus l'ensemble de données:
bash scripts/post_process/prepare.shVoir post_process pour plus de détails.
Après les sous-modules de clone, vous pouvez courir
cd scripts/post_process
bash prepare.sh pour générer une référence complète et quart dans merged_full_benchmark.jsonl et merged_quarter_benchmark.jsonl
Vous pouvez modifier readme_content = fr.read() dans merge.py , ligne 50 à readme_content = fr.read()[:100000] readme_content = fr.read()[:400000] obtenir des contenus de lecture de 32k de longueur ou pour obtenir des contenus de la longueur de 128k de longueur.
Dans le cadre du paramètre 128K, les utilisateurs peuvent préparer des trains et des tests en 10 minutes avec 10 travailleurs. Sans limitation de jetons, les utilisateurs peuvent avoir besoin de 2 heures pour préparer l'ensemble de données et obtenir un énorme ensemble de données.
Pour exécuter le conteneur Docker ml-llm-bench, vous pouvez utiliser la commande suivante:
docker pull public.ecr.aws/i5g0m1f6/ml-bench
docker run -it -v ML_Bench:/deep_data public.ecr.aws/i5g0m1f6/ml-bench /bin/bashPour télécharger des poids du modèle et préparer des fichiers, vous pouvez utiliser la commande suivante:
bash utils/download_model_weight_pics.shCela peut prendre 2 heures pour les préparer automatiquement.
Placez vos résultats dans output/ répertoire et mettez à jour le --input_path dans exec.sh avec votre chemin. Modifiez également l'adresse du journal.
Ensuite, exécutez bash utils/exec.sh Et vous pouvez vérifier les journaux d'exécution dans votre fichier journal, afficher les résultats globaux en output/{{MODEL_NAME}}_{{TASK}}_results_{{TIMESTAMP}}.jsonl , et voir les résultats pour chaque référentiel dans output/{{MODEL_NAME}}_{{TASK}}_results_{{TIMESTAMP}}.jsonl .
Les deux fichiers JSONL commençant par eval_result et eval_total contiennent des résultats d'exécution partielle dans notre article.
La output/ le dossier comprend les sorties générées par le modèle que nous avons utilisées pour les tests.
Le logs/ dossier enregistre notre journal d'exécution.
Le fichier utils/temp.py n'est pas pour les utilisateurs, il est utilisé pour stocker le code écrit par les modèles.
De plus, le processus d'exécution peut générer de nouveaux fichiers inutiles.
Pour reproduire les performances d'Openai sur cette tâche, utilisez le script suivant:
bash script/openai/run.sh Vous devez modifier les paramètres des paramètres dans script/openai/run.sh :
type : Choisissez parmi quarter ou full .model : nom du modèle.input_file : chemin de fichier de l'ensemble de données.answer_file : Réponse originale au format JSON de GPT.parsing_file : post-processus la sortie de GPT au format JSONL pour obtenir des segments de code exécutables.readme_type : choisissez parmi oracle_segment et readme .oracle_segment : le paragraphe de code dans la lecture qui est le plus pertinent pour la tâche.readme : L'ensemble du texte du Readme dans le référentiel où se trouve la tâche.engine_name : choisissez parmi gpt-35-turbo-16k et gpt-4-32 .n_turn : Nombre de codes exécutables GPT Renvoie (5 fois dans l'expérience en papier).openai_key : Votre clé API OpenAI.Veuillez vous référer à OpenAI pour plus de détails.
Llama-Repices fournit une distribution PIP pour une installation et une utilisation faciles dans d'autres projets. Alternativement, il peut être installé à partir de la source.
pip install --extra-index-url https://download.pytorch.org/whl/test/cu118 llama-recipes
git clone https://github.com/facebookresearch/llama-recipes
cd llama-recipes
pip install -U pip setuptools
pip install --extra-index-url https://download.pytorch.org/whl/test/cu118 -e .
Par définition, nous avons trois tâches dans le journal.
Vous pouvez utiliser le script suivant pour reproduire les performances fins de Codellama-7b sur cette tâche:
torchrun --nproc_per_node 2 finetuning.py
--use_peft
--peft_method lora
--enable_fsdp
--model_name codellama/CodeLlama-7b-Instruct-hf
--context_length 8192
--dataset mlbench_dataset
--output_dir OUTPUT_PATH
--task TASK
--data_path DATA_PATH Vous devez modifier les paramètres des paramètres de OUTPUT_PATH , TASK et DATA_PATH en conséquence.
OUTPUT_DIR : le répertoire pour enregistrer le modèle.TASK : choisissez parmi 1 , 2 et 3 .DATA_PATH : le répertoire de l'ensemble de données. Vous pouvez utiliser le script suivant pour reproduire les performances d'inférence de Codellama-7b sur cette tâche:
python chat_completion.py
--model_name ' codellama/CodeLlama-7b-Instruct-hf '
--peft_model PEFT_MODEL
--prompt_file PROMPT_FILE
--task TASK Vous devez modifier les paramètres des paramètres de PEFT_MODEL , PROMPT_FILE et TASK en conséquence.
PEFT_MODEL : Le chemin du modèle PEFT.PROMPT_FILE : le chemin du fichier invite.TASK : choisissez parmi 1 , 2 et 3 .Veuillez vous référer à Finetune pour plus de détails.
Pour exécuter le conteneur Docker Ml-Agent-Bench, vous pouvez utiliser la commande suivante:
docker pull public.ecr.aws/i5g0m1f6/ml-bench
docker run -it public.ecr.aws/i5g0m1f6/ml-bench /bin/bashCela tirera la dernière image Docker ML-Agent-Bench et l'exécutera dans un shell interactif. Le conteneur comprend toutes les dépendances nécessaires pour exécuter la base de code ML-Agent-Bench.
Pour ML-Agent-Bench dans OpenDevin, veuillez vous référer au guide de configuration OpenDevin.
Veuillez vous référer à SENS pour plus de détails.
Distribué sous la licence du MIT. Voir LICENSE pour plus d'informations.