Vertex AI PaLM API kullanarak BigQuery ML ile yalnızca SQL LLM

1. Giriş

Bu codelab'de, BigQuery'de barındırılan uzak işlev olarak metin oluşturma için Vertex AI Büyük Dil Modeli'ni ( text-bison) kullanarak Github depolarındaki kaynak kodun özetlenmesi ve depodaki programlama dilinin tanımlanması için gereken adımları listeledim. GitHub Archive Project sayesinde artık Google BigQuery herkese açık veri kümelerinde 2, 8 milyondan fazla açık kaynaklı GitHub deposunun tam anlık görüntüsüne sahibiz. Kullanılan hizmetlerin listesi:

  1. BigQuery ML
  2. Vertex AI PaLM API

Ne oluşturacaksınız?

Oluşturacaklarınız

  • Modeli içerecek bir BigQuery veri kümesi
  • Vertex AI PaLM API'yi uzak işlev olarak barındıran bir BigQuery modeli
  • BigQuery ile Vertex AI arasında bağlantı oluşturmak için harici bir bağlantı

2. Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi

3. Başlamadan önce

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
  3. Gerekli tüm API'lerin (BigQuery API, Vertex AI API, BigQuery Connection API) etkinleştirildiğinden emin olun.
  4. bq önceden yüklenmiş olarak gelen, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. gcloud komutları ve kullanımı için belgelere bakın.

Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın:

51622c00acec2fa.png

Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:

gcloud config set project <YOUR_PROJECT_ID>
  1. Tarayıcınıza şu URL'yi girerek doğrudan BigQuery konsoluna gidin: https://console.cloud.google.com/bigquery

4. Veri hazırlama

Bu kullanım alanında, Google BigQuery Public Datasets'teki github_repos veri kümesinden alınan kaynak kodu içeriği kullanılmaktadır. Bu özelliği kullanmak için BigQuery konsolunda "github_repos" ifadesini arayıp Enter tuşuna basın. Arama sonucu olarak listelenen veri kümesinin yanındaki yıldızı tıklayın. Ardından, yalnızca herkese açık veri kümelerindeki veri kümesini görmek için "YALNIZCA YILDIZLI OLANLARI GÖSTER" seçeneğini tıklayın.

dc6bf1e2fa6bba8a.png

Şema ve veri önizlemesini görüntülemek için veri kümesindeki tabloları genişletin. İçerik tablosundaki tüm verilerin yalnızca bir örneğini (%10) içeren sample_contents tablosunu kullanacağız. Verilerin önizlemesini aşağıda bulabilirsiniz:

e021c689c56abf22.png

5. BigQuery veri kümesini oluşturma

BigQuery veri kümesi, tabloların bir araya getirilmiş halidir. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Ayrıca, bir veri kümesine ve tablolarına erişimi sınırlamak için özel erişim kontrolleri de ekleyebilirsiniz.

"US" bölgesinde (veya tercih ettiğimiz herhangi bir bölgede) bq_llm adlı bir veri kümesi oluşturun.

c67e9f929629739a.png

Bu veri kümesi, sonraki adımlarda oluşturacağımız makine öğrenimi modelini barındıracaktır. Genellikle, makine öğrenimi uygulamasında kullandığımız verileri de bu veri kümesindeki bir tabloda saklarız. Ancak kullanım alanımızda veriler zaten bir BigQuery herkese açık veri kümesinde bulunduğundan gerektiğinde doğrudan yeni oluşturduğumuz veri kümesinden referans vereceğiz. Bu projeyi CSV'de (veya başka bir dosyada) bulunan kendi veri kümenizde yapmak istiyorsanız Cloud Shell terminalinden aşağıdaki komutu çalıştırarak verilerinizi BigQuery veri kümesindeki bir tabloya yükleyebilirsiniz:

bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string

6. Harici bağlantı oluşturma

