Veri depoları ile Azure'da depolama hizmetlerine bağlanma

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v1

Bu makalede Azure Machine Learning veri depoları ve Azure Machine Learning Python SDK'sı ile Azure'daki veri depolama hizmetlerine bağlanmayı öğrenin.

Veri depoları Azure'da depolama hizmetinize güvenli bir şekilde bağlanır ve kimlik doğrulama kimlik bilgileriniz veya özgün veri deponuzun bütünlüğü için riskten kaçınırlar. Veri deposu, bağlantı bilgilerini (abonelik kimliğiniz veya belirteç yetkilendirmesi gibi) çalışma alanıyla ilişkilendirilmiş Key Vault'ta depolar. Veri deposu ile depolama alanınıza güvenli bir şekilde erişebilirsiniz çünkü betiklerinizde bağlantı bilgilerini sabit kodlamaktan kaçınabilirsiniz. Bu Azure depolama çözümlerine bağlanan veri depoları oluşturabilirsiniz.

Veri depolarının Azure Machine Learning genel veri erişimi iş akışına nasıl uyduğunu açıklayan bilgiler için Verilere güvenli erişim makalesini ziyaret edin.

Kullanıcı arabirimiyle bir veri depolama kaynağına bağlanmayı öğrenmek için Studio kullanıcı arabirimiyle veri depolamaya bağlanma bölümünü ziyaret edin.

İpucu

Bu makalede, depolama hizmetinize kimlik bilgisi tabanlı kimlik doğrulaması kimlik bilgileriyle (örneğin, hizmet sorumlusu veya paylaşılan erişim imzası (SAS) belirteci) bağlanacağınız varsayılır. Kimlik bilgileri veri depolarına kayıtlıysa, çalışma alanı Okuyucusu rolüne sahip tüm kullanıcıların bu kimlik bilgilerini alabileceğini unutmayın. Daha fazla bilgi için Çalışma alanınızdaki rolleri yönetme makalesini ziyaret edin.

Kimlik tabanlı veri erişimi hakkında daha fazla bilgi için depolama hizmetlerine kimlik tabanlı veri erişimi (v1) adresini ziyaret edin.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin

  • Desteklenen depolama türüne sahip bir Azure depolama hesabı

  • Python için Azure Machine Learning SDK'sı

  • Azure Machine Learning çalışma alanı.

    Azure Machine Learning çalışma alanı oluşturma veya Python SDK'sı aracılığıyla mevcut çalışma alanını kullanma

    ve Datastore sınıfını içeri aktarın Workspace ve işleviyle from_config() birlikte dosyadan config.json abonelik bilgilerinizi yükleyin. Varsayılan olarak, işlev geçerli dizindeki JSON dosyasını arar, ancak ile from_config(path="your/file/path")dosyaya işaret etmek için bir yol parametresi de belirtebilirsiniz:

    import azureml.core
    from azureml.core import Workspace, Datastore
    
    ws = Workspace.from_config()
    

    Çalışma alanı oluşturma işlemi otomatik olarak bir Azure blob kapsayıcısını ve bir Azure dosya paylaşımını veri depoları olarak çalışma alanına kaydeder. Sırasıyla ve workspacefilestoreolarak adlandırılırlarworkspaceblobstore. Çalışma workspaceblobstore alanı yapıtlarını ve makine öğrenmesi deneme günlüklerinizi depolar. Varsayılan veri deposu görevi görür ve çalışma alanından silinemez. İşlem workspacefilestore örneği aracılığıyla yetkilendirilmiş not defterlerini ve R betiklerini depolar.

    Not

    Azure Machine Learning tasarımcısı, tasarımcı giriş sayfasında bir örnek açtığınızda otomatik olarak azureml_globaldatasets adlı bir veri deposu oluşturur. Bu veri deposu yalnızca örnek veri kümelerini içerir. Lütfen bu veri depolarını gizli veri erişimi için kullanmayın.

Desteklenen veri depolama hizmeti türleri

Veri depoları şu anda bu matriste listelenen depolama hizmetlerine bağlantı bilgilerinin depolanmasını desteklemektedir:

İpucu

Desteklenmeyen depolama çözümleri için (aşağıdaki tabloda listelenmeyenler) verilerinize bağlanırken ve verilerinizle çalışırken sorunlarla karşılaşabilirsiniz. Verilerinizi desteklenen bir Azure depolama çözümüne taşımanızı öneririz. Bu ek senaryolarda da yardımcı olabilir. Örneğin, ML denemeleri sırasında veri çıkış maliyetinin azaltılması.

