O InstructLab é um método para treinar modelos de IA que tem como objetivo melhorar significativamente os LLMs usados no desenvolvimento de aplicações de IA generativa.
O InstructLab foi desenvolvido pela IBM pesquisa e pela Red Hat. É um projeto de código aberto, o que significa que depende de uma comunidade global de desenvolvedores (conhecida como comunidade InstructLab) para sua construção e manutenção.
O Projeto InstructLab foi criado para lidar com problemas que limitam o desenvolvimento de grandes modelos de linguagem (LLMs), especialmente o custo e a complexidade do treinamento e coleta de dados, além da dificuldade de contribuir com habilidades e conhecimento.
De acordo com a Forbes, o InstructLab aumentou o desempenho do LLM e resolveu vários desafios de escalabilidade do treinamento tradicional de LLM, eliminando a necessidade de as empresas criarem e manterem vários LLMs. Isso é amplamente possível devido a um método de treinamento de LLM conhecido como Alinhamento em Grande Escala para chatbots, ou LAB, desenvolvido pela IBM.
Hoje, os chatbots mais poderosos, como Siri, Alexa e ChatGPT, dependem de LLMs (Modelos de Linguagem de Grande Escala) pré-treinados, o que lhes permite aprender tarefas rapidamente durante o processo de alinhamento da IA (Inteligência Artificial). No entanto, levar a inteligência artificial a esse nível pode ser caro e demorado, e os modelos que surgem muitas vezes não têm a profundidade necessária para passar por situações complexas, com nuances e semelhantes às humanas. De acordo com o IBM Institute of Business Value, os executivos esperavam que o custo médio da computação subisse quase 90% devido, principalmente, às demandas de construção de LLMs para aplicações de inteligência artificial generativa (IA generativa).
Alinhamento em grande escala para chatBots (LAB) é um método de gerar dados sinteticamente para tarefas específicas que uma Organização precisa de um chatbot para realizar. Ao contrário dos métodos de treinamento tradicionais, ele permite que os chatbots assimilem rapidamente novas informações e aprendam novas habilidades sem substituir as coisas que já aprenderam.
A abordagem do InstructLab para o desenvolvimento e manutenção de grandes modelos de linguagem (LLM) é diferente de outros modelos, pois coloca o processo firmemente nas mãos de uma comunidade mundial de desenvolvedores, um processo conhecido como IA de código aberto. Da mesma forma que o software de código aberto permite que os desenvolvedores contribuam para o desenvolvimento de códigos e funcionalidades, a IA de código aberto permite que eles adicionem novas habilidades e recursos e iterem rapidamente nos modelos existentes.
Apoiada no método LAB, a abordagem do InstructLab para construir LLMs é diferente de outras de três maneiras crítico:
No treinamento de um LLM, a taxonomia é uma estrutura hierárquica que categoriza as habilidades e áreas de conhecimento crítico para a aplicação pretendida pelo LLM. Por exemplo, a taxonomia de um LLM que será aplicado a um veículo autônomo seria significativamente diferente de um que está sendo aplicado à pesquisa médica, da mesma forma que um piloto de carros de corrida teria que aprender habilidades diferentes das de um médico.
Os dados do InstructLab são estruturados de forma que facilitam a compreensão das habilidades e da base de conhecimento existentes do modelo. A simplicidade da estrutura do InstructLab torna simples para os desenvolvedores identificar lacunas e preencher conhecimentos e habilidades quando necessário. Essa curadoria de dados orientada por taxonomia também permite que os modelos sejam direcionados especificamente para novos casos de uso, como pesquisa ou uma aplicação específica da Internet das coisas (IoT) , e que possuam as habilidades apropriadas.
Para isso, a abordagem do InstructLab depende fortemente do YAML ("YAML Ain’t No Markup Language" ou "Yet Another Markup Language"), um formato padronizado para representar dados de uma maneira fácil de interpretar por humanos e máquinas. A abordagem YAML abre caminho para a próxima etapa fundamental no processo do InstructLab: geração de dados sintéticos em grande escala.
Uma vez que os dados para treinar um modelo específico tenham sido selecionados, o próprio modelo está pronto para gerar seus próprios dados com base nos dados de treinamento, um processo conhecido como geração de dados sintéticos. O que distingue a abordagem do InstructLab nessa etapa do treinamento de um LLM é a escala em que ele é feito e a precisão dos dados que ele pode gerar. Confiando no método de Alinhamento em Grande Escala para chatbot (LAB) mais uma vez, a abordagem do InstructLab adiciona uma etapa automatizada, refinando ainda mais as respostas que o LLM gera para garantir sua precisão.
Os novos dados gerados durante essa etapa, críticos para o treinamento de todos os LLMs, não somente do InstructLab, dependem do que é conhecido como um modelo "professor", um modelo maior que gera rótulos e dados para um modelo "aluno" menor e mais eficiente aprender.
Com o método LAB, os LLMs do InstructLab não usam dados armazenados pelo modelo professor, mas sim instruções específicas que aumentam exponencialmente o conjunto de dados, ao mesmo tempo em que garantem que os exemplos gerados pelo modelo "alunos" permaneçam alinhados com a finalidade pretendida dos LLMs.
De acordo com a pesquisa da IBM, essa abordagem “gera sistematicamente dados sintéticos para as tarefas que você deseja que seu chatbot realize e para assimilar novos conhecimentos e recursos no modelo de base, sem substituir o que o modelo já aprendeu.”
Na etapa final do processo do InstructLab/LAB, o LLM é retreinado nos dados sintéticos dos quais está aprendendo, refinando suas habilidades e melhorando a precisão de suas respostas. Essa última etapa é dividida em duas fases:
LLMs treinados em métodos mais tradicionais normalmente utilizam um processo chamado geração aumentada de recuperação (RAG) para complementar seu conhecimento com treinamentos mais focados e específicos para cada domínio. O RAG é uma ferramenta útil para organizações que precisam adicionar dados proprietários a um modelo de base existente para uma finalidade específica sem abrir mão do controle sobre seus dados proprietários.
O método InstructLab/LAB pode ser usado para o mesmo propósito que um processo RAG mais tradicional, mas em vez de adicionar conhecimento específico existente, ele se concentra mais nas contribuições dos usuários finais de sua comunidade para construir conhecimentos e habilidades relevantes. Organizações que buscam um ajuste fino de LLMs para uma finalidade específica pode usar tanto o RAG quanto o InstructLab/LAB para alcançar os resultados ideais.
À medida que as aplicações de IA ficam mais exigentes, os LLMs compatíveis com elas estão ficando maiores e mais complexos e, consequentemente, colocando demandas mais rigorosas na infraestrutura de IA subjacente. O InstructLab/LAB, assim como todos os outros métodos avançados de treinamento de modelos, depende de uma infraestrutura com uso intenso de GPUs, capaz de atender aos benchmarks de desempenho necessários para o constante retreinamento de modelos de IA, de acordo com as contribuições de sua comunidade global de código aberto em github.com/instructlab.
Felizmente, a IBM está dedicada em fornecer todo o armazenamento de dados, gerenciamento, fluxo de trabalho e práticas necessários para o sucesso dos projetos de LLMs.
Hoje, os LLMs sustentam os casos de uso de IA mais empolgantes, desde chatbots e assistentes de programação de IA generativa até edge computing, aplicação de Internet das coisas (IoT) e muito mais. Podem ser modelos proprietários, como OpenAI e Claude, ou modelos que dependem de princípios de código aberto no que diz respeito aos dados de pré-treinamento que utilizam, como Mistral, Llama-2 e modelos Granite da IBM.
O InstructLab se destaca em sua capacidade de igualar e até exceder o desempenho de modelos proprietários usando modelos disponíveis publicamente. O IBM watsonx, uma plataforma de IA e dados projetada para ajudar as empresas a escalar e acelerar o impacto da IA, depende extensivamente dele. Por exemplo, o Merlinite-7B, um modelo recente treinadoem LAB, superou vários modelos proprietários em áreas-chave, de acordo com um artigo da IBM pesquisa.
Para atender aos requisitos de aplicações avançadas de IA generativa, os desenvolvedores muitas vezes contam com um LLM existente que eles adaptam para atender a uma necessidade específica do negócio. Tomemos, por exemplo, uma seguradora que busca criar uma aplicação de IA generativa para ajudar os funcionários a obter insights a partir de dados proprietários de clientes. Hoje, eles provavelmente comprariam um LLM existente construído para chatbots e o modificariam de acordo com suas necessidades. Mas esta abordagem tem várias limitações importantes:
O método do InstructLab pode treinar LLMs usando menos entradas geradas por seres humanos e muito menos recursos de computação. A base do método de treinamento da maioria dos LLMs modernos, especialmente daqueles que sustentam chatbots poderosos, é o pré-treinamento extensivo em grandes conjuntos de dados de texto não estruturado. Embora essa abordagem de treinamento permita que os LLMs adquiram novas habilidades de forma relativamente rápida no estágio de alinhamento, é cara e exige uma grande entrada humana.
A abordagem LAB, desenvolvida pela IBM pesquisa, usa a geração de dados sintéticos guiados por taxonomia para reduzir os custos e a necessidade de entradas humanas. Juntamente com a abordagem de desenvolvimento de código aberto e voltada para a comunidade do InstructLab, essa abordagem democratiza efetivamente o desenvolvimento dos LLMs necessários para aplicações de IA generativa.
A Command Line Interface (CLI) do InstructLab, o conjunto de instruções que os desenvolvedores usam para gerenciá-la, foi projetada para funcionar até mesmo em dispositivos amplamente utilizados, como notebooks pessoais, e os desenvolvedores são incentivados a contribuir com novos conhecimentos ou habilidades por meio da comunidade de IA Hugging Face.
O InstructLab adota uma abordagem de código aberto e baseada na comunidade para ajustar os LLMs para uma ampla gama de casos de uso. Aqui estão alguns dos mais comuns.
Os LLMs desenvolvidos com a abordagem do InstructLab podem ser treinados para adquirir novas habilidades e conhecimentos para muitas aplicações no setor de saúde, desde a coleta de volumes de dados clínicos para ajudar os cientistas a fazer avanços na pesquisa médica até a avaliação do risco do paciente a partir do histórico médico e muito mais.
No setor bancário, a abordagem do InstructLab pode criar LLMs com ênfase em análise comercial e projeção de modelos para ajudar a identificar tendências e Forecasting riscos associados à estratégia comercial. Ele também pode ser usado para treinar LLMs para aplicações de IA generativa em finanças pessoais, como poupança para aposentadoria, orçamento e muito mais.
LLMs treinados usando a abordagem do InstructLab podem alimentar chatbots inteligentes treinados em áreas específicas de atendimento ao cliente, como devolver um item ou solicitar um produto específico. Além disso, o método LAB pode auxiliar no ajuste fino dos LLMs para que sejam assistentes virtuais com um conjunto complexo de habilidades, como agendar compromissos, reservar viagens, declarar impostos e muito mais.
O método InstructLab ajuda a realizar o ajuste fino dos LLMs por trás das aplicações de IA generativa no marketing para diversas finalidades. Eles podem aprender a vasculhar os dados dos clientes em busca de insights sobre comportamento, preferência de produto e até mesmo projeto de futuros produtos. Eles também podem adquirir as habilidades necessárias para oferecer conselhos personalizados de produtos, como tamanho de sapatos ou roupas, preferência de cor e muito mais.
A aplicação do método InstructLab para treinar LLMs que ajudem a melhorar o ciclo de vida do DevOps pode beneficiar os desenvolvedores de várias maneiras importantes. LLMs treinados usando o método InstructLab podem gerar código e criar scripts, automatizar o provisionamento de infraestrutura (aplicação Infrastructure as Code (IaC)) e encurtar e melhorar a resolução rotineira de problemas, resolução de problemas e até análise e avaliação de código.