
Para clonar este repositório com todos os seus submódulos, use o sinalizador --recurse-submodules :
git clone --recurse-submodules https://github.com/gersteinlab/ML-Bench.git
cd ML-Bench Se você já clonou o repositório sem o sinalizador --recurse-submodules , poderá executar os seguintes comandos para buscar os submódulos:
git submodule update --init --recursiveEm seguida, corra
pip install -r requirements.txtVocê pode carregar o conjunto de dados usando o seguinte código:
from datasets import load_dataset
ml_bench = load_dataset ( "super-dainiu/ml-bench" ) # splits: ['full', 'quarter']O conjunto de dados contém as seguintes colunas:
github_id : o ID do repositório do GitHub.github : O URL do repositório do GitHub.repo_id : o ID da amostra dentro de cada repositório.id : O ID exclusivo da amostra em todo o conjunto de dados.path : o caminho para a pasta correspondente no banco LLM.arguments : os argumentos especificados nos requisitos do usuário.instruction : As instruções do usuário para a tarefa.oracle : o conteúdo do Oracle relevante para a tarefa.type : o tipo de saída esperado com base no conteúdo do Oracle.output : a saída da verdade do solo gerada com base no conteúdo do Oracle.prefix_code : o trecho de código para preparar o ambiente de execuçãoSe você deseja executar o ml-llm-banch, precisará fazer o pós-processamento no conjunto de dados. Você pode usar o seguinte código para pós-processo do conjunto de dados:
bash scripts/post_process/prepare.shConsulte Post_process para obter mais detalhes.
Após os submódulos de clone, você pode correr
cd scripts/post_process
bash prepare.sh para gerar referência completa e trimestre em merged_full_benchmark.jsonl e merged_quarter_benchmark.jsonl
Você pode alterar readme_content = fr.read() em merge.py , linha 50 para readme_content = fr.read()[:100000] para obter o conteúdo de readme de 32k ou readme_content = fr.read()[:400000] para obter conteúdo de 128k de comprimento.
Sob o cenário de 128k, os usuários podem preparar o TrainSet e o TestSet em 10 minutos com 10 trabalhadores. Sem limitação de token, os usuários podem precisar de 2 horas para preparar todo o conjunto de dados e obter um enorme conjunto de dados.
Para executar o contêiner ML-LLM-BEMCH DOCKER, você pode usar o seguinte comando:
docker pull public.ecr.aws/i5g0m1f6/ml-bench
docker run -it -v ML_Bench:/deep_data public.ecr.aws/i5g0m1f6/ml-bench /bin/bashPara baixar pesos do modelo e preparar arquivos, você pode usar o seguinte comando:
bash utils/download_model_weight_pics.shPode levar 2 horas para prepará -los automaticamente.
Coloque seus resultados em output/ diretório e atualize o --input_path no exec.sh com seu caminho. Além disso, modifique o endereço de log.
Em seguida, execute bash utils/exec.sh . E você pode verificar os logs de execução no seu arquivo de log, visualize os resultados gerais em output/{{MODEL_NAME}}_{{TASK}}_results_{{TIMESTAMP}}.jsonl e veja os resultados para cada repositório em output/{{MODEL_NAME}}_{{TASK}}_results_{{TIMESTAMP}}.jsonl .
Ambos os arquivos JSONL que começam com eval_result e eval_total contêm resultados parciais de execução em nosso artigo.
A output/ pasta inclui as saídas geradas pelo modelo que usamos para teste.
A pasta logs/ salva nosso log de execução.
O arquivo utils/temp.py não é para usuários, é usado para armazenar o código escrito por modelos.
Além disso, o processo de execução pode gerar novos arquivos desnecessários.
Para reproduzir o desempenho do OpenAI nesta tarefa, use o seguinte script:
bash script/openai/run.sh Você precisa alterar as configurações de parâmetros no script/openai/run.sh :
type : escolha entre quarter ou full .model : Nome do modelo.input_file : caminho do arquivo do conjunto de dados.answer_file : Resposta original no formato JSON da GPT.parsing_file : pós-processo da saída do GPT no formato JSONL para obter segmentos de código executável.readme_type : escolha oracle_segment e readme .oracle_segment : o parágrafo do código no ReadMe que é mais relevante para a tarefa.readme : todo o texto do ReadMe no repositório onde a tarefa está localizada.engine_name : escolha gpt-35-turbo-16k e gpt-4-32 .n_turn : Número de códigos executáveis Retornos GPT (5 vezes no experimento em papel).openai_key : sua chave de API do OpenAI.Consulte o OpenAI para obter detalhes.
O LLAMA-RECIPES fornece uma distribuição PIP para facilitar a instalação e o uso em outros projetos. Como alternativa, ele pode ser instalado a partir da fonte.
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 .
Por definição, temos três tarefas no artigo.
Você pode usar o seguinte script para reproduzir o desempenho de ajuste fino de Codellama-7b nesta tarefa:
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 Você precisa alterar as configurações de parâmetro de OUTPUT_PATH , TASK e DATA_PATH correspondentemente.
OUTPUT_DIR : o diretório para salvar o modelo.TASK : Escolha entre 1 , 2 e 3 .DATA_PATH : o diretório do conjunto de dados. Você pode usar o seguinte script para reproduzir o desempenho da inferência de Codellama-7b nesta tarefa:
python chat_completion.py
--model_name ' codellama/CodeLlama-7b-Instruct-hf '
--peft_model PEFT_MODEL
--prompt_file PROMPT_FILE
--task TASK Você precisa alterar as configurações de parâmetros de PEFT_MODEL , PROMPT_FILE e TASK correspondentemente.
PEFT_MODEL : o caminho do modelo PEFT.PROMPT_FILE : o caminho do arquivo prompt.TASK : Escolha entre 1 , 2 e 3 .Consulte o Finetune para obter detalhes.
Para executar o contêiner ML-Agent-Bench Docker, você pode usar o seguinte comando:
docker pull public.ecr.aws/i5g0m1f6/ml-bench
docker run -it public.ecr.aws/i5g0m1f6/ml-bench /bin/bashIsso puxará a imagem mais recente do ML-Agent-Bench Docker e a executará em um shell interativo. O contêiner inclui todas as dependências necessárias para executar a base de código ML-Agent-Bench.
Para ML-Agent-Bench no Opendevin, consulte o Guia de Configuração Opendevin.
Consulte o ENVs para obter detalhes.
Distribuído sob a licença do MIT. Consulte LICENSE para obter mais informações.