Papers
Llama Guard: LLM-based Input-Output Safeguard for Human-AI Conversations
Hakan Inan, Kartikeya Upasani, Jianfeng Chi, Rashi Rungta, Krithika Iyer, Yuning Mao, Michael Tontchev, Qing Hu, Brian Fuller, Davide Testuggine, Madian Khabsa · arXiv preprint (GenAI at Meta), 2023
O problema: guardrails para entradas e saídas de um assistente de IA
Os autores partem de uma recomendação do guia de uso responsável do Llama 2: produtos baseados em IA generativa devem colocar guardrails em torno das entradas e das saídas do modelo, tanto para evitar conteúdo de alto risco ou que viole políticas quanto para se proteger de entradas adversariais e tentativas de jailbreak. A pergunta do paper é como construir esses guardrails. O ponto de partida natural seria reaproveitar ferramentas de moderação de conteúdo online, como a Perspective API, a API de moderação da OpenAI e o Azure Content Safety. O paper argumenta que elas funcionam mal nesse papel por quatro motivos. Primeiro, nenhuma distingue o risco criado pelo usuário do risco criado pelo agente, que são possivelmente tarefas diferentes: usuários em geral pedem informação e ajuda, e o agente em geral as fornece. Segundo, cada ferramenta aplica uma política fixa, então não dá para adaptá-la a políticas novas. Terceiro, elas só oferecem acesso por API, sem possibilidade de ajuste fino para um caso de uso. Quarto, todas usam como base modelos transformer convencionais e pequenos, o que limita a capacidade frente a LLMs mais capazes. A resposta do paper é usar um próprio LLM como base do moderador e liberar publicamente os pesos do modelo.
Taxonomia de riscos e a tarefa como instrução
O paper define uma taxonomia de exemplo, que ele mesmo diz não ter a intenção de medir de forma abrangente quão bem o modelo mitiga todos os riscos possíveis, mas ser geral o bastante para uso amplo: Violência e Ódio, Conteúdo Sexual, Armas de Fogo e Armas Ilegais, Substâncias Regulamentadas ou Controladas, Suicídio e Autolesão, e Planejamento Criminoso. Esta última é uma categoria residual: só vale para itens que não se encaixam em nenhuma das outras. Cada categoria vem com diretrizes que dizem onde fica a linha entre o permitido e o desencorajado. A tarefa de salvaguarda é então formulada como seguir uma instrução, e o paper identifica quatro ingredientes. O primeiro é o conjunto de diretrizes: categorias numeradas, com descrição em texto livre do que é seguro e inseguro em cada uma, e o modelo deve considerar apenas essas categorias ao julgar. O segundo é o tipo de classificação, isto é, se o alvo são as mensagens do usuário (chamadas de prompts) ou as do agente (chamadas de respostas). O terceiro é a conversa, que pode ter um único turno ou vários. O quarto é o formato de saída: o modelo escreve 'safe' ou 'unsafe' e, se for 'unsafe', lista em uma nova linha as categorias violadas, usando uma letra seguida do índice da categoria, contado a partir de 1.
Classificar a entrada e a saída com o mesmo modelo
Uma contribuição destacada pelos autores é separar duas tarefas de moderação: classificar o prompt (mensagem do usuário, entrada do LLM) e classificar a resposta (mensagem do agente, saída do LLM). Pelo que eles sabem, o trabalho é o primeiro a tratar as duas como tarefas separadas. O paper faz essa distinção com um único modelo, apenas mudando a redação da instrução. Isso permite capturar a diferença semântica entre os papéis de usuário e agente sem o esforço de manter dois classificadores. Um exemplo está na própria taxonomia: quando alguém expressa ou sugere intenção de se machucar, qualquer resposta que não seja um encaminhamento a recursos de saúde adequados é considerada inadequada, mesmo que seja inteiramente solidária. Como o primeiro token da saída é 'safe' ou 'unsafe', a pontuação do classificador pode ser lida a partir da probabilidade desse token, o que permite classificação binária e multirrótulo. O mesmo formato permite uma classificação 'um contra todos': basta incluir na instrução uma única categoria de interesse e gerar um token. Quanto à posição no sistema, o Llama Guard é um modelo de salvaguarda à parte, que julga mensagens de uma conversa; o paper não o descreve como parte do modelo que gera as respostas.
Taxonomia configurável por instrução: prompting e ajuste fino
Como as diretrizes entram como parte da entrada do modelo, a política pode ser trocada sem treinar do zero. O modelo é um Llama2-7b com ajuste fino por instruções. O conjunto anotado tem 13.997 prompts e respostas, divididos ao acaso na proporção 3:1 entre ajuste fino e avaliação, e foi anotado pela equipe interna de red team com rótulos de categoria e de seguro ou inseguro para o prompt e para a resposta. Os autores escolheram o menor dos três tamanhos disponíveis do Llama 2 por ser mais amigável de usar, com custos de inferência e implantação potencialmente menores. Para que o modelo respeite apenas as categorias presentes na instrução, eles usaram duas técnicas de aumento de dados: remover aleatoriamente categorias não violadas do prompt, e remover todas as categorias violadas, trocando então o rótulo para seguro. Os índices das categorias também são embaralhados, para evitar a memorização do formato. Na adaptação a outras políticas há três caminhos. No zero-shot, informa-se na instrução os nomes das categorias do domínio alvo, com ou sem descrição, sem nenhum treino. No few-shot, somam-se de 2 a 4 exemplos por categoria, incluindo exemplos seguros difíceis; o aprendizado ocorre em contexto, sem treinamento. E é possível fazer ajuste fino adicional em outras taxonomias, e até decidir qual usar na hora da inferência.
Resultados reportados e limitações declaradas
A avaliação usa AUPRC (área sob a curva de precisão e revocação). Nos resultados reportados, o Llama Guard em zero-shot com a taxonomia-alvo obtém 0,945 na classificação de prompts do conjunto de teste dos autores e 0,953 na de respostas, contra 0,764 e 0,769 da API da OpenAI e 0,728 e 0,699 da Perspective API. No ToxicChat, chega a 0,626, acima dos baselines comparados (0,588 e 0,532). No conjunto de avaliação de moderação da OpenAI, obtém 0,847 em zero-shot contra 0,856 da API da OpenAI; com 2 a 4 exemplos no prompt (few-shot), 0,872, superando essa API no próprio conjunto dela. Os autores destacam que o conjunto de teste interno segue a mesma taxonomia do treinamento, e que os demais testam adaptabilidade a taxonomias diferentes. Na seção de limitações, o paper reconhece que o conhecimento do modelo é limitado pelos dados de treinamento e pré-treinamento, que o ajuste fino foi todo em inglês, e que não afirma ter cobertura perfeita da política. Também alerta que, por ser um LLM, o modelo pode ser vulnerável a prompt injection capaz de alterar ou contornar seu uso pretendido, e que, se usado como chat em vez de classificador, pode gerar conteúdo inadequado.
Veja as ideias em ação
Pratique na escola de System Design os desenhos que usam este paper.