O Gemma é uma família de modelos abertos leves e de vanguarda criados a partir de investigação e tecnologia usadas para criar os modelos Gemini. Pode usar modelos Gemma nos seus pipelines de inferência do Apache Beam. O termo peso aberto significa que os parâmetros ou os pesos pré-treinados de um modelo são divulgados. Não são fornecidos detalhes como o conjunto de dados original, a arquitetura do modelo e o código de preparação.
Para ver uma lista dos modelos disponíveis e os detalhes sobre cada modelo, consulte a vista geral dos modelos Gemma.
Para saber como transferir e usar modelos, consulte o artigo Comece a usar o Gemma com o KerasNLP.
Para transferir um modelo, consulte os modelos Gemma.
Exemplos de utilização
Pode usar os modelos Gemma com o Dataflow para análise de sentimentos. Com o Dataflow e os modelos Gemma, pode processar eventos, como críticas de clientes, à medida que chegam. Execute as críticas através do modelo para as analisar e, em seguida, gerar recomendações. Ao combinar o Gemma com o Apache Beam, pode concluir este fluxo de trabalho sem problemas.
Apoio técnico e limitações
Os modelos abertos Gemma são suportados com o Apache Beam e o Dataflow com os seguintes requisitos:
- Disponível para pipelines de processamento em lote e streaming que usam as versões 2.46.0 e posteriores do SDK Python do Apache Beam.
- As tarefas do Dataflow têm de usar o Runner v2.
- As tarefas do Dataflow têm de usar GPUs. Para ver uma lista dos tipos de GPU suportados com o Dataflow, consulte a secção Disponibilidade. Os tipos de GPU T4 e L4 são recomendados.
- O modelo tem de ser transferido e guardado no formato de ficheiro
.keras. - O gestor de modelos do TensorFlow é recomendado, mas não obrigatório.
Pré-requisitos
- Aceda aos modelos Gemma através do Kaggle.
- Preencha o formulário de consentimento e aceite os Termos de Utilização.
- Transfira o modelo Gemma. Guarde-o no formato de ficheiro
.kerasnuma localização à qual a sua tarefa do Dataflow possa aceder, como um contentor do Cloud Storage. Quando especifica um valor para a variável de caminho do modelo, use o caminho para esta localização de armazenamento. - Para executar a sua tarefa no Dataflow, crie uma imagem de contentor personalizada. Este passo permite executar o pipeline com GPUs no serviço Dataflow.
- Para ver um fluxo de trabalho completo que inclui a criação de uma imagem do Docker, consulte o artigo RunInference no streaming do Dataflow com o Gemma no GitHub.
- Para mais informações sobre a criação da imagem do Docker, consulte o artigo Crie uma imagem de contentor personalizada em "Execute um pipeline com GPUs".
- Para enviar o contentor para o Artifact Registry através do Docker, consulte a secção Crie e envie a imagem em "Crie imagens de contentores personalizadas para o Dataflow".
Use o Gemma no seu pipeline
Para usar um modelo Gemma no seu pipeline do Apache Beam, siga estes passos.
No código do Apache Beam, depois de importar as dependências do pipeline, inclua um caminho para o modelo guardado:
model_path = "MODEL_PATH"Substitua
MODEL_PATHpelo caminho onde guardou o modelo transferido. Por exemplo, se guardar o modelo num contentor do Cloud Storage, o caminho tem o formatogs://STORAGE_PATH/FILENAME.keras.A implementação do Keras dos modelos Gemma tem um método
generate()que gera texto com base num comando. Para transmitir elementos ao métodogenerate(), use uma função de inferência personalizada.def gemma_inference_function(model, batch, inference_args, model_id): vectorized_batch = np.stack(batch, axis=0) # The only inference_arg expected here is a max_length parameter to # determine how many words are included in the output. predictions = model.generate(vectorized_batch, **inference_args) return utils._convert_to_result(batch, predictions, model_id)Execute o pipeline, especificando o caminho para o modelo preparado. Este exemplo usa um controlador de modelo do TensorFlow.
class FormatOutput(beam.DoFn): def process(self, element, *args, **kwargs): yield "Input: {input}, Output: {output}".format(input=element.example, output=element.inference) # Instantiate a NumPy array of string prompts for the model. examples = np.array(["Tell me the sentiment of the phrase 'I like pizza': "]) # Specify the model handler, providing a path and the custom inference function. model_handler = TFModelHandlerNumpy(model_path, inference_fn=gemma_inference_function) with beam.Pipeline() as p: _ = (p | beam.Create(examples) # Create a PCollection of the prompts. | RunInference(model_handler, inference_args={'max_length': 32}) # Send the prompts to the model and get responses. | beam.ParDo(FormatOutput()) # Format the output. | beam.Map(print) # Print the formatted output. )
O que se segue?
- Crie um pipeline de streaming do Dataflow que use o RunInference e o Gemma.
- Execute a inferência com um modelo aberto Gemma no Google Colab (requer o Colab Enterprise).
- Execute um pipeline com GPUs.
- Ajuste o seu modelo.