Depolama türü Authentication type Azure Machine Learning Studio Azure Machine Learning Python SDK'sı Azure Machine Learning CLI Azure Machine Learning REST API VS Code
Azure Blob Depolama Hesap anahtarı
SAS belirteci
Azure Dosya Paylaşımı Hesap anahtarı
SAS belirteci
Azure Data Lake Storage 1. Nesil Hizmet sorumlusu
Azure Data Lake Storage 2. Nesil Hizmet sorumlusu
Azure SQL Veritabanı SQL kimlik doğrulaması
Hizmet sorumlusu
Azure PostgreSQL SQL kimlik doğrulaması
MySQL için Azure Veritabanı SQL kimlik doğrulaması ✓* ✓* ✓*
Databricks Dosya Sistemi Kimlik doğrulaması yok ✓** ✓ ** ✓**

Depolama yönergeleri

Azure Blob kapsayıcısı için veri deposu oluşturmanızı öneririz. Bloblar için hem standart hem de premium depolama kullanılabilir. Premium depolama daha pahalı olsa da daha yüksek aktarım hızı, özellikle büyük bir veri kümesine karşı eğitiyorsanız eğitim çalıştırmalarınızın hızını artırabilir. Depolama hesabı maliyetleri hakkında bilgi için Azure fiyatlandırma hesaplayıcısını ziyaret edin.

Azure Data Lake Storage 2. Nesil, Azure Blob depolamanın üzerine kurulmuştur. Kurumsal büyük veri analizi için tasarlanmıştır. blob depolama, Data Lake Storage 2. Nesil bir parçası olarak hiyerarşik ad alanına sahiptir. Hiyerarşik ad alanı, verimli veri erişimi için nesneleri/dosyaları dizin hiyerarşisinde düzenler.

Depolama erişimi ve izinleri

Azure depolama hizmetinize güvenli bir şekilde bağlandığınızdan emin olmak için Azure Machine Learning, ilgili veri depolama kapsayıcısına erişim izniniz olmasını gerektirir. Bu erişim, veri depolarını kaydetmek için kullanılan kimlik doğrulama kimlik bilgilerine bağlıdır.

Not

Bu kılavuz, kimlik tabanlı veri erişimiyle oluşturulan veri depoları için de geçerlidir.

Sanal ağ

Azure Machine Learning, güvenlik duvarının arkasında veya sanal ağ içinde bulunan bir depolama hesabıyla iletişim kurmak için ek yapılandırma adımları gerektirir. Güvenlik duvarının arkasında bulunan bir depolama hesabı için istemcinizin IP adresini Azure portalıyla izin verilenler listesine ekleyebilirsiniz.

Azure Machine Learning, sanal ağın dışındaki istemcilerden istek alabilir. Hizmetten veri isteyen varlığın güvenli olduğundan emin olmak ve çalışma alanınızda verilerin görüntülenmesini sağlamak için çalışma alanınızla birlikte özel bir uç nokta kullanın.

Python SDK kullanıcıları için: Eğitim betiğinizle bir işlem hedefinde verilerinize erişmek için işlem hedefini depolamanın aynı sanal ağı ve alt ağı içinde bulmanız gerekir. Aynı sanal ağda bir işlem örneği/kümesi kullanabilirsiniz.

Azure Machine Learning stüdyosu kullanıcıları için: Veri kümesi önizlemeleri, profiller ve otomatik makine öğrenmesi gibi çeşitli özellikler veri kümesinden veri okuma özelliğinden yararlanıyor. Bu özelliklerin sanal ağların arkasındaki depolamayla çalışması için, Azure Machine Learning'in sanal ağ dışından depolama hesabına erişmesine izin vermek için stüdyoda bir çalışma alanı yönetilen kimliği kullanın.

Not

Sanal ağın arkasındaki bir Azure SQL Veritabanı depolanan veriler için Azure Machine Learning'in depolama hesabına erişmesine izin vermek için Azure portalıyla genel erişimi reddet seçeneğini Hayır olarak ayarlayın.

Erişim doğrulaması

Uyarı

Depolama hesaplarına kiracılar arası erişim desteklenmez. Senaryonuz için kiracılar arası erişim gerekiyorsa, özel kod çözümüyle ilgili yardım için adresinden amldatasupport@microsoft.com Azure Machine Learning Veri Desteği ekip diğer adına ulaşın.

