Gunakan model terbuka Gemma dengan Dataflow

Gemma adalah kelompok model terbuka yang ringan dan canggih, dibangun dari penelitian dan teknologi yang digunakan untuk membuat model Gemini. Anda dapat menggunakan model Gemma di pipeline inferensi Apache Beam Anda. Istilah bobot terbuka berarti parameter atau bobot model yang telah dilatih sebelumnya, akan 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 model Dataflow dan Gemma, Anda dapat memproses peristiwa, seperti ulasan pelanggan, saat mereka tiba. Jalankan ulasan melalui model untuk menganalisisnya, dan kemudian berikan 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 daftar jenis GPU yang didukung dengan Dataflow, lihat Ketersediaan. Jenis GPU T4 dan L4 direkomendasikan.
  • Model harus didownload dan disimpan dalam format file .keras.
  • Pengendali 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, 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. Dengan langkah ini, pipeline dapat dijalankan dengan GPU di layanan Dataflow. Untuk mengetahui informasi selengkapnya, lihat Membuat image container kustom di bagian "Menjalankan pipeline dengan GPU".

Gunakan Gemma di pipeline Anda

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

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

    model_path = "MODEL_PATH"
    

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

  2. Implementasi Keras model Gemma memiliki metode generate() yang menghasilkan teks berdasarkan prompt. 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 yang telah dilatih. Contoh ini menggunakan pengendali 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 selanjutnya