Menggunakan model terbuka Gemma dengan Dataflow

Gemma adalah serangkaian model terbuka yang ringan dan canggih, dibangun dari riset dan teknologi yang digunakan untuk membuat model Gemini. Anda dapat menggunakan model Gemma di pipeline inferensi Apache Beam. Istilah bobot terbuka berarti bahwa parameter atau bobot model yang telah dilatih sebelumnya dirilis. Detail seperti set data asli, arsitektur model, dan kode pelatihan tidak disediakan.

Kasus penggunaan

Anda dapat menggunakan model Gemma dengan Dataflow untuk analisis sentimen. Dengan Dataflow dan model Gemma, Anda dapat memproses peristiwa, seperti ulasan pelanggan, saat peristiwa tersebut tiba. Jalankan ulasan melalui model untuk menganalisisnya, lalu buat rekomendasi. Dengan menggabungkan Gemma dan Apache Beam, Anda dapat menyelesaikan alur kerja ini dengan lancar.

Dukungan dan batasan

Model terbuka Gemma didukung dengan Apache Beam dan Dataflow dengan persyaratan berikut:

  • Tersedia untuk pipeline batch dan streaming yang menggunakan Apache Beam Python SDK versi 2.46.0 dan yang lebih baru.
  • Tugas Dataflow harus menggunakan Runner v2.
  • Tugas Dataflow harus menggunakan GPU. Untuk mengetahui daftar jenis GPU yang didukung dengan Dataflow, lihat Ketersediaan. Jenis GPU L4 (G2) direkomendasikan.
  • Model harus didownload dan disimpan dalam format file .keras.
  • Handler model TensorFlow direkomendasikan, tetapi tidak wajib.

Prasyarat

  • Akses model Gemma melalui Kaggle.
  • Lengkapi formulir izin dan setujui persyaratan dan ketentuan.
  • Download model Gemma. Simpan dalam format file .keras di lokasi yang dapat diakses oleh tugas Dataflow Anda, seperti bucket Cloud Storage. Saat Anda menentukan nilai untuk variabel jalur model, gunakan jalur ke lokasi penyimpanan ini.
  • Untuk menjalankan tugas di Dataflow, buat image container kustom. Langkah ini memungkinkan pipeline dijalankan dengan GPU di layanan Dataflow.

Menggunakan Gemma di pipeline Anda

Untuk menggunakan model Gemma di pipeline Apache Beam Anda, ikuti langkah-langkah berikut.

  1. Dalam kode Apache Beam, setelah mengimpor dependensi pipeline, sertakan jalur ke model tersimpan Anda:

    model_path = "MODEL_PATH"
    

    Ganti MODEL_PATH dengan jalur tempat Anda menyimpan model yang didownload. Misalnya, jika Anda menyimpan model ke bucket Cloud Storage, jalur tersebut memiliki format gs://STORAGE_PATH/FILENAME.keras.

  2. Implementasi Keras dari model Gemma memiliki metode generate() yang menghasilkan teks berdasarkan perintah. Untuk meneruskan elemen ke metode generate(), gunakan fungsi inferensi kustom.

    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)
    
  3. Jalankan pipeline Anda, dengan menentukan jalur ke model terlatih. Contoh ini menggunakan handler model 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.
      )
    

Langkah berikutnya