Xiaoqiang Lin*, Zhaoxuan Wu*, Zhongxiang Dai, Wenyang Hu, Yao Shu, See-Kiong NG, Patrick Jaillet, Bryan Kian Hsiang Low
Página inicial do projeto | Arxiv | Papel
Este é o código para o artigo: use seu instinto: otimização de instruções usando bandidos neurais juntamente com transformadores. Fornecemos todos os códigos para nossos experimentos que incluem:
Nosso código é baseado no código da APE e InstructZero.
Os grandes modelos de idiomas (LLMs) mostraram recursos notáveis de seguidores de instruções e alcançaram performances impressionantes em várias aplicações. No entanto, as performances dos LLMs dependem fortemente das instruções dadas a eles, que normalmente são sintonizadas manualmente com esforços humanos substanciais. Trabalhos recentes usaram o algoritmo Bayesian Optimization (BO) com eficiência de consulta para otimizar automaticamente as instruções fornecidas ao Black-Box LLMS. No entanto, o BO geralmente fica aquém ao otimizar funções objetivas altamente sofisticadas (por exemplo, de alta dimensão), como as funções que mapeiam uma instrução para o desempenho de um LLM. Isso se deve principalmente ao poder expressivo limitado do modelo de processo gaussiano (GP), que é usado pelo BO como um substituto para modelar a função objetivo. Enquanto isso, foi demonstrado repetidamente que as redes neurais (NNs), especialmente os transformadores pré-treinados, possuem forte poder expressivo e podem modelar funções altamente complexas. Então, adotamos um algoritmo de bandidos neurais que substitui o GP no BO por um substituto NN para otimizar as instruções para o Black-Box LLMS. Mais importante, o algoritmo de bandidos neurais nos permite acoplar naturalmente o substituto da NN à representação oculta aprendida por um transformador pré-treinado (ou seja, um LLM de código aberto), que aumenta significativamente seu desempenho. Isso nos motiva a propor nossa otimização de instruções usando bandidos neurais, juntamente com o algoritmo Transformers (Instinct). Realizamos a otimização de instruções para o ChatGPT e usamos extensos experimentos para mostrar que nosso instinto supera consistentemente os métodos existentes em diferentes tarefas, como em várias tarefas de indução de instrução e a tarefa de melhorar a instrução de cadeia de pensamento zero.
Você pode baixar os dados para indução intrínseca do repositório do GitHub do InstructZero. Você pode baixar o conjunto de dados do samsum no site da Huggingface. Você pode fazer o download do conjunto de dados para GSM8K, Aquarat e Svamp a partir do repositório do APE.
Colocamos o notebook de preparação de dados em COT/experiments/data/instruction_induction/pre_aqua.ipynb , COT/experiments/data/instruction_induction/pre_gsm8k.ipynb e Induction/experiments/data/nlptasks/pre_nlp_data.ipynb .
Para executar nosso código, você precisa instalar o ambiente usando o conda: conda env create -f environment.yml
Fornecemos scripts bash para executar nossos experimentos para indução de instruções em Induction/experiments/run_neural_bandits.sh . Para executá -lo corretamente, você precisa executar o seguinte no terminal:
cd Induction
bash experiments/run_neural_bandits.sh
Da mesma forma, para executar nosso código para melhorar a instrução da cadeia de pensamentos, você precisa executar o script COT/experiments/run_cot_bandits.sh como o seguinte:
cd COT
bash experiments/run_cot_bandits.sh
Observe que, antes de executar o script Bash acima, você precisa especificar a tecla OpenAI para ligar para a API gpt-turbo-3.5-0301 . Para fazer isso, mude o seguinte nos dois scripts de bash:
export export OPENAI_API_KEY=YOUR_KEY
@inproceedings{lin2024use,
title={Use Your {INSTINCT}: INSTruction optimization for LLMs usIng Neural bandits Coupled with Transformers},
author={Xiaoqiang Lin and Zhaoxuan Wu and Zhongxiang Dai and Wenyang Hu and Yao Shu and See-Kiong Ng and Patrick Jaillet and Bryan Kian Hsiang Low},
year={2024},
booktitle={Proc. ICML}
}