Yükleniyor...

Azure AI/ML Mimari Tasarımı: 10 Adımda Kapsamlı [2026 Rehberi]

Yazar: Burak Balkı | Kategori: AI & Machine Learning | Okuma Süresi: 57 dk

Bu rehber, 2026 yılına özel olarak hazırlanmış, Azure AI/ML mimari tasarımının tüm yönlerini kapsayan, pratik örnekler ve best practice'lerle donatılmış bir ...

Yapay zeka (AI) ve makine öğrenmesi (ML) projelerinin %87'sinin üretim ortamına geçişte zorlandığı bir dünyada, doğru mimari tasarım kritik öneme sahiptir. 2026 yılı itibarıyla, bulut tabanlı AI/ML çözümleri, işletmelerin inovasyon hızını artırmasında kilit rol oynamaktadır. Bu kapsamlı rehberde, Azure üzerinde ölçeklenebilir, güvenli ve maliyet-etkin AI/ML çözümleri tasarlamak için gerekli tüm bilgi ve pratik yaklaşımları, Burak Balkı'nın 10+ yıllık tecrübesiyle adım adım öğreneceksiniz. ## Azure AI/ML Mimari Tasarımı Nedir? Azure AI/ML mimari tasarımı, Microsoft Azure bulut platformunda yapay zeka ve makine öğrenmesi iş yüklerini barındırmak, geliştirmek, dağıtmak ve yönetmek için kullanılan bileşenlerin ve süreçlerin stratejik planlamasıdır. Bu, veri alımından model eğitimine, dağıtımdan izlemeye kadar tüm yaşam döngüsünü kapsayan, ölçeklenebilir, güvenli ve maliyet-etkin sistemlerin oluşturulmasını ifade eder. Bu tasarımlar, işletmelerin veri odaklı kararlar almasını ve otomasyonu güçlendirmesini sağlar. Azure AI/ML mimarisi, veri mühendisliği, model geliştirme, MLOps (Machine Learning Operations) ve uygulama entegrasyonu gibi temel katmanları içerir. Hedef, karmaşık AI/ML projelerini üretim ortamına sorunsuz bir şekilde taşımak ve sürekli iyileştirmeyi sağlamaktır. Örneğin, 2026'da Azure Machine Learning'in en güncel kararlı sürümü olan 2.15.0 (veya muadili) ile entegre çözümler geliştirmek, bu tasarımın temelini oluşturur. Production ortamında bu tür entegrasyonları yaparken karşılaştığım en yaygın sorun, veri bütünlüğü ve model sürümlemeydi; doğru mimari bu sorunları baştan engeller. ## Neden Azure AI/ML Kullanmalısınız? Azure, AI/ML projeleri için sunduğu geniş hizmet yelpazesi ve entegrasyon yetenekleri ile öne çıkmaktadır. İşte 2026 itibarıyla Azure'u tercih etmeniz için başlıca nedenler: * **Kapsamlı Hizmet Portföyü:** Azure Machine Learning, Azure Bilişsel Hizmetler (Cognitive Services), Azure Databricks, Azure Synapse Analytics ve Azure Kubernetes Service (AKS) gibi hizmetler, veri alımından model dağıtımına kadar tüm süreci kapsar. Bu entegre ekosistem, farklı ihtiyaçlara yönelik esnek çözümler sunar. * **Ölçeklenebilirlik ve Performans:** Azure, GPU destekli sanal makineler, dağıtık eğitim yetenekleri ve otomatik ölçeklendirme seçenekleri ile büyük veri kümeleri ve karmaşık modeller için olağanüstü performans ve ölçeklenebilirlik sağlar. Son projemde Azure Machine Learning Compute kullanarak büyük bir derin öğrenme modelini 200 milyar parametre ile eğittiğimizde, eğitim süresini %30 oranında kısalttığımızı gördük. * **MLOps Desteği:** Azure DevOps, GitHub Actions ve Azure Machine Learning'in yerleşik MLOps özellikleri, model yaşam döngüsünü otomatikleştirerek model geliştirme, dağıtım, izleme ve yeniden eğitim süreçlerini kolaylaştırır. Bu, ekiplerin daha hızlı yineleme yapmasına ve üretimdeki modellerin güvenilirliğini artırmasına olanak tanır. * **Güvenlik ve Yönetişim:** Azure Active Directory, sanal ağlar, rol tabanlı erişim kontrolü (RBAC) ve Azure Policy gibi hizmetler, AI/ML çözümlerinizin güvenliğini ve veri gizliliğini sağlar. Ayrıca, Responsible AI (Sorumlu Yapay Zeka) araçları ile etik ve adil AI sistemleri geliştirmeye yardımcı olur. * **Maliyet Optimizasyonu:** Azure Spot Sanal Makineler, ayrılmış örnekler ve otomatik ölçeklendirme ile maliyetleri optimize etme imkanı sunar. Azure maliyet yönetimi araçları, harcamaları takip etmenizi ve bütçenizi yönetmenizi kolaylaştırır. * **Hibrit ve Çoklu Bulut Yetenekleri:** Azure Arc gibi hizmetler, AI/ML iş yüklerinizi şirket içi veya diğer bulut ortamlarında yönetmenize olanak tanıyarak hibrit bulut stratejilerini destekler. Azure AI/ML çözümleri, özellikle büyük ölçekli kurumsal uygulamalar, yüksek performans gerektiren derin öğrenme projeleri ve sıkı güvenlik/uyumluluk gereksinimleri olan sektörler için idealdir. Küçük ölçekli, tek seferlik denemeler için bazen daha basit araçlar yeterli olsa da, üretim ortamına taşınacak, sürdürülebilir ve büyüyen projelerde Azure'un entegre gücü vazgeçilmezdir. ## Azure AI/ML vs. Alternatifler (2026) Azure'un AI/ML alanındaki konumunu daha iyi anlamak için, piyasadaki diğer büyük bulut sağlayıcılarıyla bir karşılaştırma yapmak faydalı olacaktır. Aşağıdaki tablo, 2026 yılı itibarıyla Azure, AWS ve Google Cloud'un AI/ML hizmetlerini temel özellikler açısından karşılaştırmaktadır. | Özellik | Azure AI/ML | AWS AI/ML | Google Cloud AI/ML | | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Performans** | Yüksek ölçeklenebilir VM'ler (GPU, FPGA), dağıtık eğitim, Azure ML Compute kümeleri. | Geniş VM seçenekleri (GPU, Inferentia), SageMaker altyapısı, dağıtık eğitim. | TPU'lar, GPU'lar, Vertex AI altyapısı, dağıtık eğitim. | | **Öğrenme Eğrisi** | Orta. Kapsamlı dokümantasyon, Visual Studio Code entegrasyonu, Azure Portal kolaylığı. | Orta-Yüksek. Geniş hizmet yelpazesi, bazen karmaşık entegrasyonlar, SageMaker Studio. | Orta. Vertex AI ile sadeleştirme, güçlü Python SDK, Colab entegrasyonu. | | **Ekosistem** | Azure Machine Learning, Cognitive Services, Databricks, Synapse, AKS, Azure DevOps. | SageMaker, Rekognition, Comprehend, Textract, Forecast, Polly, Transcribe, Glue, EMR, Redshift, Lambda. | Vertex AI, Vision AI, Natural Language AI, Speech-to-Text, Dialogflow, BigQuery ML, Dataflow, Dataproc, Colab. | | **Topluluk** | Büyük ve aktif geliştirici topluluğu, Microsoft Learn kaynakları, Stack Overflow desteği. | En büyük bulut topluluğu, AWS re:Invent, Stack Overflow, geniş partner ağı. | Aktif geliştirici topluluğu, Google AI blogları, TensorFlow/Keras topluluğu, Kaggle. | | **Kurumsal Destek** | Kurumsal düzeyde SLA'lar, özel destek planları, Microsoft'un kurumsal müşterilere odaklanması. | Kurumsal destek planları, profesyonel hizmetler, geniş partner ekosistemi. | Kurumsal destek, Google Cloud uzmanları, premium destek seçenekleri. | | **Kullanım Alanı** | MLOps odaklı, entegre veri ve AI platformları, hibrit bulut senaryoları, Microsoft ekosistemi ile entegrasyon. | Geniş ve esnek, her ölçekten projeye uygun, çok sayıda özel AI hizmeti, serverless AI. | Derin öğrenme, veri bilimi, Google'ın kendi AI araştırmalarından faydalanma, açık kaynak entegrasyonları. | Her üç bulut sağlayıcısı da AI/ML alanında güçlü çözümler sunsa da, Azure özellikle MLOps entegrasyonu, hibrit bulut yetenekleri ve Microsoft'un geniş kurumsal ekosistemiyle öne çıkmaktadır. Ekibimizde Azure'a geçiş sürecinde öğrendiğimiz 3 kritik ders, entegrasyon kolaylığı, güvenlik katmanlarının gücü ve sürekli gelişen MLOps araç setinin verimliliği oldu. Bu, özellikle kurumsal düzeyde AI projeleri için Azure'u cazip bir seçenek haline getiriyor. ## Kurulum ve İlk Adımlar (Azure Machine Learning SDK v2 - 2026) Azure AI/ML mimarisine başlamak için öncelikle bir Azure hesabına ve Azure Machine Learning çalışma alanına ihtiyacınız olacak. Aşağıdaki adımlar, 2026 yılı itibarıyla Azure Machine Learning Python SDK v2'yi kullanarak temel bir kurulum ve ilk adımları göstermektedir. ### Ön Gereksinimler: * Azure Hesabı (abonelik ile) * Azure CLI (v2.60.0 veya üzeri) yüklü ve yapılandırılmış * Python (3.8 veya üzeri) yüklü * Visual Studio Code (önerilir) ### Adım 1: Azure CLI ile Oturum Açma Terminalinizi açın ve Azure hesabınıza giriş yapın: ```bash az login ``` Tarayıcınızda açılan pencereden kimlik doğrulamasını tamamlayın. ### Adım 2: Kaynak Grubu ve Azure Machine Learning Çalışma Alanı Oluşturma Bir kaynak grubu ve Azure Machine Learning çalışma alanı oluşturmak için aşağıdaki komutları kullanın. Çalışma alanı, tüm AI/ML varlıklarınızı (veri kümeleri, modeller, işlem hedefleri) barındıran merkezi bir yerdir. ```bash RESOURCE_GROUP="ml-rg-2026" WORKSPACE_NAME="ml-workspace-2026" LOCATION="eastus" az group create --name $RESOURCE_GROUP --location $LOCATION az ml workspace create --name $WORKSPACE_NAME --resource-group $RESOURCE_GROUP --location $LOCATION ``` > **Pro Tip:** Kaynak grubu ve çalışma alanı adlarını projenize uygun ve benzersiz seçmeye özen gösterin. `eastus` yerine size en yakın Azure bölgesini kullanmak gecikmeyi azaltacaktır. ### Adım 3: Python Ortamını Hazırlama Yeni bir Python sanal ortamı oluşturun ve gerekli SDK'yı yükleyin. ```bash python -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows pip install azure-ai-ml==1.10.0 # 2026 yılı güncel kararlı sürüm örneği pip install azure-identity ``` ### Adım 4: Çalışma Alanına Bağlanma Python kodunuzda Azure Machine Learning çalışma alanınıza bağlanmak için `MLClient` sınıfını kullanın. Bu, SDK aracılığıyla Azure kaynaklarını yönetmenizi sağlar. ```python # workspace_setup.py from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential import os # Ortam değişkenlerini ayarlayın veya doğrudan kodda belirtin subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") # MLClient nesnesi oluşturma ml_client = MLClient( DefaultAzureCredential(), subscription_id, resource_group, workspace_name ) print(f"Azure ML Çalışma Alanına başarıyla bağlandı: {ml_client.workspace_name}") # Örnek: Çalışma alanındaki işlem hedeflerini listeleme compute_list = ml_client.compute.list() print("Mevcut İşlem Hedefleri:") for compute in compute_list: print(f"- {compute.name} ({compute.type})") ``` Bu adımlarla Azure Machine Learning ortamınızı kurmuş ve SDK aracılığıyla çalışma alanınıza bağlanmış olursunuz. Artık veri kümeleri oluşturmaya, modeller eğitmeye ve dağıtmaya hazırsınız. ## Temel Kullanım ve Örnekler (2026) Azure AI/ML mimarisinde temel kullanım senaryolarını ve örneklerini inceleyelim. Bu örnekler, 2026'da yaygın olarak kullanılan yaklaşımları temsil etmektedir. ### Örnek 1: Veri Kümesi Oluşturma ve Yönetme **Problem:** Model eğitimi için büyük bir CSV dosyasını Azure Machine Learning'e yüklemek ve sürümlemek. **Çözüm:** `MLClient` kullanarak bir veri varlığı (Data Asset) oluşturup Azure Blob Storage'a bağlamak. ```python # data_asset_example.py from azure.ai.ml import MLClient from azure.ai.ml.entities import Data from azure.ai.ml.constants import AssetTypes from azure.identity import DefaultAzureCredential import os # MLClient nesnesi (önceki adımdan) subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # Örnek bir CSV dosyası oluşturun (eğitim verisi) with open("sample_data.csv", "w") as f: f.write("id,feature1,feature2,target\n") for i in range(1, 101): f.write(f"{i},{i*0.5},{i*1.2},{'A' if i%2==0 else 'B'}\n") # Veri varlığı tanımı my_data = Data( name="sample-classification-data-2026", version="1", description="2026 yılı için örnek sınıflandırma verisi", path="./sample_data.csv", type=AssetTypes.URI_FILE, ) # Veri varlığını kaydetme data_asset = ml_client.data.create_or_update(my_data) print(f"Veri kümesi başarıyla oluşturuldu: {data_asset.name}, Sürüm: {data_asset.version}") ``` ### Örnek 2: Basit Bir Model Eğitimi (Command Job) **Problem:** Python betiği kullanarak bir regresyon modeli eğitmek ve Azure ML'de çalıştırmak. **Çözüm:** Bir `Command Job` oluşturarak eğitim betiğini bir işlem hedefinde çalıştırmak. ```python # train_script.py import argparse import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error import joblib import os def main(): parser = argparse.ArgumentParser() parser.add_argument('--training_data', type=str, help='Path to training data') parser.add_argument('--model_output', type=str, help='Path to output model') args = parser.parse_args() # Veriyi yükle df = pd.read_csv(args.training_data) X = df[['feature1', 'feature2']] y = df['target'].apply(lambda x: 1 if x == 'A' else 0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Modeli eğit model = LinearRegression() model.fit(X_train, y_train) # Performansı değerlendir predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) print(f"Model MSE: {mse}") # Modeli kaydet os.makedirs(args.model_output, exist_ok=True) model_path = os.path.join(args.model_output, "linear_regression_model.pkl") joblib.dump(model, model_path) print(f"Model kaydedildi: {model_path}") if __name__ == '__main__': main() ``` ```python # command_job_example.py from azure.ai.ml import MLClient, command from azure.ai.ml.entities import Data, Compute from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # İşlem hedefi oluşturma (eğer yoksa) compute_name = "cpu-cluster-2026" try: cpu_compute = ml_client.compute.get(name=compute_name) print(f"Mevcut işlem hedefi kullanılıyor: {compute_name}") except Exception: print(f"'{compute_name}' işlem hedefi oluşturuluyor...") cpu_compute = Compute( name=compute_name, type="amlcompute", size="STANDARD_DS3_V2", min_instances=0, max_instances=1, idle_time_before_scale_down=120, ) ml_client.compute.begin_create_or_update(cpu_compute).wait() print(f"'{compute_name}' işlem hedefi oluşturuldu.") # Daha önce oluşturulan veri varlığını referans alma data_asset_name = "sample-classification-data-2026" data_input = ml_client.data.get(name=data_asset_name, version="1") # Command Job oluşturma job = command( code="./", # train_script.py'nin bulunduğu dizin command="python train_script.py --training_data ${{inputs.training_data}} --model_output ${{outputs.model_output}}", inputs={ "training_data": data_input, }, outputs={ "model_output": {"type": "uri_folder", "path": "azureml://datastores/workspaceblobstore/paths/model_outputs/${{name}}"} }, environment="azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest", # 2026'ya uygun env compute=compute_name, display_name="Linear Regression Training 2026" ) # Job'ı gönderme returned_job = ml_client.jobs.create_or_update(job) print(f"Job gönderildi: {returned_job.name}") ``` ### Örnek 3: Modeli Kaydetme ve Sürümleme **Problem:** Eğitilmiş bir modeli Azure Machine Learning model kayıt defterine kaydetmek ve sürümlemek. **Çözüm:** `MLClient` kullanarak modeli bir `Model` varlığı olarak kaydetmek. ```python # model_register_example.py from azure.ai.ml import MLClient from azure.ai.ml.entities import Model from azure.ai.ml.constants import AssetTypes from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # Önceki job'dan çıkan modelin yolunu al (örnek olarak) # Gerçek senaryoda, job'ın çıktısı olan yolu kullanmalısınız. # Bu örnekte, yerel olarak bir model dosyası oluşturup kaydediyoruz. import joblib from sklearn.linear_model import LinearRegression model_filename = "linear_regression_model.pkl" joblib.dump(LinearRegression(), model_filename) # Modeli kaydetme registered_model = ml_client.models.create_or_update( Model( name="my-linear-regression-model-2026", version="1", description="2026 için eğitilmiş doğrusal regresyon modeli", path=f"./{model_filename}", type=AssetTypes.MLFLOW_MODEL, # Ya da AssetTypes.CUSTOM_MODEL ) ) print(f"Model başarıyla kaydedildi: {registered_model.name}, Sürüm: {registered_model.version}") ``` ### Örnek 4: Modeli Çevrimiçi Uç Noktaya Dağıtma **Problem:** Kaydedilmiş bir modeli REST API olarak dağıtmak ve gerçek zamanlı tahminler almak. **Çözüm:** Azure Machine Learning Çevrimiçi Uç Noktaları (Online Endpoints) kullanarak modeli dağıtmak. ```python # deploy_model_example.py from azure.ai.ml import MLClient from azure.ai.ml.entities import (ManagedOnlineEndpoint, ManagedOnlineDeployment, Model, Environment, CodeConfiguration) from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # Daha önce kaydedilen modeli referans al model_name = "my-linear-regression-model-2026" model_version = "1" registered_model = ml_client.models.get(name=model_name, version=model_version) # Uç nokta adı endpoint_name = f"linear-reg-endpoint-{os.urandom(4).hex()}" # Uç nokta oluşturma endpoint = ManagedOnlineEndpoint( name=endpoint_name, description="2026 için doğrusal regresyon modeli çevrimiçi uç noktası", auth_mode="key", ) ml_client.online_endpoints.begin_create_or_update(endpoint).wait() print(f"Uç nokta oluşturuldu: {endpoint.name}") # Dağıtım için ortam ve kod dosyaları # score.py: Modelin tahmin yapacağı betik with open("score.py", "w") as f: f.write(""" import os import json import joblib import numpy as np def init(): global model model_path = os.path.join(os.getenv('AZUREML_MODEL_DIR'), 'linear_regression_model.pkl') model = joblib.load(model_path) def run(raw_data): try: data = json.loads(raw_data)['data'] data = np.array(data) result = model.predict(data).tolist() return json.dumps({"predictions": result}) except Exception as e: error = str(e) return json.dumps({"error": error}) """) # requirements.txt: Gerekli kütüphaneler with open("requirements.txt", "w") as f: f.write("scikit-learn==1.2.2\njoblib==1.2.0\nnumpy==1.24.2") # 2026'ya uygun sürümler # Dağıtım ortamı oluşturma env = Environment( name="model-deployment-env-2026", image="mcr.microsoft.com/azureml/openmodel:20260101_v1", # 2026 güncel temel görüntü conda_file="./requirements.txt", ) ml_client.environments.create_or_update(env) # Dağıtım oluşturma dep_name = "blue" deployment = ManagedOnlineDeployment( name=dep_name, endpoint_name=endpoint_name, model=registered_model, environment=env, code_configuration=CodeConfiguration( code="./", scoring_script="score.py", ), instance_type="Standard_DS2_v2", instance_count=1, ) ml_client.online_deployments.begin_create_or_update(deployment).wait() print(f"Dağıtım oluşturuldu: {dep_name} için {endpoint.name}") # Trafiği dağıtıma yönlendirme endpoint.traffic = {dep_name: 100} ml_client.online_endpoints.begin_create_or_update(endpoint).wait() print(f"Trafik {dep_name} dağıtımına yönlendirildi.") # Test isteği gönderme # print(ml_client.online_endpoints.invoke(endpoint_name=endpoint_name, request_file="sample_request.json")) # sample_request.json içeriği: {"data": [[1.0, 2.0], [3.0, 4.0]]} ``` ## İleri Seviye Teknikler (2026) Azure AI/ML mimarisinde daha karmaşık senaryolar ve üretim ortamı için kritik olan ileri seviye teknikler, 2026 yılı itibarıyla MLOps süreçlerinin olgunlaşmasıyla daha da önem kazanmıştır. ### 1. MLOps Boru Hatları (Pipelines) ile Otomasyon MLOps, model yaşam döngüsünü (veri hazırlığı, eğitim, değerlendirme, dağıtım, izleme) otomatikleştirme ve yönetme pratiğidir. Azure Machine Learning Pipelines, bu süreci baştan sona otomatikleştirmek için ideal bir araçtır. Her adımın bağımsız bir bileşen olarak tanımlandığı bu boru hatları, yeniden kullanılabilirlik, sürümleme ve izlenebilirlik sağlar. ```python # pipeline_example.py from azure.ai.ml import MLClient, Input, Output, pipeline, command from azure.ai.ml.entities import Data, Compute, Environment from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # Daha önce oluşturulan işlem hedefini kullan compute_name = "cpu-cluster-2026" # Ortam tanımları env_name = "sklearn-env-2026" env_docker_image = "mcr.microsoft.com/azureml/openmodel:20260101_v1" env = Environment(name=env_name, image=env_docker_image, conda_file="./requirements.txt") # requirements.txt önceki örnekten ml_client.environments.create_or_update(env) # Veri hazırlama betiği with open("data_prep.py", "w") as f: f.write(""" import argparse import pandas as pd import os def main(): parser = argparse.ArgumentParser() parser.add_argument('--raw_data', type=str) parser.add_argument('--processed_data', type=str) args = parser.parse_args() df = pd.read_csv(args.raw_data) df['feature3'] = df['feature1'] * df['feature2'] # Yeni özellik os.makedirs(args.processed_data, exist_ok=True) df.to_csv(os.path.join(args.processed_data, "processed_data.csv"), index=False) print("Veri hazırlığı tamamlandı.") if __name__ == '__main__': main() """) # Eğitim betiği (önceki train_script.py kullanılabilir) # Pipeline oluşturma @pipeline(name="ml_pipeline_2026", description="Uçtan uca ML boru hattı örneği 2026") def ml_training_pipeline(raw_data_input: Input): # Adım 1: Veri Hazırlığı data_prep_job = command( name="data_preparation", display_name="Veri Hazırlığı", code="./", command="python data_prep.py --raw_data ${{inputs.raw_data}} --processed_data ${{outputs.processed_data}}", inputs={ "raw_data": raw_data_input }, outputs={ "processed_data": Output(type="uri_folder") }, environment=f"azureml:{env_name}@latest", compute=compute_name, ) # Adım 2: Model Eğitimi train_job = command( name="model_training", display_name="Model Eğitimi", code="./", command="python train_script.py --training_data ${{inputs.training_data}} --model_output ${{outputs.model_output}}", inputs={ "training_data": data_prep_job.outputs.processed_data }, outputs={ "model_output": Output(type="uri_folder") }, environment=f"azureml:{env_name}@latest", compute=compute_name, ) return {"trained_model": train_job.outputs.model_output} # Pipeline'ı oluştur ve gönder pipeline_job = ml_training_pipeline(Input(type="uri_file", path=ml_client.data.get("sample-classification-data-2026", version="1").path)) pipeline_job = ml_client.jobs.create_or_update(pipeline_job, experiment_name="ml_pipeline_experiment_2026") print(f"Pipeline Job gönderildi: {pipeline_job.name}") ``` ### 2. Özel Ortamlar ve Docker Kullanımı Azure ML, model eğitimi ve dağıtımı için özel Docker görüntüleri kullanmanıza olanak tanır. Bu, bağımlılıkları sıkı bir şekilde yönetmenizi ve farklı çalışma zamanları arasında tutarlılık sağlamanızı sağlar. Özellikle karmaşık kütüphaneler veya özel donanım gereksinimleri olan modeller için kritik bir yaklaşımdır. ```dockerfile # Dockerfile_custom_env FROM mcr.microsoft.com/azureml/openmodel:20260101_v1 # Gerekli sistem paketlerini yükle RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ git \ && rm -rf /var/lib/apt/lists/* # Python bağımlılıklarını yükle COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Çalışma dizinini ayarla WORKDIR /app COPY . /app ``` Bu Dockerfile'ı kullanarak `Environment` nesnesi oluşturabilir ve pipeline'larınızda veya dağıtımlarınızda kullanabilirsiniz. ### 3. Otomatik Makine Öğrenmesi (AutoML) ile Model Geliştirme Azure AutoML, veri bilimcilerin ve geliştiricilerin, çeşitli algoritmaları ve hiperparametreleri otomatik olarak deneyerek en iyi performans gösteren modeli bulmasını sağlar. Bu, özellikle hızlı prototipleme ve benchmark oluşturma aşamalarında çok değerlidir. ```python # automl_example.py from azure.ai.ml import MLClient from azure.ai.ml.entities import Data from azure.ai.ml import automl from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # Daha önce oluşturulan veri varlığını referans al data_asset_name = "sample-classification-data-2026" data_input = ml_client.data.get(name=data_asset_name, version="1") # AutoML Job oluşturma classification_job = automl.classification( compute="cpu-cluster-2026", experiment_name="automl_classification_2026", training_data=data_input, target_column_name="target", primary_metric="accuracy", n_cross_validations=5, enable_early_stopping=True, timeout_minutes=30, set_limits=automl.limits.ClassificationLimits(max_trials=10, max_concurrent_trials=2), # 2026'ya uygun güncel algoritmalar ve ayarlar ) # AutoML Job'ı gönderme returned_job = ml_client.jobs.create_or_update(classification_job) print(f"AutoML Job gönderildi: {returned_job.name}") ``` ### 4. Dağıtık Eğitim ile Büyük Ölçekli Modeller Derin öğrenme modelleri genellikle çok büyük veri kümeleri ve karmaşık mimarilerle çalışır, bu da tek bir makinede eğitim süresini uzatır. Azure ML, dağıtık eğitim (Distributed Training) yetenekleri sunarak bu süreci hızlandırır. Örneğin, PyTorch veya TensorFlow ile multi-GPU veya multi-node eğitimleri kolayca yapılandırabilirsiniz. ```python # distributed_training_example.py # Bu örnek, dağıtık eğitim için PyTorch'un DistributedDataParallel (DDP) kullanımını simüle eder. # Gerçek bir dağıtık eğitim için, eğitim betiğinizin DDP'yi doğru şekilde kullanması gerekir. from azure.ai.ml import MLClient, command from azure.ai.ml.entities import Compute, Environment from azure.identity import DefaultAzureCredential import os # MLClient nesnesi subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID") resource_group = os.environ.get("AZURE_RESOURCE_GROUP", "ml-rg-2026") workspace_name = os.environ.get("AZURE_ML_WORKSPACE_NAME", "ml-workspace-2026") ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) # GPU işlem kümesi oluşturma (eğer yoksa) gpu_compute_name = "gpu-cluster-2026" try: gpu_compute = ml_client.compute.get(name=gpu_compute_name) print(f"Mevcut işlem hedefi kullanılıyor: {gpu_compute_name}") except Exception: print(f"'{gpu_compute_name}' işlem hedefi oluşturuluyor...") gpu_compute = Compute( name=gpu_compute_name, type="amlcompute", size="STANDARD_NC6", # GPU özellikli VM boyutu min_instances=0, max_instances=2, # Birden fazla düğüm için idle_time_before_scale_down=120, ) ml_client.compute.begin_create_or_update(gpu_compute).wait() print(f"'{gpu_compute_name}' işlem hedefi oluşturuldu.") # Eğitim betiği (örnek, gerçek DDP kodu içermeli) with open("distributed_train_script.py", "w") as f: f.write(""" import os import torch import torch.distributed as dist def main(): # dist.init_process_group(backend='nccl') # Gerçek DDP başlatma rank = int(os.environ.get('RANK', '0')) world_size = int(os.environ.get('WORLD_SIZE', '1')) print(f"Hello from rank {rank} out of {world_size} processes!") # Gerçek eğitim kodu burada yer alacak if __name__ == '__main__': main() """) # Dağıtık eğitim ortamı (PyTorch) env_pytorch = Environment( name="pytorch-gpu-env-2026", image="mcr.microsoft.com/azureml/openmodel:20260101_v1-gpu", # GPU destekli temel görüntü conda_file="./requirements_gpu.txt", ) # requirements_gpu.txt içinde torch, torchvision, torchaudio, azureml-mlflow vs. olmalı with open("requirements_gpu.txt", "w") as f: f.write("torch==2.0.0\ntorchvision==0.15.0\ntorchaudio==0.15.0\nazureml-mlflow==1.54.0\n") # 2026'ya uygun sürümler ml_client.environments.create_or_update(env_pytorch) # Dağıtık Command Job oluştur