İlk veri deposu oluşturma ve kayıt işleminin bir parçası olarak Azure Machine Learning, temel depolama hizmetinin mevcut olduğunu ve kullanıcı tarafından sağlanan sorumlunun (kullanıcı adı, hizmet sorumlusu veya SAS belirteci) belirtilen depolama alanına erişebildiğini otomatik olarak doğrular.

Veri deposu oluşturulduktan sonra, bu doğrulama yalnızca veri deposu nesneleri her alındığında değil, temel depolama kapsayıcısına erişim gerektiren yöntemler için gerçekleştirilir. Örneğin, veri deponuzdan dosya indirmek istiyorsanız doğrulama gerçekleşir. Ancak, yalnızca varsayılan veri deponuzu değiştirmek istiyorsanız doğrulama gerçekleşmez.

Temel alınan depolama hizmetine erişiminizin kimliğini doğrulamak için hesap anahtarınızı, paylaşılan erişim imzalarınızı (SAS) belirteçlerini veya oluşturmak istediğiniz veri deposu türünün ilgili register_azure_*() yönteminde hizmet sorumlusunu sağlayabilirsiniz. Depolama türü matrisi , her veri deposu türüne karşılık gelen desteklenen kimlik doğrulama türlerini listeler.

Hesap anahtarı, SAS belirteci ve hizmet sorumlusu bilgilerini Azure portalınızda bulabilirsiniz.

  • Kimlik doğrulaması için bir hesap anahtarı veya SAS belirteci kullanmak için sol bölmede Depolama Hesapları'nı seçin ve kaydetmek istediğiniz depolama hesabını seçin

    • Genel Bakış sayfası hesap adı, dosya paylaşımı adı, kapsayıcı vb. bilgileri sağlar
      • Hesap anahtarları için Ayarlar bölmesinde Erişim anahtarları'na gidin
      • SAS belirteçleri için Ayarlar bölmesinde Paylaşılan erişim imzaları'na gidin
  • Kimlik doğrulaması için hizmet sorumlusu kullanmak için Uygulama kayıtları gidin ve kullanmak istediğiniz uygulamayı seçin

    • Seçili uygulamanın ilgili Genel Bakış sayfası, kiracı kimliği ve istemci kimliği gibi gerekli bilgileri içerir

Önemli

Bir Azure Depolama hesabına (hesap anahtarı veya SAS belirteci) yönelik erişim anahtarlarınızı değiştirmek için, yeni kimlik bilgilerini çalışma alanınızla ve buna bağlı veri depolarıyla eşitleyin. Daha fazla bilgi için güncelleştirilmiş kimlik bilgilerinizi eşitleme adresini ziyaret edin.

İzinler

Azure blob kapsayıcısı ve Azure Data Lake 2. Nesil depolama için kimlik doğrulama kimlik bilgilerinizin Depolama Blob Veri Okuyucusu erişimine sahip olduğundan emin olun. Daha fazla bilgi için Bkz . Depolama Blobu Veri Okuyucusu. Hesap SAS belirteci varsayılan olarak izin yok olarak ayarlıdır.

  • Veri okuma erişimi için kimlik doğrulama kimlik bilgilerinizin kapsayıcılar ve nesneler için en az liste ve okuma izinlerine sahip olması gerekir

  • Veri yazma erişimi için yazma ve ekleme izinleri de gerekir

Veri depoları oluşturma ve kaydetme

Bir Azure depolama çözümünün veri deposu olarak kaydedilmesi, bu veri depolarını otomatik olarak oluşturur ve belirli bir çalışma alanına kaydeder. Sanal ağ senaryoları ve gerekli kimlik doğrulama kimlik bilgilerinin nerede bulunacağı hakkında yönergeler için bu belgedeki depolama erişimi ve izinleri gözden geçirin.

Bu bölümde, bu depolama türleri için Python SDK'sı aracılığıyla veri deposu oluşturmayı ve kaydetmeyi açıklayan örnekler sunulmaktadır. Bu örneklerin gösterildiği parametreler, veri deposu oluşturmak ve kaydetmek için gereken parametrelerdir:

Desteklenen diğer depolama hizmetleri için veri depoları oluşturmak için ilgili register_azure_* yöntemlerin başvuru belgelerini ziyaret edin.

Kullanıcı arabirimiyle bir veri depolama kaynağına bağlanmayı öğrenmek için Azure Machine Learning stüdyosu ile verilere bağlanma bölümünü ziyaret edin.

Önemli

