AWS Türkçe Blog

Modeller üzerinde ince ayar yaparak ve ön eğitim kullanarak Amazon Bedrock’taki modelleri kendi verilerinizle özelleştirin

Orijinal makale: Link (Antje Barth)

Bugün, kullanım alanınıza, kuruluşunuza ve uygulama örneğinize özel uygulamalar oluşturmak için artık Amazon Bedrock‘ta temel modelleri (foundation model – FM’ler) kendi verilerinizle özel ve güvenli bir şekilde özelleştirebileceğinizi paylaşmaktan heyecan duyuyorum. Özel modeller sayesinde şirketinizin çizgisini, sesini ve hizmetlerini yansıtan benzersiz kullanıcı deneyimleri oluşturabilirsiniz.

İnce ayarlama (fine-tuning) ile, kendi işinize özel etiketli eğitim veri setinizi sağlayarak model doğruluğunu artırabilir ve FM’lerinizi daha da özelleştirebilirsiniz. Sürekli ön eğitim (continued pre-training) ile, müşteri tarafından yönetilen anahtarlarla güvenli ve yönetilen bir ortamda kendi etiketsiz verilerinizi kullanarak modelleri eğitebilirsiniz. Sürekli ön eğitim, modellerin orijinal eğitimlerinin ötesinde daha sağlam bilgi ve uyarlanabilirlik biriktirerek daha fazla alana özgü hale gelmesine yardımcı olur.

Size her iki model özelleştirme seçeneği hakkında hızlı bir tanıtım yapacağım. Amazon Bedrock konsolunu veya API’lerini kullanarak ince ayar ve sürekli ön eğitim işleri oluşturabilirsiniz. Konsolda Amazon Bedrock servisine gidin ve ardından Custom models‘i seçin.

Amazon Bedrock - Custom Models

Meta Llama 2, Cohere Command Light ve Amazon Titan FM’lerine ince ayar yapın
Amazon Bedrock artık Meta Llama 2, Cohere Command Light ve Amazon Titan modelleri için ince ayar yapmayı destekliyor. Konsolda bir ince ayar işi oluşturmak için Customize model‘i, ardından Create Fine-tuning job‘u seçin.

Amazon Bedrock - Custom Models

Aşağıda Python için AWS SDK’sını (Boto3) kullanan küçük bir demo var. Diyalogları özetlemek için Cohere Command Light’a ince ayar yapalım. Demo amacıyla, herkese açık dialogsum veri kümesini kullanıyorum, ancak bu sizin kendi şirketinize özgü verileriniz olabilir.

Amazon Bedrock üzerinde ince ayar yapmaya hazırlanmak için veri kümesini JSON Lines formatına dönüştürdüm ve Amazon S3‘e yükledim. Her JSON satırının hem bir komut istemi hem de bir tamamlama alanına sahip olması gerekir. En fazla 10.000 eğitim verisi kaydı belirtebilirsiniz, ancak birkaç yüz örnekle model performansında iyileşmeler görebilirsiniz.