Harici bir bağlantı oluşturun (Henüz yapılmadıysa BQ Connection API'yi etkinleştirin) ve bağlantı yapılandırma ayrıntılarından hizmet hesabı kimliğini not edin:

  1. BigQuery Explorer bölmesinde (BigQuery konsolunun solunda) +EKLE düğmesini ve listelenen popüler kaynaklarda "Harici veri kaynaklarına bağlantı"yı tıklayın.
  2. Bağlantı türü olarak "BigLake ve uzak işlevler"i seçin ve bağlantı kimliği olarak "llm-conn"u girin.

6b75042881eaec5f.png

  1. Bağlantı oluşturulduktan sonra, bağlantı yapılandırma ayrıntılarından oluşturulan hizmet hesabını not edin.

7. İzin verin

Bu adımda, hizmet hesabına Vertex AI hizmetine erişim izni vereceğiz:

IAM'i açın ve harici bağlantıyı oluşturduktan sonra kopyaladığınız hizmet hesabını asıl kullanıcı olarak ekleyin ve "Vertex AI Kullanıcısı" rolünü seçin.

ff8e1d730879f972.png

8. Uzak ML modeli oluşturma

Barındırılan bir Vertex AI büyük dil modelini temsil eden uzak modeli oluşturun:

CREATE OR REPLACE MODEL bq_llm.llm_model
  REMOTE WITH CONNECTION `us.llm-conn`
  OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');

Bu işlev, veri kümesi bq_llm içinde llm_model adlı bir model oluşturur. Bu model, Vertex AI'ın CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API'sini uzak işlev olarak kullanır. Bu işlemin tamamlanması birkaç saniye sürer.

9. Makine öğrenimi modelini kullanarak metin oluşturma

Model oluşturulduktan sonra metin oluşturmak, özetlemek veya sınıflandırmak için modeli kullanın.

SELECT
  ml_generate_text_result['predictions'][0]['content'] AS generated_text,
  ml_generate_text_result['predictions'][0]['safetyAttributes']
    AS safety_attributes,
  * EXCEPT (ml_generate_text_result)
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
    ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens));

**Açıklama:

**ml_generate_text_result**, hem içerik hem de güvenlik özelliklerini içeren, JSON biçimindeki metin oluşturma modelinin yanıtıdır: a. İçerik, oluşturulan metin sonucu b'yi temsil eder. Güvenlik özellikleri, büyük dil modelinden istenmeyen veya beklenmedik yanıtlar gelmesini önlemek için Vertex AI Palm API'de etkinleştirilen, ayarlanabilir eşiğe sahip yerleşik içerik filtresini temsil eder. Güvenlik eşiğini ihlal eden yanıtlar engellenir.

ML.GENERATE_TEXT, metin oluşturma görevlerini gerçekleştirmek için Vertex AI LLM'ye erişmek üzere BigQuery'de kullandığınız yapıdır.

CONCAT, PROMPT ifadesini ve veritabanı kaydını ekler.

github_repos, veri kümesinin adı; sample_contents ise istem tasarımında kullanacağımız verileri içeren tablonun adıdır.

Sıcaklık, yanıtın rastgeleliğini kontrol etmek için kullanılan istem parametresidir. Alaka düzeyi açısından ne kadar düşük olursa o kadar iyidir.

Max_output_tokens, yanıtta istediğiniz kelime sayısıdır.

Sorgu yanıtı şu şekilde görünür:

1156f6eecb548cd5.png

10. Sorgu sonucunu düzleştirme

Sorguda JSON'u açıkça kod çözmemek için sonucu düzleştirelim:

SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
        ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

**Açıklama:

Flatten_json_output**, boole değerini temsil eder. Bu değer doğru olarak ayarlanırsa JSON yanıtından çıkarılan düz ve anlaşılır bir metin döndürülür.

Sorgu yanıtı şu şekilde görünür:

3b662ef7d3ba9263.png

11. Temizleme

Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
  3. İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.

12. Tebrikler

Tebrikler! Yalnızca SQL sorgularını kullanarak verilerinizde metin analizi yapmak için Vertex AI Text Generation LLM'yi programatik olarak başarıyla kullandınız. Mevcut modeller hakkında daha fazla bilgi edinmek için Vertex AI LLM ürün dokümanlarına göz atın.