Aynı ada sahip bir veri deposunun kaydını kaldırıp yeniden kaydederseniz ve yeniden kayıt başarısız olursa, çalışma alanınız için Azure Key Vault geçici silme etkinleştirilmemiş olabilir. Çalışma alanınız tarafından oluşturulan anahtar kasası örneği için geçici silme varsayılan olarak etkindir, ancak mevcut bir anahtar kasasını kullandıysanız veya Ekim 2020'ye kadar bir çalışma alanı oluşturduysanız etkinleştirilmeyebilir. Geçici silmeyi etkinleştirmeyi açıklayan bilgiler için bkz . Var olan bir anahtar kasası için Geçici Silme'yi açma.

Not

Veri deposu adı yalnızca küçük harf, rakam ve alt çizgi içermelidir.

Azure blob kapsayıcısı

Azure blob kapsayıcısını veri deposu olarak kaydetmek için yöntemini kullanın register_azure_blob_container() .

Bu kod örneği, veri depolarını blob_datastore_name ws oluşturur ve çalışma alanına kaydeder. Veri deposu, depolama hesabındaki blob kapsayıcısına my-account-name erişmek my-container-name için sağlanan hesap erişim anahtarını kullanır. Sanal ağ senaryoları ve gerekli kimlik doğrulama kimlik bilgilerinin nerede bulunacağı hakkında yönergeler için depolama erişimi ve izinleri bölümünü gözden geçirin.

