Conversas com Gemma e Limitações
O vídeo apresenta conversas entre humanos e Gemma, destacando as capacidades do modelo em responder a perguntas e fornecer informações. No entanto, também são abordadas as limitações de Gemma, que não é capaz de “aprender” no sentido clássico, mas sim treinada em dados. Além disso, o vídeo apresenta Ellen, um companheiro de bolso que pode responder a perguntas e fornecer informações sem uma conexão de internet.
Aspectos Técnicos
O vídeo também se aprofunda nos aspectos técnicos do uso de modelos de linguagem em dispositivos. São discutidos parâmetros como “top K” e “top P”, que controlam o número de palavras possíveis consideradas pelo modelo e o equilíbrio entre previsibilidade e aleatoriedade. Além disso, o vídeo apresenta Gemini, uma versão on-device do modelo Gemini que pode ser executada em um dispositivo sem precisar de computação em nuvem.
Desbloqueando o Poder dos Modelos de Linguagem
Para utilizar modelos de linguagem em aplicativos móveis, é necessário baixar e adicionar o modelo ao diretório do aplicativo, escolhendo a variante certa do modelo (CPU ou GPU) com base nas necessidades do aplicativo. O pacote MediaPipe é uma biblioteca para modelos de linguagem que pode ser utilizada com Flutter, mas atualmente tem 18 problemas abertos, principalmente solicitações de recursos.
O vídeo também apresenta o pacote MediaPipe Gen AI, que está em sua infância e pode ser contribuído no GitHub. Qualquer modelo compatível com MediaPipe pode ser utilizado em Flutter. A engine e a geração de resposta são inicializadas descartando qualquer engine existente e recriando-a com as configurações desejadas.
Um Olhar mais Profundo nos Internos do Modelo
O vídeo apresenta um exemplo de um aplicativo de chatbot que utiliza o modelo de linguagem Gemma, onde o aplicativo envia um histórico de conversa formatado para Gemma, e Gemma responde com um sumário breve do contexto da conversa. Além disso, o vídeo se aprofunda nos internos do modelo, explicando como ele utiliza classes e construtores, incluindo construtores CPU e GPU. O SDK MediaPipe é um binário C++ que precisa ser inicializado e empaquetado no aplicativo.
O Motor de Inferência de LLM
Finalmente, o vídeo explica como o motor de inferência de LLM (Large Language Model) funciona, utilizando isolates e código nativo para lidar com tarefas de longa duração e manter uma interface de usuário responsiva. A inicialização do modelo LLM é movida para um isolate para evitar bloquear a thread da interface de usuário, e a comunicação entre o isolate e a thread da interface de usuário é feita utilizando ports de envio e recebimento.