Gemma è una famiglia di modelli aperti leggeri e all'avanguardia creati sulla base della ricerca e della tecnologia utilizzate per creare i modelli Gemini. Puoi utilizzare i modelli Gemma nelle pipeline di inferenza Apache Beam. Il termine open weight indica che i parametri o i pesi preaddestrati di un modello sono rilasciati. Non vengono forniti dettagli come il set di dati originale, l'architettura del modello e il codice di addestramento.
Per un elenco dei modelli disponibili e i dettagli su ciascun modello, consulta la panoramica dei modelli Gemma.
Per scoprire come scaricare e utilizzare i modelli, consulta la pagina Guida introduttiva a Gemma con KerasNLP.
Per scaricare un modello, vedi Modelli Gemma.
Casi d'uso
Puoi utilizzare i modelli Gemma con Dataflow per l'analisi del sentiment. Con Dataflow e i modelli Gemma, puoi elaborare gli eventi, ad esempio le recensioni dei clienti, man mano che arrivano. Esegui le recensioni tramite il modello per analizzarle, quindi genera consigli. Combinando Gemma con Apache Beam, puoi completare questo flusso di lavoro senza problemi.
Supporto e limitazioni
I modelli open Gemma sono supportati con Apache Beam e Dataflow con i seguenti requisiti:
- Disponibile per le pipeline batch e di streaming che utilizzano le versioni 2.46.0 e successive dell'SDK Apache Beam Python.
- I job Dataflow devono utilizzare Runner v2.
- I job Dataflow devono utilizzare le GPU. Per un elenco dei tipi di GPU supportati con Dataflow, consulta Disponibilità. È consigliato il tipo di GPU L4 (G2).
- Il modello deve essere scaricato e salvato nel formato di file
.keras. - Il gestore di modelli TensorFlow è consigliato ma non obbligatorio.
Prerequisiti
- Accedi ai modelli Gemma tramite Kaggle.
- Compila il modulo di consenso e accetta i termini e le condizioni.
- Scarica il modello Gemma. Salvalo nel formato di file
.kerasin una posizione a cui il tuo job Dataflow può accedere, ad esempio un bucket Cloud Storage. Quando specifichi un valore per la variabile del percorso del modello, utilizza il percorso di questa posizione di archiviazione. - Per eseguire il job su Dataflow, crea un'immagine container personalizzata. Questo passaggio consente di eseguire la pipeline con le GPU sul
servizio Dataflow.
- Per visualizzare un flusso di lavoro completo che include la creazione di un'immagine Docker, consulta RunInference su Dataflow in streaming con Gemma in GitHub.
- Per ulteriori informazioni sulla creazione dell'immagine Docker, consulta Crea un'immagine container personalizzata in "Esegui una pipeline con GPU".
- Per eseguire il push del container in Artifact Registry utilizzando Docker, consulta la sezione Crea ed esegui il push dell'immagine in "Crea immagini container personalizzate per Dataflow".
Utilizzare Gemma nella pipeline
Per utilizzare un modello Gemma nella pipeline Apache Beam, segui questi passaggi.
Nel codice Apache Beam, dopo aver importato le dipendenze della pipeline, includi un percorso al modello salvato:
model_path = "MODEL_PATH"Sostituisci
MODEL_PATHcon il percorso in cui hai salvato il modello scaricato. Ad esempio, se salvi il modello in un bucket Cloud Storage, il percorso ha il formatogs://STORAGE_PATH/FILENAME.keras.L'implementazione Keras dei modelli Gemma ha un metodo
generate()che genera testo in base a un prompt. Per passare elementi al metodogenerate(), utilizza una funzione di inferenza personalizzata.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)Esegui la pipeline, specificando il percorso del modello addestrato. Questo esempio utilizza un gestore di modelli 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. )
Passaggi successivi
- Crea una pipeline di streaming Dataflow che utilizza RunInference e Gemma.
- Esegui l'inferenza con un modello open Gemma in Google Colab (richiede Colab Enterprise).
- Esegui una pipeline con GPU.
- Ottimizza il modello.