Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure OpenAI hizmetini kullanarak tamamlama API'sini sorarak birçok doğal dil görevini çözebilirsiniz. Azure OpenAI hizmeti, birkaç örnekten oluşan istemli iş akışlarınızı büyük örnek veri kümelerine ölçeklendirmeyi kolaylaştırmak için dağıtılmış makine öğrenmesi kitaplığı SynapseML ile tümleşir. Bu tümleştirmeyi kullanarak , OpenAI hizmetiyle milyonlarca istem işlemek için Apache Spark dağıtılmış bilgi işlem çerçevesini kullanabilirsiniz. Bu öğreticide, Azure OpenAI ve Microsoft Fabric kullanarak dağıtılmış ölçekte büyük dil modellerinin nasıl uygulanacağı gösterilmektedir.
Önkoşullar
Bu hızlı başlangıcın temel önkoşulları, çalışan bir OpenAI kaynağı Azure ve SynapseML yüklü bir Apache Spark kümesidir.
Microsoft Fabric aboneliği alın. Alternatif olarak ücretsiz Microsoft Fabric deneme sürümüne kaydolabilirsiniz.
Microsoft Fabric'e giriş yapın.
Ana sayfanızın sol alt tarafındaki deneyim değiştiriciyi kullanarak Fabric'e geçin.
- Microsoft Fabric'teki Veri Bilimi iş yüküne gidin.
- Yeni bir not defteri oluşturun.
- Azure OpenAI kaynağı - kaynak oluşturma
Bu kılavuzu not defteri olarak içeri aktar
Sonraki adım, bu kodu Spark kümenize eklemektir. Spark platformunuzda bir not defteri oluşturabilir ve tanıtımı çalıştırmak için kodu bu not defterine kopyalayabilirsiniz.
- Bu demoyu bir not defteri olarak indirin ( Raw'ı seçin, sonra dosyayı kaydedin).
- Fabric çalışma alanına aktarın.
- Kümenize SynapseML kurmak için kurulum kılavuzunu kullanın. Bu adım, içeri aktardığınız not defterinin en üstüne fazladan bir hücre yapıştırmayı gerektirir.
- Dizüstü bilgisayarınızı bir kümeye bağlayın ve hücreleri düzenleyip çalıştırarak sürece katılın.
Hizmet bilgilerini doldurma
Ardından, not defterindeki hücreyi hizmetinize işaret eden şekilde düzenleyin.
service_name, deployment_name, locationve key değişkenlerini OpenAI hizmetinizle eşleşecek şekilde ayarlayın:
import os
from pyspark.sql import SparkSession
from synapse.ml.core.platform import running_on_synapse, find_secret
# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()
if running_on_synapse():
from notebookutils.visualization import display
# Fill in the following lines with your service information
# Learn more about selecting which embedding model to choose: https://openai.com/blog/new-and-improved-embedding-model
service_name = "synapseml-openai"
deployment_name = "gpt-4.1-mini"
deployment_name_embeddings = "text-embedding-3-small"
key = find_secret(
"openai-api-key"
) # please replace this line with your key as a string
assert key is not None and service_name is not None
İstemlerden oluşan bir veri kümesi oluşturun
Sonra, her satırda bir istem olacak şekilde bir dizi satırdan oluşan bir DataFrame oluşturun.
Verileri doğrudan ADLS'den veya diğer veritabanlarından da yükleyebilirsiniz. Spark DataFrame'lerin yüklenmesi ve hazırlanması hakkında daha fazla bilgi için Apache Spark veri yükleme rehberine bakınız.
df = spark.createDataFrame(
[
("Hello my name is",),
("The best code is code that's",),
("SynapseML is ",),
]
).toDF("prompt")
OpenAIPrompt Apache Spark istemcisini oluşturma
Azure OpenAI hizmetini DataFrame'inize uygulamak için, dağıtık bir istemci olarak çalışan bir OpenAIPrompt nesne oluşturun.
OpenAIPrompt nesnesi üzerindeki uygun ayarlayıcıları kullanarak hizmet parametrelerini tek bir değerle veya bir DataFrame sütunuyla ayarlayın. Bu örnekte 200 olarak ayarlayın maxTokens . Belirteç yaklaşık dört karakterdir ve bu sınır istem ve sonucun toplamı için geçerlidir. Parametreyi promptCol DataFrame'deki prompt sütununun adıyla ayarlayın.
from synapse.ml.services.openai import OpenAIPrompt
completion = (
OpenAIPrompt()
.setSubscriptionKey(key)
.setDeploymentName(deployment_name)
.setCustomServiceName(service_name)
.setMaxTokens(200)
.setPromptCol("prompt")
.setErrorCol("error")
.setOutputCol("completions")
)
OpenAIPrompt istemcisini kullanarak DataFrame'i dönüştürün
DataFrame ve prompt istemcisi oluşturulduktan sonra, giriş veri setinizi dönüştürün ve hizmetin eklediği tüm bilgilerle adlandırılmış completions bir sütun ekleyin. Basitlik için yalnızca metni seçin.
from pyspark.sql.functions import col
completed_df = completion.transform(df).cache()
display(
completed_df.select(
col("prompt"),
col("error"),
col("completions.choices.text").getItem(0).alias("text"),
)
)
Çıkışınız şuna benzer olmalıdır. Tamamlanma metni örnekten farklıdır.
| komut istemi | hata | text |
|---|---|---|
| Merhaba benim adım | boş | Makaveli, 18 yaşındayım ve büyüdüğümde rapçi olmak istiyorum. Müzik yazmayı ve yapmayı seviyorum. Los Angeles, CA'den geliyorum. |
| En iyi kod şu koddur: | boş | anlaşılabilir Bu öznel bir ifadedir ve kesin bir yanıt yoktur. |
| SynapseML şudur: | boş | Olayların gelecekteki sonuçlarını tahmin etmeyi öğrenebilen bir makine öğrenmesi algoritması. |
Diğer Kullanım Örnekleri
Metin gömme oluşturma
Metni tamamlamanın yanı sıra, aşağı akış algoritmalarında veya vektör alma mimarilerinde kullanmak üzere metin de ekleyebilirsiniz. Eklemeler oluşturarak, büyük koleksiyonlardan belge arayabilir ve alabilirsiniz. komut istemi mühendisliği görev için yeterli olmadığında bu yaklaşımı kullanın. kullanma OpenAIEmbeddinghakkında daha fazla bilgi için ekleme kılavuzuna bakın.
from synapse.ml.services.openai import OpenAIEmbedding
embedding = (
OpenAIEmbedding()
.setSubscriptionKey(key)
.setDeploymentName(deployment_name_embeddings)
.setCustomServiceName(service_name)
.setTextCol("prompt")
.setErrorCol("error")
.setOutputCol("embeddings")
)
display(embedding.transform(df))
Sohbet tamamlama
GPT-4o ve GPT-4.1 gibi modeller tek istemler yerine sohbetleri anlar. Transformatör OpenAIChatCompletion bu işlevi büyük ölçekte kullanıma sunar.
from synapse.ml.services.openai import OpenAIChatCompletion
from pyspark.sql import Row
from pyspark.sql.types import *
def make_message(role, content):
return Row(role=role, content=content, name=role)
chat_df = spark.createDataFrame(
[
(
[
make_message(
"system", "You are an AI chatbot with red as your favorite color"
),
make_message("user", "What's your favorite color"),
],
),
(
[
make_message("system", "You are very excited"),
make_message("user", "How are you today"),
],
),
]
).toDF("messages")
chat_completion = (
OpenAIChatCompletion()
.setSubscriptionKey(key)
.setDeploymentName(deployment_name)
.setCustomServiceName(service_name)
.setMessagesCol("messages")
.setErrorCol("error")
.setOutputCol("chat_completions")
)
display(
chat_completion.transform(chat_df).select(
"messages", "chat_completions.choices.message.content"
)
)
İstek toplu işlemiyle aktarım hızını geliştirme
Örnek, hizmete her istem için bir tane olmak üzere birkaç istekte bulunur. Tek bir istekte birden çok istem tamamlamak için toplu iş modunu kullanın. Öncelikle, OpenAIPrompt nesnesinde "İstem" sütununu "İstem" olarak ayarlamak yerine, BatchPrompt sütununu "batchPrompt" olarak belirtin.
Her satır için bir istem listesiyle bir DataFrame oluşturun.
batch_df = spark.createDataFrame(
[
(["The time has come", "Pleased to", "Today stocks", "Here's to"],),
(["The only thing", "Ask not what", "Every litter", "I am"],),
]
).toDF("batchPrompt")
Ardından nesnesini oluşturun OpenAIPrompt . tr-TR: İstem sütununu ayarlamak yerine, sütununuzun türü Array[String] ise batchPrompt sütununu ayarlayın.
batch_completion = (
OpenAIPrompt()
.setSubscriptionKey(key)
.setDeploymentName(deployment_name)
.setCustomServiceName(service_name)
.setMaxTokens(200)
.setBatchPromptCol("batchPrompt")
.setErrorCol("error")
.setOutputCol("completions")
)
Dönüştürme çağrısında her satır için bir istek yapılır. Her satır birden çok istem içerdiğinden, her istek bu satırdaki tüm istemleri gönderir. Sonuçlar, istekteki her satır için bir satır içerir.
completed_batch_df = batch_completion.transform(batch_df).cache()
display(completed_batch_df)
Otomatik bir minibatcher kullanımı
Verileriniz sütun biçimindeyse SynapseML'nin FixedMiniBatcherTransformerkullanarak satır biçimine çevirebilirsiniz.
from pyspark.sql.types import StringType
from synapse.ml.stages import FixedMiniBatchTransformer
from synapse.ml.core.spark import FluentAPI
completed_autobatch_df = (
df.coalesce(
1
) # Force a single partition so that our little 4-row DataFrame makes a batch of size 4, you can remove this step for large datasets
.mlTransform(FixedMiniBatchTransformer(batchSize=4))
.withColumnRenamed("prompt", "batchPrompt")
.mlTransform(batch_completion)
)
display(completed_autobatch_df)
Çeviri için yapay zeka istem mühendisliği
Azure OpenAI hizmeti, prompt engineering aracılığıyla birçok farklı doğal dil görevini çözebilir. Bu örnekte dil çevirisi istemi gösterilmektedir:
translate_df = spark.createDataFrame(
[
("Japanese: Ookina hako \nEnglish: Big box \nJapanese: Midori tako\nEnglish:",),
(
"French: Quel heure et il au Montreal? \nEnglish: What time is it in Montreal? \nFrench: Ou est le poulet? \nEnglish:",
),
]
).toDF("prompt")
display(completion.transform(translate_df))
Soru yanıtlama istemi
Bu örnek modelden genel bilgi sorusu yanıtlamasını ister:
qa_df = spark.createDataFrame(
[
(
"Q: Where is the Grand Canyon?\nA: The Grand Canyon is in Arizona.\n\nQ: What is the weight of the Burj Khalifa in kilograms?\nA:",
)
]
).toDF("prompt")
display(completion.transform(qa_df))