{"completion": "Mr. Smith's getting a check-up, and Doctor Haw...", "prompt": Summarize the following conversation.\n\n#Pers..."}
{"completion": "Mrs Parker takes Ricky for his vaccines. Dr. P...", "prompt": "Summarize the following conversation.\n\n#Pers..."}
{"completion": "#Person1#'s looking for a set of keys and asks...", "prompt": "Summarize the following conversation.\n\n#Pers..."} 

Kısa olması için komut istemi ve tamamlama alanlarını düzenledim.

Aşağıdaki komutla ince ayarı destekleyen mevcut temel modellerini listeleyebilirsiniz:

import boto3 
bedrock = boto3.client(service_name="bedrock")
bedrock_runtime = boto3.client(service_name="bedrock-runtime")

for model in bedrock.list_foundation_models(
    byCustomizationType="FINE_TUNING")["modelSummaries"]:
    for key, value in model.items():
        print(key, ":", value)
    print("-----\n")

Ardından, bir model özelleştirme işi oluşturuyorum. İnce ayarı destekleyen Cohere Command Light model ID’sini belirtiyorum, özelleştirme türünü FINE_TUNING olarak ayarlıyorum ve eğitim verilerinin Amazon S3 konumuna işaret ediyorum. Gerekirse, ince ayar için hiper parametreleri de ayarlayabilirsiniz.

# Select the foundation model you want to customize
base_model_id = "cohere.command-light-text-v14:7:4k"

bedrock.create_model_customization_job(
    customizationType="FINE_TUNING",
    jobName=job_name,
    customModelName=model_name,
    roleArn=role,
    baseModelIdentifier=base_model_id,
    hyperParameters = {
        "epochCount": "1",
        "batchSize": "8",
        "learningRate": "0.00001",
    },
    trainingDataConfig={"s3Uri": "s3://path/to/train-summarization.jsonl"},
    outputDataConfig={"s3Uri": "s3://path/to/output"},
)

# Check for the job status
status = bedrock.get_model_customization_job(jobIdentifier=job_name)["status"]

İş tamamlandığında, özel modeliniz için özgün bir model kimliği alırsınız. İnce ayarlanmış modeliniz Amazon Bedrock tarafından güvenli bir şekilde saklanır. Modelinizi test etmek ve devreye almak için Provisioned Throughput satın almanız gerekir.

Şimdi sonuçları görelim. Veri kümesinden bir örnek seçiyorum ve aşağıdaki diyaloğu özetlemek için ince ayar yapmadan önce temel modeli ve ince ayar yaptıktan sonra özel modeli soruyorum:

prompt = """Summarize the following conversation.\\n\\n #Person1#: Hello. My name is John Sandals, and I've got a reservation.\\n #Person2#: May I see some identification, sir, please?\\n #Person1#: Sure. Here you are.\\n #Person2#: Thank you so much. Have you got a credit card, Mr. Sandals?\\n #Person1#: I sure do. How about American Express?\\n #Person2#: Unfortunately, at the present time we take only MasterCard or VISA.\\n #Person1#: No American Express? Okay, here's my VISA.\\n #Person2#: Thank you, sir. You'll be in room 507, nonsmoking, with a queen-size bed. Do you approve, sir?\\n #Person1#: Yeah, that'll be fine.\\n #Person2#: That's great. This is your key, sir. If you need anything at all, anytime, just dial zero.\\n\\n Summary: """

Modelleri sorgulamak için Amazon Bedrock InvokeModel API’sini kullanın.

body = {
    "prompt": prompt,
    "temperature": 0.5,
    "p": 0.9,
    "max_tokens": 512,
}

response = bedrock_runtime.invoke_model(
	# Use on-demand inference model ID for response before fine-tuning
    # modelId="cohere.command-light-text-v14",
	# Use ARN of your deployed custom model for response after fine-tuning
	modelId=provisioned_custom_model_arn,
    modelId=base_model_id, 
    body=json.dumps(body)
)

İnce ayar yapılmadan önceki temel model yanıtı:

#Person2# helps John Sandals with his reservation. John gives his credit card information and #Person2# confirms that they take only MasterCard and VISA. John will be in room 507 and #Person2# will be his host if he needs anything.

İnce ayar yapıldıktan sonraki yanıt, daha kısa ve daha isabetli:

John Sandals has a reservation and checks in at a hotel. #Person2# takes his credit card and gives him a key.

Amazon Titan Text için sürekli ön eğitim (ön izlemede)
Amazon Bedrock’ta sürekli ön eğitim, Titan Text Express ve Titan Text Lite dahil olmak üzere Amazon Titan Text modelleri için bugün genel önizlemede kullanıma sunuldu. Konsolda devam eden bir ön eğitim işi oluşturmak için Customize model‘i, ardından Create Continued Pre-training job‘u seçin.

Amazon Bedrock - Custom Models

Burada yine boto3’ü kullanan hızlı bir demo var. Bir yatırım şirketinde çalıştığınızı ve modeli finans sektörü terminolojisi hakkında daha bilgili hale getirmek için finans ve analist raporlarıyla ön eğitime devam etmek istediğinizi varsayalım. Demo amacıyla, eğitim verisi olarak Amazon hissedar mektuplarından oluşan bir koleksiyon seçtim.

Ön eğitime devam etmeye hazırlanmak için veri kümesini tekrar JSON Lines formatına dönüştürdüm ve Amazon S3’e yükledim. Etiketsiz verilerle çalıştığım için, her JSON satırının yalnızca komut istemi alanına sahip olması gerekiyor. En fazla 100.000 eğitim verisi kaydı belirtebilirsiniz ve genellikle en az 1 milyar belirteç (token) sağladıktan sonra olumlu etkiler görürsünüz.

{"input": "Dear shareholders: As I sit down to..."}
{"input": "Over the last several months, we to..."}
{"input": "work came from optimizing the conne..."}
{"input": "of the Amazon shopping experience f..."}

Kısa olması için giriş alanlarını düzenledim.

Ardından, özelleştirme türü CONTINUED_PRE_TRAINING olan ve verilere işaret eden bir model özelleştirme işi oluşturun. Gerekirse, devam eden ön eğitim için hiper parametreleri de ayarlayabilirsiniz.

# Select the foundation model you want to customize
base_model_id = "amazon.titan-text-express-v1"

bedrock.create_model_customization_job(
    customizationType="CONTINUED_PRE_TRAINING",
    jobName=job_name,
    customModelName=model_name,
    roleArn=role,
    baseModelIdentifier=base_model_id,
    hyperParameters = {
        "epochCount": "10",
        "batchSize": "8",
        "learningRate": "0.00001",
    },
    trainingDataConfig={"s3Uri": "s3://path/to/train-continued-pretraining.jsonl"},
    outputDataConfig={"s3Uri": "s3://path/to/output"},
)

İş tamamlandığında, başka bir özgün model kimliği alırsınız. Özelleştirilmiş modeliniz Amazon Bedrock tarafından tekrar güvenli bir şekilde saklanır. İnce ayarda olduğu gibi, modelinizi test etmek ve devreye almak için Provisioned Throughput satın almanız gerekir.

Bilinmesi gerekenler
İşte bilmeniz gereken birkaç önemli şey:

Veri gizliliği ve ağ güvenliği – Amazon Bedrock ile verilerinizin kontrolü sizdedir ve tüm girdileriniz ve özelleştirmeleriniz AWS hesabınızda gizli kalır. Komut istemleri, tamamlamalar, özel modeller ve ince ayar veya sürekli ön eğitim için kullanılan veriler gibi verileriniz hizmet iyileştirme için kullanılmaz ve asla üçüncü taraf model sağlayıcılarla paylaşılmaz. Verileriniz, API çağrısının işlendiği AWS Bölgesinde kalır. Tüm veriler aktarım sırasında ve beklemede şifrelenir. VPC’niz ile Amazon Bedrock arasında özel bir bağlantı oluşturmak için AWS PrivateLink‘i kullanabilirsiniz.

Billing – Amazon Bedrock charges for model customization, storage, and inference. Model customization is charged per tokens processed. This is the number of tokens in the training dataset multiplied by the number of training epochs. An epoch is one full pass through the training data during customization. Model storage is charged per month, per model. Inference is charged hourly per model unit using provisioned throughput. For detailed pricing information, see Amazon Bedrock Pricing.

Faturalandırma – Amazon Bedrock model özelleştirme, depolama ve çıkarımlar için ücret alır. Model özelleştirme, işlenen belirteç (token) başına ücretlendirilir. Bu, eğitim veri kümesindeki belirteçlerin sayısı ile eğitim döngülerinin (epoch) sayısının çarpımıdır. Bir döngü, özelleştirme sırasında eğitim verilerinden bir tam geçiştir. Model depolama, model başına aylık olarak ücretlendirilir. Çıkarım, sağlanan iş hacmi kullanılarak model birimi başına saatlik olarak ücretlendirilir. Ayrıntılı fiyatlandırma bilgileri için Amazon Bedrock Fiyatlandırması bölümüne bakın.

Özel modeller ve sağlanan iş hacmi (provisioned throughput) – Amazon Bedrock, sağlanan iş hacmini satın alarak özel modeller üzerinde çıkarım yapmanıza olanak tanır. Bu, bir dönem taahhüdü karşılığında tutarlı bir verim seviyesini garanti eder. Uygulamanızın performans ihtiyaçlarını karşılamak için gereken model birimi sayısını siz belirlersiniz. Başlangıçta özel modelleri değerlendirmek için, uzun vadeli taahhüt olmadan saatlik olarak sağlanan iş hacmi satın alabilirsiniz. Taahhüt olmaksızın, sağlanan iş hacmi başına bir model birimi kotası kullanılabilir. Hesap başına en fazla iki sağlanan iş hacmi oluşturabilirsiniz.

Kullanılabilirlik
Meta Llama 2, Cohere Command Light ve Amazon Titan Text FM’lerde ince ayar desteği bugün ABD Doğu (N. Virginia) ve ABD Batı (Oregon) AWS Bölgelerinde kullanıma sunuldu. Sürekli ön eğitim bugün AWS Doğu ABD (N. Virginia) ve Batı ABD (Oregon) bölgelerinde genel önizleme olarak kullanıma sunulmuştur. Daha fazla bilgi edinmek için Amazon Bedrock Developer Experience web sayfasını ziyaret edin ve Kullanıcı Kılavuzu‘na göz atın.

FM’leri Amazon Bedrock ile bugün özelleştirin!