O Gemma é uma família de modelos abertos criados por meio da mesma pesquisa e tecnologia usadas para criar os modelos Gemini. Atualmente, a família inclui o Gemma, o CodeGemma, o PaliGemma e o RecurrentGemma. Coletivamente, os modelos são capazes de executar uma grande variedade de tarefas, inclusive geração de texto, preenchimento e geração de códigos e muitas tarefas de visão-linguagem. Além disso, eles podem ser executados em vários dispositivos, seja na borda, no computador ou na nuvem. Você pode ir ainda mais longe e ajustar os modelos Gemma a necessidades específicas.
O Gemma foi criado para a comunidade aberta de desenvolvedores e pesquisadores que promovem a inovação em IA. Você pode saber mais sobre o Gemma e acessar o guia de início rápido em ai.google.dev/gemma.
Nesta postagem do blog, vamos explorar três ideias divertidas de projeto e como usar os modelos Gemma para colocá-las em prática:
O alfabeto coreano, ou Hangul, passou por muitas mudanças ao longo do tempo. Como resultado disso, várias letras já não são mais usadas no coreano moderno. Essas letras obsoletas incluem:
2. ㆆ (Yeorin-hieut): pronunciada como um 'leve h", semelhante a uma versão mais suave do "h" em inglês.
3. ㅿ (Bansiot): representa o som do "z".
4. ㆁ (Yet-ieung): um som nasal velar comparável a "ng" na palavra "domingo".
Para falantes nativos do coreano, ler materiais da literatura mais antiga acaba sendo um desafio devido ao uso de letras que agora estão obsoletas. O Hangul antigo não usava espaços entre as palavras, complicando ainda mais a leitura. Em comparação, o Hangul moderno emprega espaços, o que é consistente com a maioria dos sistemas alfabéticos.
Com os recursos do Gemma, é possível criar um tradutor que auxilia na compreensão e na superação da barreira entre o coreano contemporâneo e o arcaico. O SentencePiece serve como base para o tokenizador do Gemma. Em contraste com os tokenizadores convencionais, que dependem muito de diretrizes específicas de idioma ou de dicionários predefinidos, o SentencePiece é treinado diretamente em dados de texto bruto. Assim, ele se torna independente de qualquer idioma específico e adaptável a várias formas de dados de texto.
Software
Para simplificar a tarefa, adotaremos a seguinte estrutura para o ajuste do modelo. O modelo gerará texto em coreano contemporâneo com base na entrada do usuário usando o Hangul antigo.
Os modelos ajustados por instrução (IT, na sigla em inglês) são treinados com um formatador específico. Observe que os tokens de controle são tokenizados em um único token da seguinte maneira:
Para o treinamento do modelo, usaremos o romance coreano da era da Dinastia Joseon "Hong Gildong jeon".
Para avaliar a qualidade da saída do modelo, usaremos textos externos aos conjuntos de dados de treinamento, especificamente o clássico romance coreano "Suk Yeong Nang Ja jeon", de autoria desconhecida.
O modelo não é capaz de traduzir o idioma Hangul antigo.
Após o ajuste, as respostas seguem a instrução e é gerado o texto em coreano contemporâneo com base no texto em Hangul antigo.
Para fins de referência, consulte o seguinte texto, que foi traduzido por um ser humano:
"금두꺼비가 품에 드는 게 보였으니 얼마 안 있어 자식을 낳을 것입니다.
하였다. 과연 그 달부터 잉태하여 십삭이 차니"
Observação: o texto em coreano significa "Eu vi um sapo dourado nos braços dela, portanto ela não tardará em dar à luz uma criança. De fato, ela havia concebido naquele mês e estava com dez meses.
E aqui está outra saída.
Esta é a tradução feita por um ser humano:
"이 때는 사월 초파일이었다. 이날 밤에 오색구름이 집을 두르고 향내 진동하며 선녀 한 쌍이 촉을 들고 들어와 김생더러 말하기를,"
Observação: o texto em coreano significa "Era o dia 8 de abril. Naquela noite, com nuvens de cinco cores ao redor da casa e o aroma de incenso pairando no ar, duas fadas entraram com velas nas mãos e disseram a Kim Saeng,"
Embora a tradução não seja perfeita, ela fornece um rascunho inicial satisfatório. Os resultados são notáveis, considerando-se que os conjuntos de dados são limitados a um único livro. A melhoria da diversidade de fontes de dados provavelmente elevará a qualidade da tradução.
Depois de ajustar o modelo, você pode publicá-lo no Kaggle e no Hugging Face.
Veja um exemplo abaixo.
# Save the finetuned model
gemma.save_to_preset("./old-korean-translator")
# Upload the model variant on Kaggle
kaggle_uri = "kaggle://my_kaggle_username/gemma-ko/keras/old-korean-translator"
keras_nlp.upload_preset(kaggle_uri, "./old-korean-translator")
Para realizar tarefas semelhantes, você pode replicar a mesma estrutura. Veja alguns exemplos abaixo:
Vários objetos e conceitos do cotidiano têm nomes diferentes dependendo da região. Por exemplo, em inglês americano, as pessoas usam termos como "elevator", "truck", "cookie" e "french fries" (elevador, caminhão, biscoito e batatas fritas, respectivamente, em português), ao passo que, em inglês britânico, as palavras equivalentes são: "lift", "lorry", "biscuit" e "chips".
Além das diferenças de vocabulário, também existem variações ortográficas. Por exemplo, em inglês americano, as palavras que terminam em "-or" geralmente são escritas com "-our" em inglês britânico. Entre os exemplos estão: "color" (inglês americano) e "colour" (inglês britânico) ou "humor" (inglês americano) e "humour" (inglês britânico).
Outra variação ortográfica é a distinção entre "-ize" e "-ise". Em inglês americano, palavras como "organize" e "realize" são comumente escritas com "z", ao passo que, em inglês britânico, a grafia preferencial é "organise" e "realise", com "s".
Com a ajuda de ferramentas de IA como o Gemma, é possível criar uma transferência de estilo de um inglês para o outro, possibilitando transições perfeitas entre os estilos de escrita em inglês americano e britânico.
Na região de Kansai, no Japão, há um grupo distinto de dialetos conhecido como Kansai-ben. Em comparação com o idioma japonês padrão, os falantes nativos percebem o Kansai-ben como sendo mais melódico e brusco em pronúncia e entonação.
Com os recursos do Gemma, é possível criar um tradutor de dialetos preparando um volume substancial de conjuntos de dados de Kansai-ben.
Com o Gemma como seu fiel aliado, você pode embarcar em uma jornada para criar um jogo cativante. Tudo começa com uma simples apresentação de uma frase que serve como base para o conceito do jogo. O Gemma guiará você com proficiência na elaboração do conceito do jogo, na criação de personagens principais detalhados e na redação de uma história principal envolvente que mergulhará os jogadores no mundo do jogo.
Software
Comece escrevendo um conceito central, uma apresentação de uma frase do jogo, como no exemplo abaixo:
O Gemma pode adicionar mais detalhes com base nessa apresentação.
Entrada: "Elabore este jogo usando o conceito central fornecido abaixo.\n{pitch}"
Exemplo de saída:
Entrada: "Elaborar personagens principais"
Exemplo de saída:
Entrada: "Elaborar personagens vilões"
Exemplo de saída:
Entrada: "Escreva a história principal deste jogo com uma introdução, um desenvolvimento, uma reviravolta e uma conclusão".
Exemplo de saída:
Com a alteração do prompt, você pode obter um complemento semelhante para quase qualquer tipo de conteúdo criativo.
Apresentação: "Uma nova escova de dentes a vapor"
Entrada: "Gere uma frase de marketing para o novo produto abaixo.\n{pitch}"
Exemplo de saída:
Apresentação: "Universo e estrelas cadentes"
Entrada: "Gere uma ideia para floristas inspirada no conceito abaixo, em conjunto com sugestões de flores apropriadas.\n{pitch}"
Exemplo de saída:
Apresentação: "Kraken ciberpunk"
Entrada: "Gere uma receita culinária com o conceito abaixo.\n{pitch}"
Exemplo de saída:
O método tradicional de enviar cartas para o Papai Noel pode ser limitado e impessoal. As crianças geralmente precisam esperar semanas ou até meses por uma resposta, e suas cartas podem não ser tão detalhadas ou interativas quanto elas gostariam.
Neste projeto, usaremos o Gemma, em execução em um Raspberry Pi, para redigir cartas mágicas do Papai Noel usando a potência de um modelo de linguagem grande.
Hardware
Software
geração de texto
Você pode escrever seu próprio aplicativo em C++ com o libgemma.
Use o prompt abaixo para instruir o modelo
Antes de criar, modifique o MODEL_PATH
definido no código.
$ g++ santa.cc -I . -I build/_deps/highway-src -I build/_deps/sentencepiece-src build/libgemma.a build/_deps/highway-build/libhwy.a build/_deps/sentencepiece-build/src/libsentencepiece.so -lstdc++ -l
Lançar
$ LD_LIBRARY_PATH=./build/_deps/sentencepiece-build/src ./a.out
Ele lerá o texto do arquivo letter.txt
e gerará uma carta do Papai Noel.
OBSERVAÇÃO: a geração de texto no Raspberry Pi pode demorar um pouco.
E aqui está o resultado final:
$ ./main -m models/gemma-2b-it.gguf --repeat-penalty 1.0 -p “You are Santa Claus, write a letter back from this kid.\n<start_of_turn>user\nPLACE_THE_CONTEXT_OF_LETTER_HERE<end_of_turn>\n<start_of_turn>model\n”
O Gemma oferece possibilidades ilimitadas. Esperamos que essas sugestões inspirem você. Mal podemos esperar para ver suas criações ganharem vida.
Recomendamos que você participe do servidor Discord da comunidade de desenvolvedores do Google. Lá, você pode compartilhar seus projetos e se conectar a outras pessoas com ideias parecidas com as suas.
Comece a experimentar!