blob_datastore_name='azblobsdk' # Name of the datastore to workspace
container_name=os.getenv("BLOB_CONTAINER", "<my-container-name>") # Name of Azure blob container
account_name=os.getenv("BLOB_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("BLOB_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

blob_datastore = Datastore.register_azure_blob_container(workspace=ws, 
                                                         datastore_name=blob_datastore_name, 
                                                         container_name=container_name, 
                                                         account_name=account_name,
                                                         account_key=account_key)

Azure dosya paylaşımı

Azure dosya paylaşımını veri deposu olarak kaydetmek için yöntemini kullanın register_azure_file_share() .

Bu kod örneği, veri depolarını file_datastore_name ws oluşturur ve çalışma alanına kaydeder. Veri deposu, sağlanan hesap erişim anahtarıyla birlikte depolama hesabındaki my-account-name dosya paylaşımını kullanırmy-fileshare-name. Sanal ağ senaryoları ve gerekli kimlik doğrulama kimlik bilgilerinin nerede bulunacağı hakkında yönergeler için depolama erişimi ve izinleri bölümünü gözden geçirin.

file_datastore_name='azfilesharesdk' # Name of the datastore to workspace
file_share_name=os.getenv("FILE_SHARE_CONTAINER", "<my-fileshare-name>") # Name of Azure file share container
account_name=os.getenv("FILE_SHARE_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("FILE_SHARE_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

file_datastore = Datastore.register_azure_file_share(workspace=ws,
                                                     datastore_name=file_datastore_name, 
                                                     file_share_name=file_share_name, 
                                                     account_name=account_name,
                                                     account_key=account_key)

Azure Data Lake Storage 2. Nesil

Azure Data Lake Storage 2. Nesil (ADLS 2. Nesil) veri deposu için register_azure_data_lake_gen2() yöntemini kullanarakhizmet sorumlusu izinleriyle Azure Data Lake 2. Nesil depolamaya bağlı bir kimlik bilgisi veri deposu kaydedin.

Hizmet sorumlunuzu kullanmak için uygulamanızı kaydetmeniz ve Azure rol tabanlı erişim denetimi (Azure RBAC) veya erişim denetimi listeleri (ACL) aracılığıyla hizmet sorumlusu veri erişimi vermelisiniz. Daha fazla bilgi için ADLS 2. Nesil için erişim denetimi ayarlama adresini ziyaret edin.

Bu kod, veri depolarını adlsgen2_datastore_name ws oluşturur ve çalışma alanına kaydeder. Bu veri deposu, sağlanan hizmet sorumlusu kimlik bilgilerini kullanarak depolama hesabındaki dosya sistemine test account_name erişir. Sanal ağ senaryoları ve gerekli kimlik doğrulama kimlik bilgilerinin nerede bulunacağı hakkında yönergeler için depolama erişimi ve izinleri bölümünü gözden geçirin.

adlsgen2_datastore_name = 'adlsgen2datastore'

subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of ADLS account
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS account

account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<my_account_name>") # ADLS Gen2 account name
tenant_id=os.getenv("ADLSGEN2_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADLSGEN2_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal

adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
                                                             datastore_name=adlsgen2_datastore_name,
                                                             account_name=account_name, # ADLS Gen2 account name
                                                             filesystem='test', # ADLS Gen2 filesystem
                                                             tenant_id=tenant_id, # tenant id of service principal
                                                             client_id=client_id, # client id of service principal
                                                             client_secret=client_secret) # the secret of service principal

Diğer Azure araçlarıyla veri depoları oluşturma

Python SDK ve stüdyo ile veri deposu oluşturmaya ek olarak, Azure Resource Manager şablonlarıyla veya Azure Machine Learning VS Code uzantısıyla veri depoları da oluşturabilirsiniz.

Azure Resource Manager

veri depoları oluşturmak için adresinden https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices birkaç şablon kullanabilirsiniz. Bu şablonlar hakkında bilgi için Azure Machine Learning için bir çalışma alanı oluşturmak üzere Azure Resource Manager şablonu kullanma bölümünü ziyaret edin.

VS Code uzantısı

Azure Machine Learning VS Code uzantısıyla veri depoları oluşturma ve yönetme hakkında daha fazla bilgi için VS Code kaynak yönetimi nasıl yapılır kılavuzunu ziyaret edin.

Veri depolarınızdaki verileri kullanma

Veri deposu oluşturulduktan sonra verilerinizle etkileşim kurmak için bir Azure Machine Learning veri kümesi oluşturun. Veri kümesi, verilerinizi eğitim gibi makine öğrenmesi görevleri için uygun şekilde değerlendirilen bir tüketilebilir nesneye paketler. Veri kümeleriyle, bir işlem hedefinde model eğitimi için Azure depolama hizmetlerinden herhangi bir biçimdeki dosyaları indirebilir veya bağlayabilirsiniz. Ml modellerini veri kümeleriyle eğitmek hakkında daha fazla bilgi edinin.

Çalışma alanınızdan veri depoları alma

Geçerli çalışma alanında kayıtlı belirli bir veri deposu almak için sınıfındaki get() Datastore statik yöntemi kullanın:

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

Belirli bir çalışma alanına kayıtlı veri depolarının listesini almak için çalışma alanı nesnesinde datastores özelliğini kullanın:

# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
    print(name, datastore.datastore_type)

Bu kod örneği, çalışma alanının varsayılan veri deposunun nasıl alınacaklarını gösterir:

datastore = ws.get_default_datastore()

Bu kod örneğiyle varsayılan veri depolarını da değiştirebilirsiniz. Yalnızca SDK bu özelliği destekler:

 ws.set_default_datastore(new_default_datastore)

Puanlama sırasında verilere erişme

Azure Machine Learning, modellerinizi puanlama için kullanmanın çeşitli yollarını sağlar. Bu yöntemlerden bazıları veri depolarına erişim sağlamaz. Aşağıdaki tabloda, puanlama sırasında veri depolarına erişime izin veren yöntemler açıklanmaktadır:

Metot Veri deposu erişimi Açıklama
Toplu tahmin Büyük miktarlardaki veriler üzerinde zaman uyumsuz olarak tahminde bulunun.
Web hizmeti   Modelleri web hizmeti olarak dağıtma.

SDK veri depolarına erişim sağlamadığında, verilere erişmek için ilgili Azure SDK ile özel kod oluşturabilirsiniz. Örneğin, Python için Azure Depolama SDK'sı istemci kitaplığı bloblarda veya dosyalarda depolanan verilere erişebilir.

Verileri desteklenen Azure depolama çözümlerine taşıma

Azure Machine Learning,

  • Azure Blob Depolama
  • Azure Dosyaları
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL Veritabanı
  • PostgreSQL için Azure Veritabanı

Desteklenmeyen depolama kullanıyorsanız, verilerinizi desteklenen Azure depolama çözümlerine taşımak için Azure Data Factory'yi ve bu adımları kullanmanızı öneririz. Verileri desteklenen depolama alanına taşımak, makine öğrenmesi denemeleri sırasında veri çıkış maliyetlerinden tasarruf etmenizi sağlayabilir.

Azure Data Factory, ek ücret ödemeden 80'den fazla önceden oluşturulmuş bağlayıcı ile verimli ve dayanıklı veri aktarımı sağlar. Bu bağlayıcılar Azure veri hizmetlerini, şirket içi veri kaynaklarını, Amazon S3 ve Redshift'i ve Google BigQuery'yi içerir.

Sonraki adımlar