Demorou mas chegou o momento que a gente vai fazer um mão na massa usando Transformers que é um assunto muito legal e eu sei que vocês estavam esperando eu tava devendo demorei sim mas está aqui pessoal transforma é uma arquitetura muito bacana da Inteligência Artificial moderna falei um pouquinho dela no vídeo anterior dei uma prévia de como ele processa informações ao mesmo tempo e mantendo o grau de atenção alto Inclusive a atenção é o mecanismo mais importante dele e nesse momento eu vou trazer um exemplo aqui um rendição bem rápido para ser eficiente em quem
tá começando a aprender em quem não quer pegar muito para baixo lá na implementação muito física do cara mas também algo não tão Fit transforme igual a gente vê por aí em modelos um pouco mais alto nível eu quero aqui pegar um pouquinho de como funciona o início e dá uma alavancada aí para você começar a criar um modelo do zero Sim a gente vai fazer um modelo do zero igual eu prometi eu vou usar aqui então esse projetinho vou disponibilizar aqui embaixo na descrição e fica à vontade para mudar do jeito que você quiser
eu vou começar lá do início como um computador entende palavras bom ele não entende palavras a gente tem que transformar em vetores numéricos que representam as palavras que a gente tem no vocabulário E aí galera de início então a gente já tem o primeiro desafio como transformar uma palavra em um vetor bom a gente tem várias técnicas para isso eu vou ensinar do zero uma bem arcaica uma bem didática vou jogar aqui então um trechinho de código e vou explicar imagina que a gente queira transformar hoje você está focado em aprender em um vetor numérico
bom uma ideia bacana pessoal para a gente poder fazer isso é quebrar cada uma das Letras dessa palavra certo e transformar em um código único eu tô fazendo um exemplo bem simples que é pegando todas as letras do texto de forma única com 7 transformando em uma lista e ordenando de forma alfabética nesse ponto galera a gente vai ter a quantidade de letras e de caracteres que compõem o nosso vocabulário extraído diretamente desse texto Então o nosso vocabulário para esse texto que eu coloquei aqui possui 19 caracteres um tamanho de 19 posições beleza e aqui
está o nosso vocabulário construído diretamente ligado à nossa frase beleza agora o ponto importante é a gente poder pegar cada uma dessas letras e transformar em um código um exemplo bem didático e bem simples também é transformar a posição desse valor na lista como sendo seu código então por exemplo o vazio ocupa a posição zero o a ocupa a posição 2 e assim sucessivamente se a gente fizer dessa forma a gente consegue construir uma conversão de letra para índice que eu estou chamando aqui nesse dicionário e aí para cada letra A gente vai ter associado
o seu código dentro do seu vetor de caracteres as posições e as respectivos códigos e aí galera para codificar eu posso escrever uma funçãozinha chamada em code que eu passo como parâmetro uma determinada letra e ele busca no vetor de letra para índice o índice respectivo Dessa letra Esse vai ser o meu encolder bem bem primitivo galera e aí Olha que legal se eu quiser por exemplo encoldar fazer o encode da frase Vamos aprender eu consigo por meio dessa função convertê-la repare que aqui o 16 é a letra V e assim sucessivamente então converti sim
minha frase pela primeira vez em um vetor de numéricos que é tão importante para machine learning moderna beleza E se eu quiser voltar bom usando a mesma lógica só que agora invertendo de caractere para inteiro tinteiro para caractere ou seja do índice da lista para o seu respectivo caractere vou colocar o código Zinho aqui completo então para a gente ver como funciona então aqui nós já temos o encode e o Decode reparem que a única diferença Claro a partir da junção da palavra né usando Joy eu tenho uma conversão do índice que eu estou passando
para a letra respectiva dentro da minha tabela lá no dicionário e esse que é o Decoder eu primeiro estou codificando Vamos aprender tô convertendo para esse Rei aí eu vou pegar essa rei e vou voltar para a frase aqui ele tá codificado e aqui está decodificado beleza funciona mas nós temos um belo de um problema bom quando a gente começa a perceber que nesse modelo é um para um Ou seja é uma letra para cada código isso para textos gigantescos é meio inviável porque você estaria criando uma necessidade de processamento muito alta né então grande
parte desse processo de incolde é você encontrar uma forma de colocar mais informação e menos dados uma forma da gente poder fazer isso que é bem legal é se em vez de usar cada uma das letras a gente puder usar a palavra porque uma palavra pode se resumir apenas um token e a gente ganha bastante espaço uma das técnicas que a gente faz isso que é bem conhecida da galera de dentro size é usando o hot em code imagina que a gente tenha tenha duas frases você está começando a aprender Transformers talvez você esteja começando
a gostar são duas frases diferentes eu vou transformar aqui num Data Frame e vou jogar na tela e nesse momento que a gente vai fazer o encolde por palavras um modelo bem interessante é o get dames do pandas aonde a gente consegue transformar todo o texto concatenado em uma matriz de ocorrências de palavras Olha que bacana então e a gente pegou todas as palavras que existem em todas as frases nesse caso as duas e aonde ela existe em uma frase ou outra a gente flega a gente marca com o valor um ou zero se ela
existe ou se ela não existe Então aqui estão todas as palavras dos meus textos e aqui reparem que transforma aparece na primeira apenas o a aparece nas duas ou aprender apenas na primeira o esteja apenas na última e assim sucessivamente Olha que bacana funciona sim olha como eu consigo representar uma a existência de uma palavra em um texto com apenas um valor o que seria muito legal se não fosse imaginemos todas as palavras vezes todas as palavras possíveis do nosso da nossa língua de várias outras juntas em apenas uma matriz é este problema nós criaremos
uma matriz muito espaço seja muito vazia de vários zeros contendo apenas os valores aonde que essa palavra apareceu não então isso vai criar um problema de dimensão gigantesco que é muito difícil hoje a gente computar a gente fazer qualquer tipo de processamento de linguagem natural então a gente também não pode ser tão granular ao ponto de cada letra e também nem tão espaço a ponto de cada palavra Bora tentar achar o meio termo aí bom e existe né o próprio E aí por intermédio do nosso chat GPT ele tem um uma forma de tocarinização ou
seja de encontro Decode para fazer operações de forma mais inteligente então eu vou instalar aqui vou dar uma demonstração E olha que interessante quando eu dou o importe no meu Tik Tok e digo para ele que eu vou usar os tokens da gpt2 Ou seja já é um modelo pré treinado que tem lá toda a tabela de tokens eu quero fazer um encode da mesma frase que eu tinha antes lá do meu iclouding primitivo para esse atual aqui como é que fica se eu der um encode aqui reparem uma diferença bem interessante se a gente
comparar com o nosso bem arcaico bem pequenininho a gente vai ver que ele tem muito menos dados e a mesma informação isso é vital para que a gente possa ter mais poder de processamento em cima dos dados porque aí a matriz se torna um pouco mais enxuta e detalhe né galera a informação é a mesma e aí antes de chegar nesse detalhe que eu vou explicar mais para frente eu vou mostrar agora para vocês Qual é o nosso Case tá eu falei no meu primeiro vídeo que a gente ia fazer um GPT do zero e
não é um GPT do zero mas eu vou ensinar algo que é igualmente e talvez até mais legal porque é um pouco mais da base na minha visão é um pouco mais interessante Então dos modelos que nós temos que são baseados em Transformers e que são vários a gente destaca dois o modelo GPT que eu utilizo uma máscara causal e o modelo burt que utiliza uma máscara aleatória onde ele se diferem pessoal enquanto que o GPT precisa de uma massa gigantesca de dados e sempre tenta prever a última posição de um vetor da esquerda para
a direita como a gente já o Burst ele mascara as palavras de forma aleatória tanto da esquerda para direita quanto da direita para esquerda por isso que o nome dele é Transformer de encode bidirecional diferente da GPT ou seja ele tenta fazer a interpretação de padrões de forma bidirecional reparem que aqui no exemplo ele tá tentando prever ao mesmo tempo as palavras a person Marie small mascarando isso de uma certa forma Beleza então aqui eu vou mostrar a diferença em código assim bem simples de como funcionaria a tentativa da GPT de prever o caractere e
a tentativa do burt de prever os caracteres eu vou usar o nosso encode bem primitivo tá galera e aí reparem que este Vamos aprender Transformers ficou com um encode de letra por letra de 27 posições se a GPT fosse tentar construir um modelo em cima deste cara reparem esse código eu vou interar essa lista de 0 até o tamanho menos um E aí o meu vetor para que eu possa fazer essa identificação de padrões seria até o caractere que eu gostaria de prever enquanto que a variável que eu quero prever ela é sempre a posição
mais à frente Isso significa que quando os meus dados forem E aí a gente começa pelo primeiro elemento quando ele for 16 o alvo vai ser 9 da onde ele tirou isso vamos botar aqui o texto que vai ficar mais claro colocar aqui em frente que fica melhor reparem que quando ele está tentando prever Deixa eu só fazer um ajuste aqui rapidinho para que ele funcione de uma forma correta né Beleza quando ele tem o 16 Ele vai tentar prever o dois quando ele tem o 16 o 2 Ele vai tentar prever o 9 quando
ele tem 16 o 2 e 9 Ele vai tentar prever o 11 reparem a forma com que ele sempre mantém da esquerda para a direita tentando prever o próximo caractere e isso gera a mesma quantidade de interações que o tamanho da lista viu galera já vai mascarar um pedaço dessa sentença desse vetor e obrigar o modelo a tentar prever Qual é o token que vem naquela posição exatamente para isso ele utiliza o modelo de aleatoriedade aonde ele vai tentar colocar a máscara em alguma posição aleatória do meu vetor de tokens beleza aqui pessoal texto sempre
será o mesmo o que ele vai mudar é simplesmente a ordem da do mascaramento para ele gerar aleatoriamente onde irão as máscaras tô criando um índice aleatório de 0 até o tamanho menos um dessa lista e eu estou atualizando aquela posição com um caractere chamado mesc que é muito importante para ele aonde ele vai esconder ali Qual é o token e obrigar o modelo a aprender qual seria o token adequado para aquele contexto Então se a gente fosse treinar um modelo baseado em Percy quando o texto original fosse imputado para o modelo ele ia colocar
uma máscara aleatória em alguma posição repare que aqui a gente rodou n vezes e ele sempre colocou em lugares diferentes Então vai obrigá-lo a entender Qual é o próximo token dado 14 e o dois o qual é o próximo token dado 12 e o cinco ou qual é o próximo toco quem dá do zero 12 Lembrando que ele é bi direcional sei que é um pouco teórico mas é importante porque a gente vai treinar um modelo Bird com todas as suas vantagens tá pessoal E aí vou trazer aqui o nosso paralelo da implementação inicial da
arquitetura do transformer que ele é baseado na parte de encolde e na parte de Decode Nós não precisamos usar os dois e normalmente assim não fazemos por exemplo a GPT ela é baseada na parte de The Code do nosso Transformer enquanto que o butch ele utiliza apenas a parte de encolde então enquanto que a GPT galera é a parte do de code do transformer precisa de mais dados faz o sequenciamento da esquerda para direita o Berti ele faz um sequenciamento bidirecional utilizando a parte de em code e ele é muito bom nas tarefas de adivinhar
com texto pergunta e resposta sumarizações entendimento de textos enquanto que a GPT tem uma tarefa bem mais generativa né de criar sentenças ali uma forma um pouco mais espontânea são dois modelos muito legais mas para esse a gente vai fluir do lado do Bird e o burge galera ele derivou outros modelinhos bem interessantes O primeiro é a Roberta vou tratar no feminino o segundo Albert e o terceiro distúbert o que a gente vai estar usando nesse vídeo é a Roberta porque eu acho ele bem interessante para a gente poder ganhar essa performance dos modelos Bird
vou explicar um pouquinho melhor daqui a pouco começando então o nosso projeto a gente já sabe o que é tokenaiser a gente pega o texto bruto e a gente cria vetores composições de tokens Beleza então vamos começar Nesta parte criando um toker de verdade para a gente poder utilizar no nosso projeto tá galera eu digo de verdade porque ele tem que aguentar a quantidade de dados que a gente precisa para treinar um bom transforme ó Isso é muito importante tô colocando o link principal dos mantenedores do projeto Transformers Open sourcing muito legal comunidade Face e
a gente tá instalando as bibliotecas padrões dos Transformers estado da arte que a gente tem aqui no meio de pesquisa de desenvolvimento beleza eu só vou fazer uma ressalva Porque isso pode dar problema a gente tem que direcionar aqui para o totte Tá bom vou colocar aqui Transformers e entre colchetes a gente direciona para o torch isso é importante para a gente também instalar as bibliotecas de otimização que ele precisa para poder rodar a parte de treino e aí a gente vai ver isso na prática lá bom o meio ambiente aqui falando um pouquinho galera
eu tô aqui com um colab e tô com uma GPU Claro importante demais em projetos de Transformers de nlp pesado com cerca de 40 GB para a gente utilizar instalou nosso transforma bom eu vou pegar a minha pontinha de admirador/ apreciador de livros de Filosofia e de um autor especificamente que eu acho bem interessante bem Sagaz que é o nit e se um demônio e dissesse que esta vida da forma como vive e viveu no passado você teria de viver porém inúmeras vezes mais e não haverá nada novo nela a mesma sucessão o antif filósofo
que tinha um jeito peculiar de escrever porforismos que criticava alguns valores da sociedade moderna principalmente baseado no mito da caverna que lançou bases como amor Fati amor aos fatos O Eterno Retorno de você viver a sua vida várias e várias vezes o que faz todo sentido quando a gente treina um transforma ele tá sempre no Eterno Retorno então juntando tudo essa admiração eu peguei um livro chamado Crepúsculo dos Ídolos não é considerado uma das melhores obras de nicho mas eu acho a mais direta ao público é aquela que normalmente a gente começa a ler quando
tá querendo entender esse autor tão legal e eu peguei o livro inteiro que não é tão pequeno mas também não é tão grande a ponto de gerar alguma dificuldade para gente coloquei neste formato de TXT tá aqui hospedado vou liberar o link para vocês e basicamente a gente tá baixando esse livro para nossa máquina local aqui no centro dele vou mostrar aqui para vocês e aqui tá Crepúsculo dos Ídolos beleza esse dado de amostra galera mostrando aqui um pouquinho né a gente tem aqui os aforismos que ele escrevia acerca de vários assuntos é um livro
bem misto não tem um assunto só o que é bem legal quando a gente treina um modelo de transformer depois que a gente baixa eu vou configurar só o diretório aonde estão esses dados de treino para depois apontar para o nosso amigo tokenaizer e aqui a gente já entra nele viu galera vou puxar o código aqui a primeira coisa que a gente tem que fazer é o seguinte qual é o Talk snaser que eu vou utilizar eu vou fazer uma orientação aqui para um que eu acho bem legal e ele é a base para o
Tik token por exemplo da opinião o byte level token pessoal ele faz um trabalho que é o seguinte lembra quando a gente pega uma frase quebra por letras e esse é o nosso code o byte level torquenaise ele vai além ele vai fazer uma recursividade contando as frequências de pares de tokens ou seja repara que nesse exemplo learning learnner e learn tem padrões do l e do E então se a gente contar as ocorrências de l e de juntos a gente vai para quatro de frequência Isso significa que ele vai pegar o l o e
vai somar e vai somar os valores contidos nesses ele vai somar os AIDS e Vai juntar em apenas um token só se isso continuar ou seja se fizer ainda sentido ele vai amargamando ele vai continuando a juntar até que tudo esteja nas suas frequências mínimas ou seja ele otimiza o espaço que a gente gasta no vetor para armazenar o vocabulário nesse caso reparem que juntar o l e o e não é suficiente porque o Helio e mais o a ocorre muitas vezes e aí a gente pode juntar o l o e com a e criar
um token também esse é o processo de otimização que é bem legal no bip e tokenaiser e aqui a gente já pode criar o nosso tokenaiser Vou puxar ele aqui então como funciona basicamente a gente importa a classe é uma ajuda grande galera a gente já ter isso para implementado como eu falei se fosse implementar do zero não caberia nesse vídeo A gente tem que pegar um pouco mais calma tem que fazer uma codificação um pouco maior então é uma ajuda para o entendimento que esses caras já estejam aqui num nível um pouco mais alto
tô fazendo a instanciação e vou treinar o meu tokenazer pessoal em cima do meu corpos do meu conjunto de dados de treino basicamente eu vou passar os arquivos que eu tenho nesse caso eu passo uma lista mas eu só tenho um o tamanho do vocabulário é a quantidade de espaços que eu posso ter para armazenar todas essas possibilidades Lembrando que esses caras são os blocos originais de formação para as minhas sentenças 52 mil é um número razoável para que se tenha um vocabulário moderno aí bem amplo e a frequência mínima de agrupamento dos tokens é
um parâmetro também que pode ser definido mas o legal vai deixar em dois porque assim que ele encontrar pelo menos duas ocorrências ele faz a junção desses caras O que é bem legal os caracteres especiais são importantes começo de linha preenchimento de valores vazios porque nem toda sentença vai atingir o máximo do vetor e aí ele vai colocar para preencher aquelas posições vazias de modo que ele não se confunda com o valor zero ou binário início de frase valor nulo valor de preenchimento final de frase caracter desconhecido e o bom e velho mestre é o
mais importante do Burst que é onde ele vai colocar esse caractere para poder fazer a predição da sentença beleza e agora a gente vai testar por exemplo o nosso tokenaizer que já existe né uma vez que a gente treina ele aqui vamos rodar Opa tem que rodar o pé beleza nesse momento pessoal ele já tem a construção de vocabulários do nosso texto e aqui agora eu posso testar por exemplo hoje é um novo dia ele vai submeter essa frase ao que ele construiu de vocabulário e vai retornar os nossos AIDS e sim hoje é um
novo dia vira esses conjuntos aqui de tokens E se eu quiser estoqueizar esse cara né Se quiser decodificar tá aqui hoje é um novo dia bacana pessoal ó para evitar de perder a gente vai salvar este toquenaiser por meio de um método do próprio tokenaz é chamado save Model eu vou passar o pack que eu defini aqui em cima para poder fazer o salvamento em uma pasta chamada Se eu fizer isso agora ele vai salvar o meu Roll Model que por enquanto só tem o meu tokenaiser e aqui galera tem dois arquivinhos bem legais o
vocabu e o murders o vocab a gente já meio que conhece Ele vai construir o nosso dicionário de caracter e token e ID que ele representará no nosso vetor Ou seja a palavra S que é o início de frase tem a posição zero e aí tem uma coisa interessante né que que é esse G que tá na frente de atrito de forças de repouso trata-se do espaço ele define assim o espaço Porque existe uma diferença grande entre uma palavra que começa uma frase e uma que está no meio da frase e ele faz essa distinção
quando a gente tem o G ou seja o repouso neste token aqui 24 10 apareceu no meio de uma frase e Aqui nós temos 52 mil elementos do vocabulário e o que que é esse murders então esse murders Foi simplesmente os pares que ele utilizou para poder agregar e criar o vocabulário então nós temos esses dois arquivos e já temos aqui o nosso tokenaiser treinado agora tem uma bela de uma diferença se você tem o tijolo e o cimento que é ovo queb e o nerds você tem que agora subir um modelo de tokenazer na
memória para que ele faça a aplicação completa de todo o texto que você colocou para ele nesse caso nosso livro Crepúsculo ducidos para os tokens ou seja ele vai pegar o livro todo e vai tokenizar esse processo não é muito trivial e a gente vai precisar de um códigozinho para isso a primeira coisa que a gente tem que fazer galera é separar a parte de treino da parte de processamento então quando eu treinei o modelo eu consegui pegar todo vocabulário do texto agora eu tenho que pegar esse vocabulário e transformar em tokens beleza para isso
eu venho no subódulo chamado implementations e vou pegar a mesma implementação que eu tenho do bip e do que nós e na parte de processos eu preciso de indicar qual é o modelo que ele vai aplicar porque tem diferença GPT burt E por aí vai eu preciso ir de direcionar a tokenização para o meu modelo bidirecional para que ele possa encontrar os padrões na máscara depois e eu faço isso utilizando o tipo de toquenásia de processos uberch processo feito isso basta que eu faça a instanciação do meu modelo e como é que funciona basicamente eu
estou dizendo para ele usar o volcab e o meu disse que eu já tinha e passando aqui como posso processamento para que ele entenda que o barro invertida S que tem no vocabulário representa ou barra investida S do tokenaizer e assim também com o s Isso é uma forma de eu distinguir a frase que ele já processou de uma frase que ainda está bruta porque ele coloca essa barra s no final dela só que tem um porém nós não vamos colocar o BRT na história nós vamos colocar a Roberta ubert ele foi criado pelo Google
para dar um up no mecanismo de busca dele no sentido de conhecer o que o usuário está digitando tem uma compreensão completa de todas as palavras de todos os contextos que o usuário digita quando ele lançou isso e ao pensou-se O que é muito legal o Facebook pegou esse modelo e fez uma otimização principalmente no processo que atualiza os parâmetros em tempo de treinamento E nisso ele criou a Roberta então a grande diferença entre o Bird e a Roberta é que a Roberta ela tem uma grande facilidade para ser treinada em dados reais em máquinas
por exemplo que a gente não tem muitos recursos porque a grande melhoria dele foi no processo de otimizar a atualização de parâmetros e consequentemente derrubar o tempo de treino e a quantidade de recursos necessários para poder fazer todo esse esse etapa de Treinamento Então por mais legal que o seja ele vai precisar de pouco mais de tempo de recurso do que a Roberta e aqui que a gente volta para nossa origem e vamos trazer aqui a Roberta tokenaiser então a gente não vai utilizar o Bird processo em nem o byte level tokenaiser isso é muito
importante galera então se eu decidir que eu vou utilizar o derivado do burd chamado Roberta eu vou utilizar também um tokenaiser aderente a ele porque senão ele vai confundir o meu Transformer e ele vai começar a prever coisas muito aleatórias bom então eu estou reinstanciando meu tokenais e aqui já aparece a palavra porque eu já tenho vocabulário com os Nerds construídos eu quero que simplesmente ele empute isso não toca naezer que vai ser utilizado para toquenizar o meu corpos o meu texto completo então Aqui nós temos o nosso tokenaiser e nós começamos agora a decisão
de criar o nosso Transformer só voltando aqui eu gosto sempre de lembrar nós estamos do lado do Encoder é um Transformer baseado no encolder que é bidirecional e que é otimizado para máquinas de menor recurso e para menores quantidades de dados a Roberta depois que a gente do organizou a gente vai agora configurar o nosso Transformer A gente não escreve o transforma do zero e Isso daria muito trabalho depois para otimizá-lo a uma determinada tarefa viu pessoal é algo bem árduo e principalmente porque dado que ele não tem grandes otimizações feitos por esses caras como
Facebook Google a gente teria que fazer isso tudo na mão que é impossível para a gente poder treinar numa máquina simples a um custo razoável Então a primeira coisa que eu vou fazer é pegar o modelo que já tá na biblioteca dos Transformers que eu vou configurar um Transformers do tipo Roberta e aí eu vou passar como parâmetro para essa construção para essa instanciação a seguinte configurações eu vou passar o tamanho do vocabulário a quantidade de embeds de vetores que eu vou ter dentro desse modelo attention Red o mecanismo de atenção é aquilo que faz
o Transformer entender os contextos entender Aonde está o assunto principal daquela frase sem que ele precisa de relações de recorrências como por exemplo as lsdm tinham ou as rn's isso dá um ganho gigantesco na performance porque você consegue paralelizar o treino por não existir recorrência e as máscaras de atenção elas alimentam as redes neurais que conseguem entender os padrões que existem no texto sem perder o foco principal daquele texto a gente vai pegar uma matriz que compreende os nossos tokens essa Matriz vai ser quebrada em três que cor e vela vai pegar produto de pontos
desse cara vai normalizar pela raiz da dimensão e vai aplicar com o terceiro fator para poder encontrar aqui quais são as probabilidades dado uma determinada combinação de tokens E aí ele consegue manter uma matriz de foco sem que ele tenha que guardar isso de alguma forma afinal de contas a gente tá falando aqui de terabytes de dados para se treinar se a gente tivesse que guardar anteriormente todo o contexto que já existia a gente não conseguiria escalar que era o desafio anterior que a gente tinha nlp os Transformers vieram com uma visão muito legal nesse
ponto outra coisa interessante é a quantidade de layers ocultos que nós teremos na DIP principal dele porque afinal de contas a gente está trabalhando no modelo de redes neurais e basicamente ele vai garantir aprendizagem correta de padrões ali que acontecem nos dados de entrada e no caso do BRT da Roberta Ele vai tentar reconstruir ali aonde as máscaras existirem porque são os tokens que ele precisa de aprender a completar beleza vamos em frente aqui galera temos uma mão na roda do hugging Face Roberta for mesquity all and O que que significa isso significa que eu
estou pegando arquitetura Berti otimizado que é Roberta e eu estou falando que a minha tarefa que eu preciso de treinar esta rede com toda essa configuração via modelo de linguagem well m no final é língua de modelo eu estou modelando a linguagem ou seja estou aprendendo os padrões que existem na linguagem de entrada por meio de algoritmos de máscaramento Mas claro que é sempre importante aprender o que que tá debaixo do capô aqui porque a gente consegue tunar a gente consegue ter uma interpretação melhor vou instanciar o meu modelo chamado Model utilizando simplesmente as configurações
que eu defini aqui em cima de voguens para o Roberta formsket é que é a minha tarefa de transforma a gente escuta muito por aí né a chat GT3 tem cento e poucos bilhões de parâmetros a chat gpt4 tem trilhões de parâmetro 100 trilhões de parâmetros quando a gente tem um modelo de regeneral profunda dada a quantidade de pesos que ela possui para poder criar essas noções de padrões entre os tokens a gente tem essa definição de parâmetros quantos parâmetros tem o nosso modelo né porque afinal de contas a gente já instanciou ele ainda cuidado
ele não consegue prever nada porque ele tá aí vazio mas a gente já consegue saber quantos parâmetros ele constrói dada essa arquitetura que a gente definiu para ele se a gente puxar do modelo o não parâmetros 83 milhões 500 e 2.880 então são 83 milhões de parâmetros o que perto de uma gpt34 não é nada mas se a gente lembrar que nos slides em algumas aulas de ar a gente vê que uma rede neural tem 30 40 100 parâmetros e quase nem cabe no slide 83 milhões de parâmetros não cabem numa tela de LCD para
a gente poder ver os caras funcionando então é coisa para caramba viu não é pouquinha coisa agora o passo a passo é bem interessante galera porque a gente tem que pegar o nosso texto imputar ele nesse transforma que tá vazio esperando louco para aprender Treinar esse modelo para ele reconhecer essas máscaras e tentar prever acompanhar as perdas que nós estamos tendo a nível de treino e em seguida testá-lo só que nós temos um desafio porque o nosso texto original é um TXT como que a gente então encaixa um texto bruto que precisa de uma certa
estrutura para encaixar nessa arquitetura de Transformers sem que a gente tenha grandes dificuldades de implementar aqui a parte de pegar pedaços desses dados casais exatamente com a quantidade de position que ele precisa para ajudar a gente de novo pessoal dos Transformers tem uma forma bem simples de construirmos um bem da sete essa função galera Line bayline Tex data 7 vai simplesmente pegar os seus dados de treino bruto com o tokenaiser que você definiu e aplicar uma tokenização completa e criar um data 7 para alimentar o seu modelo de transformer então tem uma complexidade envolvida aqui
porque você teria que pegar cada bloco ou seja cada sequência tokenizar e transformar isso no formato palatável para o seu modelo de transforma Beleza então eu vou rodar aqui o tamanho de bloco é 128 Ou seja é a quantidade deste vetor que a gente quer que transforme e uma vez que nós temos esse cara a gente pode fazer alguns testes o meu data 7 se eu pegar dois exemplos dele a gente percebe que são as linhas do livro Só que de forma tokenizada a gente pode fazer um bate então para saber se de fato esses
númerozinhos aqui correspondem ao nosso livro vou pegar um exemplo aqui que é bem interessante a sétima posição vocês vão entender porque decodificando os inputs Ou seja a gente vai voltar a sétima posição do meu exemplo de uma visão de Token para palavras conforme a gente fez lá no início desse vídeo e olha só que legal na escola bélica da vida o que não me faz morrer me torna mais forte é a frase de Nietzsche escrita nesse livro que eu acho que todo mundo conhece e veio exatamente desse livro Crepúsculo dos Ídolos o que eu acho
muito interessante e reparem que foi um processo de transformação vinda do tokenásia porque ele colocou o início e o final da frase s/a invertida S beleza galera a gente tem linha por linha um data 7 torquenizado Prontinho para ser consumido Já podemos mandar brasa aqui e colocar para ver se ele faz alguma coisa ainda não porque a gente tem que fazer primeiro um deita colheita mesmo pegando esse Beta 7 redondinho aqui a gente tem que controlar Quais são as posições que ele vai usar e como que ele vai adicionar a máscara antes da etapa de
treino para que ele Tente fazer a predição então toda essa complexidade de você ter que escrever uma rotina Bad que vai injetando incrementalmente dados variados para o seu modelo de transformer funcionar a gente simplesmente vai usar um deita colheita que vai controlar isso para gente e que é muito mais fácil de manipular então uma etapa prévia a gente proceder ao treino é criar o nosso deita colheita para língua de mobile que é o que a gente está fazendo e isso Vai facilitar nossa vida para caramba reparem que eu simplesmente vou passar Qual é o tokenazer
que eu vou utilizar se vai ter o mascaramento dessa modelagem ou seja vai e qual é a probabilidade dele mascará a minha sentença de 0 a 100% 0% ele não vai mascarar nada o dado vai entrar e a máquina vai simplesmente consumir esses padrões ali quando ele tem uma mas que ele vai tentar colocar uma palavra mais adequada se ele tem essa capacidade ou não é normal a gente colocar um pouco mais baixo quando a gente tem menos dados porque o mascaramento oculta sim do transformer o que ele poderia aprender Então tem que usar com
parcimônia principalmente para dados pequenos a primeira coisa que a gente tem que fazer antes de instanciar o modelo a ser treinado é configurar um trailer pela arquitetura Raging Face Transformers bom eu tô puxando aqui o trailer que é a classe principal e os argumentos que eu vou utilizar para treiná-lo então repara que a gente também cria um objeto com vários parâmetros para serem colocados no nosso trailer os parâmetros galera os principais são saída aonde que eu vou salvar esse modelo se vai se inscrever quantidade de épocas necessárias Ou seja a quantidade de vezes que ele
vai passar pelos dados de treino Qual é o tamanho do Bet que eu vou passar por device por GPU isso é muito importante porque se você colocar pouco você vai subutilizar o seu modelo você colocar muito você vai sobrecarregar e vai ter gastos ali desnecessários a quantidade de estepes que ele vai fazer para salvar esse modelo tá é sempre importante salvar o modelo galera porque a gente utiliza ele dá do disco depois a gente não precisa mais rodar etapa de Treinamento que vocês vão ver que demora um pouquinho não é tão trivial e aqui basicamente
eu tô falando para ele Focar apenas nas perdas de predição removendo ele cálculos desnecessários para o nosso objetivo que pode tornar o treino um pouco mais eficiente por exemplo ele não precisa de guardar os gradientes Então vou estanciar esse trainer argumentos e logo em seguida eu vou instalanciar o meu trainer que é a classe principal responsável por fazer todo o treino do meu Modelo E para isso basta eu instanciar da classe principal um objeto que vai ter como parâmetro o modelo que eu vou utilizar que vocês vão lembrar que a Roberta como argumentos de Treinamento
esse cara daqui de cima qual é o data coletor que eu vou utilizar que é o meu já otimizado para modelagem de linguagem e o meu deita 7 que eu vou utilizar Claro para poder fazer essa ingestão gradativa ali durante as épocas reparem que ele tá distanciando aqui o modelo de trailer beleza galera agora é a hora do vamos ver enquanto ele roda usando aqui a minha GPU que não tá das melhores repara galera que aqui a gente tem um tempo estimado de 26 minutos para esse treinamento e reparem que de cara logo nas primeiras
épocas ele já tá consumindo 10 Gigas da memória eu vou dar um Stop nesse cara e vou trocar a minha GPU para uma mais eficiente e aqui eu vou ter que reiniciar o meu ambiente de execução basta que eu venho aqui e escolha um modelo de GPU muito mais otimizado pessoal eu preciso de executar as minhas células então aqui eu vou começar do zero rodando todo mundo de novo Beleza vou proceder aqui embaixo para adiantar o vídeo e aqui já estamos na fase de train com uma GPU um pouco melhor o que vai pessoal diminuir
muito tempo para a gente poder rodar esse esse treinamento aqui reparem que já subiu para 40 gigas vamos ver para quanto que caiu o tempo aí de treino 19 minutos 20 minutos o que tá ótimo para a gente né Afinal de contas pessoal 1.200 épocas não são poucas épocas a gente percebe que que ele tá ainda na 16 né 17 e já consumiu aqui 12 gigas de Ram o que que tá acontecendo nesse ponto ele tá pegando conjuntos de tokens né Para a gente aqui seria a palavra né então Obrigado por me convidar para sua
festa ele vai mascarar sucessivamente essa frase ou seja Obrigado por me convidar para sua e vai tentar prever Qual é a palavra que ele usaria aqui no caso dele o token óbvio né imagina que ele tenha feito obrigado por me convidar para sua comemoração esse caso ele errou E aí ele computaria uma perda e essa perda ele atualizaria via Gradiente descendente parâmetro da rede neural tudo isso para ele encontrar a palavra mais adequada dado o contexto que ele tem até o momento ele vai tentando adivinhar aqui as palavras até chegar no momento que ele conhece
a frase inteira e isso permite com que ele atualize os parâmetros beleza ele terminou a primeira época composta de 500 steps e a perda em dados de treino foi de 6 O que é horrível é um modelo bem bem devagar bem impossível de ser utilizado tá a gente espera aí uma queda abrupta a partir da metade viu galera e o ideal dessa perda que tenda a zero se a gente tiver entre um e dois já tá bacana já tem um poder de predição maior vou voltar aqui quando ele terminar para a gente continuar o nosso
projetinho eu vou lá tomar um café vou lá fazer um bolo vou lá fazer um pãozinho vou lá fazer um Miojo daqui a pouco a gente volta terminou galera e agora sim a gente vai testar esse modelo 1200 épocas depois a nossa perda em dados de treino saiu de seis e foi quase para zero tá 0.74 no geral 2.79 tá excelente esse modelo Vamos fazer um teste Então por agora a gente vai fazer os testes com entradas mascaradas e vamos pedir para ele o que ele acha vamos lá a biblioteca Transformers também tem um modo
chamado pipeline que facilita muito a gente fazer o Fit e o transforme do modelo tá isso é bem legal porque vai evitar a gente tem que fazer uma codificação muito grande e perder o propósito do vídeo que é mostrar uma coisa bem funcional aqui do zero Beleza então esse pipeline aqui você já tá passando para ele a tarefa que você quer do transformer treinado eu quero que você faça um preenchimento da mesc do dado o culto que você não consegue ver e que você vai ter que mostrar Com base no que você aprendeu viu galera
Então nesse ponto a gente tem o nosso modelo e o nosso tokenzer que a gente vai imputar é importante lembrar galera que nesse momento a gente não tem um modelo salvo a gente treinou Mas a gente não salvou isso é feito pelo save Model que o nosso Training tem então antes da gente fazer essa etapa vamos persistir isso no disco que é melhor para garantir né que a gente não perca esse modelo beleza nesse ponto a gente vem aqui nessa pastinha que sempre deita tem um modelo aqui treinado em pytote não é muito pequeno esse
arquivo ele é gigante tá infelizmente ele passa aí dos dívidas e a gente não consegue ter uma facilidade de salvar esse cara mas ele está que salvo e se eu quiser fazer uma predição basta que eu aponte para ele igual estou fazendo aqui e aí eu vou passar o meu modelo para ele e o meu tokenzer que está aqui bem importante para a gente poder fazer essa recuperação do que é texto para Token vice-versa Beleza estou definindo uma tarefa aqui do tipo filme digo que o amor é e a gente vai pedir para ele completar
e aqui galera a gente obtém um top 5 dos tokens mais potenciais a preencher Essa Máscara alguns obviamente não fazem sentido porque precisaria de uma etapa muito mais completa de Fairy tanning remodelagens mas para o propósito inicial a gente já tá com alguns ganhos por exemplo digo que o amor é vontade digo que o amor é moral esses dois para quem conhece nit sabe que tá no caminho certo porque a vontade de potência que é uma parte importante de nit diz que o amor é a vontade de potência é a vontade de adquirir cada vez
mais energia cada vez mais absorver para si aquilo que ele chama de potência então sim tá bem adequado e o amor é moral o que faz sim sentido porém Depende muito do contexto que a gente vai aplicando vou pegar outro exemplo aqui ou mask dá moral basear na lógica dos fracos o erro da moral basear na lógica dos Fracos sim por incrível que pareça o erro da moral segundo nit é basear-se na lógica dos fracos e ele define o que seria fracos que seria uma visão de massa uma Filosofia de massa enfim aí já estão
misturando filosofia com tudo aqui galera mas é legal porque a gente já percebe que ele está no caminho certo galera em um outro contexto tem uma coisa interessante que niet acaba personificando alguns sentimentos então razão ódio amor ele acaba colocando isso numa linguagem um pouco mais mundana como poeta Cavaleiro dama Reis rainhas e essa personificação interessante quando a gente quer por exemplo saber o que seria segundo ele uma dama e um oponente a gente pode tentar extrair isso por meio do mesc então aqui não faz sentido de utilizar é uma dama e um oponente digo-lhes
a virtude é uma dama e um oponente incrível porque realmente a virtude que é um conjunto de características inerentes ao ser humano enfim que não mudam e te entende que é ao mesmo tempo algo que encanta algo que é valorizado mas ao mesmo tempo também é um inimigo que pode jogar para vala né e achei bem interessante sim que ele fez essa correta assimilação aqui galera é isso espero que vocês tenham gostado mesmo tentei fazer aqui enxuto para a gente entender o geral primeiro e agora ele se aprofundando eu vou ainda gravar mais um vídeo
usando a base dos Transformers um pouco da teoria e depois como eles funcionam para a gente poder juntar porque o estado da arte hoje é o Transformer mas ao mesmo tempo a gente não deve esquecer do nlp tradicional baseado em Big gramas que podem ajudar a gente a entender como a predição é calculada porque no fim das contas simplesmente uma matriz de probabilidades dado um token em outro então dado essa sequência de tocons qual a probabilidade desse próximo ocorrer x E aí eu pego que tem maior probabilidade isso tem um caminho por várias funções de
probabilidade softmax no caso do transformer E por aí vai mas que infelizmente não Coube nesse vídeo mas que com certeza o conhecimento vai passar pela base dos Transformers pela construção de um modelo neural e pelo entendimento principalmente do modelo de atenção que ele tem Galera Era isso espero que vocês tenham gostado e até a próxima