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:
- BigQuery ML
- 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
3. Başlamadan önce
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
- Gerekli tüm API'lerin (BigQuery API, Vertex AI API, BigQuery Connection API) etkinleştirildiğinden emin olun.
- 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:

Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- 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.

Ş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:

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.

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:
- 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.
- Bağlantı türü olarak "BigLake ve uzak işlevler"i seçin ve bağlantı kimliği olarak "llm-conn"u girin.

- 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.

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:

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:

11. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İ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.