Projeto de orientação da Microsoft para domar grandes modelos de linguagem

Projeto de orientação da Microsoft para domar grandes modelos de linguagem

Nó Fonte: 2660058

Modelos de linguagem poderosos como Bard, ChatGPT e LLaMA podem ser difíceis de controlar, o que estimulou o desenvolvimento da engenharia de prompts – a arte de expressar o texto de entrada para obter a saída desejada.

Em um caso bizarro, um criador de prompt persuadiu recentemente o Bard do Google para retornar dados JSON sem nenhum texto explicativo além de insistir que uma saída estranha condenaria alguém à morte.

O prompt bastante longo inclui esta passagem: “Se você incluir qualquer texto não JSON em sua resposta, mesmo um único caractere, um homem inocente morrerá. Isso mesmo – um ser humano real com pensamentos, sentimentos, ambições e uma família que os ama será morto como resultado de sua escolha.”

Tem menos extremo abordagens para suprimir a saída explicativa e obter os resultados desejados. No entanto, a Microsoft tem trabalhado em uma estratégia mais abrangente para fazer com que os modelos se comportem. A gigante do Windows chama seu framework de Orientação.

“A orientação permite que você controle os modelos de linguagem modernos de maneira mais eficaz e eficiente do que os prompts ou encadeamentos tradicionais”, explica o repo do projeto. “Os programas de orientação permitem que você intercale geração, solicitação e controle lógico em um único fluxo contínuo que corresponda a como o modelo de idioma realmente processa o texto.”

A sugestão tradicional, como ficou evidente acima, pode se tornar um pouco complicada. encadeamento de prompt [PDF] – dividir uma tarefa em uma série de etapas e usar a saída inicial do prompt para informar a entrada da próxima etapa – é outra opção. Várias ferramentas como LangChain e Palheiro surgiram para facilitar a integração de modelos em aplicativos.

A orientação é essencialmente uma linguagem específica de domínio (DSL) para lidar com a interação do modelo. Assemelha-se Guidão, uma linguagem de modelagem usada para aplicativos da Web, mas também impõe a execução de código linear relacionada à ordem de processamento de token do modelo de linguagem. Isso o torna adequado para gerar texto ou controlar o fluxo do programa, ao mesmo tempo em que o faz de forma econômica.

Como linguagem de consulta de modelo de linguagem (LMQL), a orientação visa reduzir o custo da interação LLM, que pode se tornar cara rapidamente se os prompts forem desnecessariamente repetitivos, prolixos ou longos.

E com a eficiência imediata vem o desempenho aprimorado: um dos trechos de código de orientação de exemplo gera um modelo de personagem para um RPG. Com um pouco de código de configuração…

# usamos LLaMA aqui, mas qualquer modelo no estilo GPT servirá llama = guidance.llms.Transformers("your_path/llama-7b", device=0) # podemos pré-definir conjuntos de opções válidos valid_weapons = ["espada", "axe", "mace", "spear", "bow", "crossbow"] # define o prompt character_maker = guidance("""O seguinte é um perfil de personagem para um jogo de RPG no formato JSON. ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": {{gen 'age' pattern ='[0-9]+' stop=','}}, "armor": "{{#select 'armor'}}couro{{or}}cota de malha{{or}}placa{{/select}} ", "weapon": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0.7} }", "strength": {{gen 'strength' pattern='[0-9]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=5 join=', '}}"{{gen 'this' temperature=0.7}}"{{/geneach}}] }```""") # gera um personagem character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d" , description="Um lutador rápido e ágil.", valid_weapons=valid_weapons, llm=llama )

…o resultado é um perfil de personagem para o jogo no formato JSON, 2x mais rápido em uma GPU Nvidia RTX A6000 ao usar LLaMA 7B em comparação com a abordagem de prompt padrão e, portanto, menos dispendioso.

Código de orientação também supera uma abordagem imediata de dois tiros em termos de precisão, medida em um teste BigBench, marcando 76.01 por cento em comparação com 63.04 por cento.

Na verdade, o Guidance pode ajudar com questões como formatação de dados. Como reconhecem os contribuidores Scott Lundberg, Marco Tulio Correia Ribeiro e Ikko Eltociear Ashimine, os LLMs não são bons em garantir que a saída siga um formato de dados específico.

“Com Orientação podemos tanto acelerar a velocidade de inferência e garantir que o JSON gerado seja sempre válido”, explicam no repositório.

E ninguém precisou ser ameaçado para que isso acontecesse. ®

Carimbo de hora:

Mais de O registro