Os modelos de linguagem de grande dimensão (LLM) estão na moda, especialmente com os recentes desenvolvimentos da OpenAI. O fascínio dos LLMs advém da sua capacidade de compreender, interpretar e gerar linguagem humana de uma forma que outrora se pensava ser do domínio exclusivo dos humanos. Ferramentas como o CoPilot estão a integrar-se rapidamente na vida quotidiana dos programadores, enquanto as aplicações alimentadas por ChatGPT estão a tornar-se cada vez mais comuns.
A popularidade dos LLMs também decorre da sua acessibilidade para o programador médio. Com muitos modelos de código aberto disponíveis, surgem diariamente novas empresas de tecnologia com algum tipo de solução para um problema baseada em LLM.
Os dados têm sido referidos como o "novo petróleo". Na aprendizagem automática, os dados são a matéria-prima utilizada para treinar, testar e validar modelos. Dados de alta qualidade, diversificados e representativos são essenciais para criar LLMs que sejam precisos, fiáveis e robustos.
Construir o seu próprio LLM pode ser um desafio, especialmente quando se trata de recolher e armazenar dados. Lidar com grandes volumes de dados não estruturados, juntamente com o seu armazenamento e a gestão do acesso, são apenas alguns dos desafios que pode enfrentar. Nesta publicação, vamos explorar estes desafios da gestão de dados. Especificamente, vamos analisar:
- Como funcionam os LLM e como selecionar entre os modelos existentes
- Os tipos de dados utilizados nas LLM
- Condutas de dados e ingestão para LLMs
O nosso objetivo é dar-lhe uma compreensão clara do papel fundamental que os dados desempenham nos programas de aprendizagem ao longo da vida, dotando-o dos conhecimentos necessários para gerir eficazmente os dados nos seus próprios projectos de aprendizagem ao longo da vida.
Para começar, vamos estabelecer uma base básica de compreensão dos LLMs.
Como funcionam os LLM e como selecionar entre os modelos existentes
A um nível elevado, um LLM funciona convertendo palavras (ou frases) em representações numéricas chamadas "embeddings". Estas incorporações captam o significado semântico e as relações entre as palavras, permitindo ao modelo compreender a linguagem. Por exemplo, um LLM aprenderia que as palavras "cão" e "cachorro" estão relacionadas e colocá-las-ia mais perto umas das outras no seu espaço numérico, enquanto a palavra "árvore" estaria mais distante.
A parte mais importante de uma LLM é a rede neural, que é um modelo de computação inspirado no funcionamento do cérebro humano. A rede neuronal pode aprender estas incorporações e as suas relações a partir dos dados em que é treinada. Tal como acontece com a maioria das aplicações de aprendizagem automática, os modelos LLM necessitam de grandes quantidades de dados. Normalmente, com mais dados e dados de maior qualidade para o treino do modelo, mais preciso será o modelo, o que significa que é necessário um bom método para gerir os dados para os seus LLM.
Considerações sobre a ponderação dos modelos existentes
Felizmente para os programadores, estão atualmente disponíveis muitas opções de código aberto para LLMs, com várias opções populares que permitem a utilização comercial, incluindo:
- Dolly (lançado pela Databricks)
- Open LLaMA (Meta reprodução)
- Muitos, muitos mais
Com uma lista tão extensa para escolher, selecionar o modelo LLM de código aberto correto a utilizar pode ser complicado. É importante compreender os recursos de computação e memória necessários para um modelo LLM. A dimensão do modelo - por exemplo, 3 mil milhões de parâmetros de entrada versus 7 mil milhões - tem impacto na quantidade de recursos necessários para executar e exercitar o modelo. Considere isto em relação às suas capacidades. Por exemplo, vários modelos DLite foram disponibilizados especificamente para serem executados em computadores portáteis, em vez de exigirem recursos de nuvem de alto custo.
Ao pesquisar cada LLM, é importante ter em conta a forma como o modelo foi treinado e o tipo de tarefa para que é geralmente direcionado. Estas distinções também afectarão a sua escolha. O planeamento do seu trabalho de LLM implica analisar as opções de modelos de código aberto, compreender onde cada modelo se destaca melhor e antecipar os recursos que terá de utilizar para cada modelo.
Dependendo da aplicação ou do contexto em que vai precisar de um LLM, pode começar com um LLM existente ou pode optar por treinar um LLM de raiz. Com um LLM existente, pode utilizá-lo tal como está ou pode afinar o modelo com dados adicionais representativos da tarefa que tem em mente.
A escolha da melhor abordagem para as suas necessidades requer uma forte compreensão dos dados utilizados para a formação de LLMs.
Os tipos de dados utilizados nas LLMs
Quando se trata de treinar um LLM, os dados utilizados são tipicamente textuais. No entanto, a natureza desses dados textuais pode variar muito, e é essencial compreender os diferentes tipos de dados que podem ser encontrados. Em geral, os dados de LLM podem ser categorizados em dois tipos: dados semi-estruturados e não-estruturados. Os dados estruturados, que são dados representados num conjunto de dados tabulares, não são susceptíveis de serem utilizados em LLM.
Dados semi-estruturados
Os dados semi-estruturados são organizados de uma forma predefinida e seguem um determinado modelo. Esta organização permite uma pesquisa e consulta simples dos dados. No contexto das LLMs, um exemplo de dados semi-estruturados pode ser um corpus de texto em que cada entrada está associada a determinadas etiquetas ou metadados. Exemplos de dados semi-estruturados incluem:
- Artigos de notícias, cada um associado a uma categoria (como desporto, política ou tecnologia).
- Comentários de clientes, com cada comentário associado a uma classificação e a informações sobre o produto.
- Publicações em redes sociais, com cada publicação associada ao utilizador que publicou, à hora da publicação e a outros metadados.
Nestes casos, um LLM pode aprender a prever a categoria com base no artigo de notícias, a classificação com base no texto da crítica ou o sentimento de uma publicação nas redes sociais com base no seu conteúdo.
Dados não estruturados
Os dados não estruturados, por outro lado, não têm uma organização ou modelo predefinido. Estes dados são muitas vezes compostos por muito texto e podem também conter datas, números e factos, o que torna mais complicado o seu processamento e análise. No contexto dos LLM, os dados não estruturados são muito comuns. Exemplos de dados não estruturados incluem:
- Livros, artigos e outros conteúdos de formato longo
- Transcrições de entrevistas ou podcasts
- Páginas ou documentos Web
Sem rótulos explícitos ou etiquetas organizacionais, os dados não estruturados são mais difíceis de treinar no LLM. No entanto, também podem produzir modelos mais gerais. Por exemplo, um modelo treinado num grande corpus de livros pode aprender a gerar prosa realista, como é o caso do GPT-3.
Já vimos que os dados estão no centro dos LLM, mas como é que esses dados passam do seu estado bruto para um formato que um LLM pode utilizar? Vamos mudar o nosso foco para considerar os principais processos envolvidos.
Pipelines de dados e ingestão para LLMs
Os blocos de construção para a aquisição e processamento de dados para uma LLM assentam nos conceitos de condutas de dados e ingestão de dados.
O que é um pipeline de dados?
Os pipelines de dados formam o canal entre os dados brutos e não estruturados e uma LLM totalmente treinada. Garantem que os dados são corretamente recolhidos, processados e preparados, tornando-os prontos para as fases de formação e validação do seu processo de construção de LLM.
Um pipeline de dados é um conjunto de processos que move os dados da sua origem para um destino onde podem ser armazenados e analisados. Normalmente, isso envolve:
- Extração de dados: Os dados são extraídos da sua fonte, que pode ser uma base de dados, um armazém de dados ou mesmo uma API externa.
- Transformação dos dados: Os dados em bruto têm de ser limpos e transformados num formato adequado para análise. A transformação inclui o tratamento de valores em falta, a correção de dados inconsistentes, a conversão de tipos de dados ou a codificação de variáveis categóricas com um ponto.
- Carregamento de dados: Os dados transformados são carregados num sistema de armazenamento, como uma base de dados ou um armazém de dados. Estes dados estão então prontamente disponíveis para utilização num modelo de aprendizagem automática.
Quando falamos de ingestão de dados, estamos a referir-nos ao front end destes processos de pipeline, que trata da aquisição de dados e da sua preparação para utilização.
O que é um pipeline de dados no contexto de um LLM?
Embora um pipeline de dados para um LLM possa, de um modo geral, sobrepor-se à maioria dos pipelines utilizados pelas equipas de dados, os LLMs introduzem alguns desafios únicos na gestão de dados para LLMs. Por exemplo:
- Extração de dados: A extração de dados para um LLM é muitas vezes mais complexa, variada e pesada em termos informáticos. Uma vez que as fontes de dados podem ser sítios Web, livros, transcrições ou redes sociais, cada fonte tem as suas próprias nuances e exige uma abordagem única.
- Transformação de dados: Com uma gama tão vasta de fontes de dados de LLM, cada passo de transformação para cada tipo de dados será diferente, exigindo uma lógica única para processar os dados num formato mais normalizado que uma LLM possa consumir para formação.
- Carregamento de dados: Em muitos casos, a etapa final do carregamento de dados pode exigir tecnologias de armazenamento de dados fora do normal. Os dados de texto não estruturados podem exigir a utilização de bases de dados NoSQL, em contraste com os armazenamentos de dados relacionais utilizados por muitos pipelines de dados.
O processo de transformação de dados para LLMs inclui técnicas semelhantes às que se encontram no processamento de linguagem natural (NLP):
- Tokenização: Dividir o texto em palavras individuais ou "tokens".
- Remoção de palavras de paragem: Eliminação de palavras de uso comum como "e", "o" e "é". No entanto, dependendo da tarefa para a qual o LLM foi treinado, as palavras de paragem podem ser mantidas para preservar informações sintácticas e semânticas importantes.
- Lemmatização: Redução das palavras à sua forma de base ou raiz.
Como pode imaginar, a combinação de todos estes passos para ingerir grandes quantidades de dados de uma vasta gama de fontes pode resultar num pipeline de dados incrivelmente complicado e de grandes dimensões. Para o ajudar na sua tarefa, precisará de boas ferramentas e recursos.
Ferramentas comuns utilizadas para a ingestão de dados
Várias ferramentas extremamente populares no espaço da engenharia de dados podem ajudá-lo com os complexos processos de ingestão de dados que fazem parte do seu pipeline de dados. Se estiver a construir a sua própria LLM, a maior parte do seu tempo de desenvolvimento será gasto na recolha, limpeza e armazenamento dos dados utilizados para a formação. As ferramentas que ajudam a gerir os dados para LLMs podem ser categorizadas da seguinte forma:
- Orquestração de pipelines: Plataformas para monitorizar e gerir os processos no seu pipeline de dados.
- Computação: Recursos para processar seus dados em escala.
- Armazenamento: Bases de dados para armazenar a grande quantidade de dados necessários para uma formação LLM eficaz.
Vejamos cada uma delas com mais pormenor.
Orquestração de pipelines
Apache O Airflow é uma plataforma popular e de código aberto para criar, agendar e monitorizar fluxos de trabalho de dados de forma programática. Permite-lhe criar pipelines de dados complexos com a sua interface de codificação baseada em Python, que é versátil e fácil de trabalhar. As tarefas no Airflow estão organizadas em gráficos acíclicos direccionados (DAGs), em que cada nó representa uma tarefa e as arestas representam dependências entre as tarefas.
O Airflow é amplamente utilizado para operações de extração, transformação e carregamento de dados, tornando-o uma ferramenta valiosa no processo de ingestão de dados. O site Marketplace da Linode oferece o Apache Airflow para facilitar a configuração e o uso.
Calcular
Para além da gestão de pipelines com ferramentas como o Airflow, necessitará de recursos informáticos adequados que possam ser executados de forma fiável em escala. À medida que ingere grandes quantidades de dados textuais e efectua o processamento a jusante a partir de muitas fontes, a sua tarefa exigirá recursos de computação que possam ser escalados - idealmente, de forma horizontal - conforme necessário.
Uma escolha popular para computação escalável é o Kubernetes. O Kubernetes traz flexibilidade e integra-se bem com muitas ferramentas, incluindo o Airflow. Ao tirar partido do Kubernetes gerido, pode criar recursos de computação flexíveis de forma rápida e simples.
Armazenamento
Uma base de dados é parte integrante do processo de ingestão de dados, servindo como destino principal para os dados ingeridos depois de limpos e transformados. Podem ser utilizados vários tipos de bases de dados. O tipo a utilizar depende da natureza dos dados e dos requisitos específicos do seu caso de utilização:
- As bases de dados relacionais utilizam uma estrutura tabular para armazenar e representar dados. São uma boa escolha para dados que têm relações claras e onde a integridade dos dados é crítica. Embora o seu LLM dependa de dados não estruturados, uma base de dados relacional como o PostgreSQL também pode trabalhar com tipos de dados não estruturados.
- Bases de dados NoSQL: As bases de dados NoSQL incluem bases de dados orientadas para documentos, que não utilizam uma estrutura tabular para armazenar dados. São uma boa escolha para lidar com grandes volumes de dados não estruturados, proporcionando elevado desempenho, elevada disponibilidade e fácil escalabilidade.
Como alternativa às bases de dados para armazenamento de dados LLM, alguns engenheiros preferem utilizar sistemas de ficheiros distribuídos. Exemplos incluem AWS S3 ou Hadoop. Embora um sistema de ficheiros distribuído possa ser uma boa opção para armazenar grandes quantidades de dados não estruturados, requer um esforço adicional para organizar e gerir os seus grandes conjuntos de dados.
Para opções de armazenamento do Marketplace, encontrará PostgreSQL gerido e MySQL gerido. Ambas as opções são fáceis de configurar e de ligar ao seu pipeline de dados LLM.
Embora seja possível para LLMs menores treinarem com menos dados e se safarem com bancos de dados menores (como um único nó PostgreSQL), casos de uso mais pesados trabalharão com quantidades muito grandes de dados. Nestes casos, é provável que precise de algo como um cluster PostgreSQL para suportar o volume de dados com que vai trabalhar, gerir dados para LLMs e fornecer esses dados de forma fiável.
Ao escolher uma base de dados para gerir os dados dos LLM, tenha em conta a natureza dos dados e os requisitos do seu caso. O tipo de dados que ingere determinará o tipo de base de dados mais adequado às suas necessidades. Os requisitos do seu caso de utilização - como o desempenho, a disponibilidade e a escalabilidade - também serão considerações importantes.
A ingestão de dados de forma eficaz e precisa é crucial para o sucesso de um LLM. Com a utilização adequada das ferramentas, pode criar processos de ingestão de dados fiáveis e eficientes para o seu pipeline, tratando grandes quantidades de dados e garantindo que o seu LLM tem o que precisa para aprender e apresentar resultados precisos.
Para terminar
O aumento meteórico da popularidade dos LLMs abriu novas portas no espaço tecnológico. A tecnologia é facilmente acessível aos programadores, mas a sua capacidade de gerir dados para os LLM e de os aproveitar para formar novos LLM ou aperfeiçoar os existentes ditará o seu sucesso a longo prazo.
Se está a começar a trabalhar num projeto de LLM, precisa de compreender os princípios básicos antes de se lançar ao trabalho. Para ser mais eficaz, uma LLM requer a ingestão de um grande volume de dados não estruturados, um processo que inclui a extração de fontes, o pré-processamento, a transformação e a importação. A execução dessas tarefas requer ferramentas como Airflow e Kubernetes para orquestração de pipeline e recursos de computação escaláveis. Além disso, a natureza não estruturada dos dados normalmente utilizados para a formação LLM requer uma opção de armazenamento de dados como o PostgreSQL, que pode ser utilizado de forma fiável em escala através de clusters.
Comentários (1)
Artigo muito bom para quem quer se aprofundar em LLM! Parabéns!