1. Giriş
Bu codelab'de, BigQuery'de barındırılan bir uzak işlev olarak metin oluşturma için Vertex AI Large Language Model'i ( text-bison) kullanarak GitHub depolarındaki kaynak kodu özetleme ve kod deposundaki programlama dilini tanımlama adımlarını listeledim. GitHub Arşiv Projesi sayesinde artık Google BigQuery Herkese Açık Veri Kümeleri'ndeki 2, 8 milyondan fazla açık kaynak GitHub deposunun tam anlık görüntüsüne sahibiz. Kullanılan hizmetlerin listesi şunlardır:
- BigQuery ML
- Vertex AI PaLM API'si
Neler oluşturacaksınız?
Şöyle
- 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ı kurmak için harici bağlantı
2. Şartlar
3. Başlamadan önce
- Google Cloud Console'daki proje seçici sayfasından 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ı nasıl kontrol edeceğinizi öğrenin.
- Gerekli tüm API'lerin (BigQuery API, Vertex AI API, BigQuery Connection API) etkinleştirildiğinden emin olun
- Google Cloud'da çalışan ve bq ile önceden yüklenmiş 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 ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Tarayıcınıza aşağıdaki URL'yi girerek doğrudan BigQuery konsoluna gidin: https://console.cloud.google.com/bigquery
4. Veri hazırlama
Bu kullanım örneğinde, Google BigQuery Herkese Açık Veri Kümeleri'nde github_repos veri kümesinin kaynak kodu içeriğini kullanıyoruz. Bunu kullanmak için BigQuery konsolunda "github_repos" araması yapın ve Enter tuşuna basın. Arama sonucu olarak listelenen veri kümesinin yanındaki yıldızı tıklayın. Ardından "YALNIZCA YILDIZLI GÖSTER"i tıklayın. seçeneğini kullanabilirsiniz.
Şema ve veri önizlemesini görüntülemek için veri kümesindeki tabloları genişletin. İçindekiler tablosundaki tüm verilerin yalnızca bir örneğini (%10) içeren sample_contents alanını kullanacağız. Verilerin önizlemesini burada görebilirsiniz:
5. BigQuery veri kümesi oluşturma
BigQuery veri kümesi, tablo koleksiyonudur. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Bir veri kümesi ve tablolarına erişimi sınırlamak için özel erişim denetimleri de ekleyebilirsiniz.
"US" bölgesinde bir veri kümesi oluşturun (veya tercih ettiğimiz bq_llm adlı herhangi bir bölge)
Bu veri kümesinde, sonraki adımlarda oluşturacağımız makine öğrenimi modeli yer alır. Tipik olarak, ML uygulamasında kullandığımız verileri bu veri kümesindeki bir tabloda da depolarız. Ancak kullanım durumumuzda veriler zaten herkese açık bir BigQuery veri kümesinde barındırılır. Gerekirse bu verilere doğrudan yeni oluşturulan 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 bir BigQuery veri kümesine 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şturuluyor
Harici bağlantı oluşturun (henüz yapmadıysanız BQ Connection API'yi etkinleştirin) ve bağlantı yapılandırma ayrıntılarından hizmet hesabı kimliğini not edin:
- BigQuery Gezgini bölmesindeki +EKLE düğmesini (BigQuery konsolunun solundaki) ve ardından "Harici veri kaynaklarına bağlantı"yı tıklayın. listelenen popüler kaynaklarda
- "BigLake ve uzak işlevler" olarak Bağlantı türünü seçin "llm-conn" ve Bağlantı Kimliği olarak
- 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şmesi için izin vereceğiz:
IAM'yi açın ve harici bağlantıyı oluşturduktan sonra kopyaladığınız Hizmet Hesabı'nı Ana Hesap olarak ekleyin ve "Vertex AI Kullanıcısı"nı seçin Rol
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');
bq_llm veri kümesinde llm_model adlı bir model oluşturur. Bu model, uzak bir işlev olarak Vertex AI'ın CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API'sinden yararlanır. Bu işlemin tamamlanması birkaç saniye sürer.
9. ML modelini kullanarak metin oluşturma
Model oluşturulduktan sonra metin oluşturmak, özetlemek veya kategorilere ayı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 b metin sonucunu temsil eder. Güvenlik Özellikleri, büyük dil modelinden gelen istenmeyen veya öngörülemeyen yanıtları önlemek için Vertex AI Palm API'de etkinleştirilmiş olan ayarlanabilir bir eşiğe sahip yerleşik içerik filtresini temsil eder. Yanıt, güvenlik eşiğini ihlal ediyorsa engellenir
ML.GENERATE_TEXT, metin oluşturma görevlerini gerçekleştirmek amacıyla Vertex AI LLM'ye erişmek için BigQuery'de kullandığınız yapıdır
CONCAT, PROMPT ifadenizi ve veritabanı kaydınızı ekler.
github_repos, veri kümesinin adıdır. sample_contents ise istem tasarımında kullanacağımız verilerin bulunduğu tablonun adıdır.
Sıcaklık, yanıtın rastgeleliğini kontrol eden istem parametresidir (ne kadar az olursa alaka düzeyi açısından o kadar iyidir)
Max_output_tokens, yanıtta olmasını istediğiniz kelime sayısıdır
Sorgu yanıtı şu şekilde görünür:
10. Sorgu sonucunu düzleştir
Sorguda JSON kodunu çözmemiz gerekmemesi için sonucu düzeltelim:
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_Exit**, boole değerini temsil eder. Boole, true olarak ayarlanırsa JSON yanıtından ayıklanan düz ve anlaşılabilir bir metin döndürü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 konsolunda Kaynakları yönetin sayfasına gidin
- Proje listesinden silmek istediğiniz projeyi seçin ve ardından Sil’i tıklayın
- İletişim kutusuna 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 gerçekleştirmek için programatik olarak Vertex AI Metin Oluşturma LLM'sini başarıyla kullandınız. Mevcut modeller hakkında daha fazla bilgi edinmek için Vertex AI LLM ürün belgelerine göz atın.