Udostępnij za pośrednictwem


Nawiązywanie połączenia z usługami magazynu na platformie Azure przy użyciu magazynów danych

DOTYCZY: Zestaw SDK języka Python w wersji 1

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 1

Z tego artykułu dowiesz się, jak nawiązać połączenie z usługami magazynu danych na platformie Azure przy użyciu magazynów danych usługi Azure Machine Learning i zestawu SDK języka Python usługi Azure Machine Learning.

Magazyny danych bezpiecznie łączą się z usługą magazynu na platformie Azure i unikają ryzyka związanego z poświadczeniami uwierzytelniania lub integralności oryginalnego magazynu danych. Magazyn danych przechowuje informacje o połączeniu — na przykład identyfikator subskrypcji lub autoryzację tokenu — w usłudze Key Vault skojarzonej z obszarem roboczym. Dzięki magazynowi danych można bezpiecznie uzyskać dostęp do magazynu, ponieważ można uniknąć twardych informacji o połączeniu ze skryptami. Magazyny danych, które łączą się z tymi rozwiązaniami usługi Azure Storage.

Aby uzyskać informacje opisujące sposób dopasowania magazynów danych do ogólnego przepływu pracy dostępu do danych usługi Azure Machine Learning, odwiedź artykuł Bezpieczny dostęp do danych .

Aby dowiedzieć się, jak nawiązać połączenie z zasobem magazynu danych za pomocą interfejsu użytkownika, odwiedź stronę Nawiązywanie połączenia z magazynem danych za pomocą interfejsu użytkownika programu Studio.

Napiwek

W tym artykule założono, że połączysz się z usługą magazynu przy użyciu poświadczeń uwierzytelniania opartych na poświadczeniach — na przykład jednostki usługi lub tokenu sygnatury dostępu współdzielonego (SAS). Należy pamiętać, że jeśli poświadczenia są zarejestrowane w magazynach danych, wszyscy użytkownicy z rolą Czytelnik obszaru roboczego mogą pobrać te poświadczenia. Aby uzyskać więcej informacji, odwiedź stronę Zarządzanie rolami w obszarze roboczym.

Aby uzyskać więcej informacji na temat dostępu do danych opartych na tożsamościach, odwiedź stronę Dostęp oparty na tożsamościach do usług magazynu (wersja 1).

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Learning

  • Konto usługi Azure Storage z obsługiwanym typem magazynu

  • Zestaw SDK usługi Azure Machine Learning dla języka Python

  • Obszar roboczy usługi Azure Machine Learning.

    Tworzenie obszaru roboczego usługi Azure Machine Learning lub używanie istniejącego obszaru roboczego za pomocą zestawu SDK języka Python

    Zaimportuj klasę Workspace i Datastore załaduj config.json informacje o subskrypcji z pliku za pomocą from_config() funkcji . Domyślnie funkcja szuka pliku JSON w bieżącym katalogu, ale można również określić parametr ścieżki, aby wskazać plik za pomocą from_config(path="your/file/path")polecenia :

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

    Tworzenie obszaru roboczego automatycznie rejestruje kontener obiektów blob platformy Azure i udział plików platformy Azure, jako magazyny danych, do obszaru roboczego. Są one nazwane workspaceblobstore i workspacefilestore, odpowiednio. Magazynuje workspaceblobstore artefakty obszaru roboczego i dzienniki eksperymentów uczenia maszynowego. Służy on jako domyślny magazyn danych i nie można go usunąć z obszaru roboczego. Magazynuje workspacefilestore notesy i skrypty języka R autoryzowane za pośrednictwem wystąpienia obliczeniowego.

    Uwaga

    Projektant usługi Azure Machine Learning automatycznie tworzy magazyn danych o nazwie azureml_globaldatasets po otwarciu przykładu na stronie głównej projektanta. Ten magazyn danych zawiera tylko przykładowe zestawy danych. Nie używaj tego magazynu danych do uzyskiwania dostępu do poufnych danych.

Obsługiwane typy usług magazynu danych

Magazyny danych obsługują obecnie przechowywanie informacji o połączeniu z usługami magazynu wymienionymi w tej macierzy:

Napiwek

W przypadku nieobsługiwanych rozwiązań magazynu (wymienionych w poniższej tabeli) mogą wystąpić problemy podczas nawiązywania połączenia z danymi i pracy z nimi. Zalecamy przeniesienie danych do obsługiwanego rozwiązania usługi Azure Storage. Może to również pomóc w dodatkowych scenariuszach — na przykład zmniejszenie kosztów ruchu wychodzącego danych podczas eksperymentów uczenia maszynowego.

Typ magazynu Typ uwierzytelniania Azure Machine Learning Studio Zestaw SDK języka Python usługi Azure Machine Learning Interfejs wiersza polecenia usługi Azure Machine Learning Azure Machine Learning REST API VS Code
Azure Blob Storage Klucz konta
Token SAS
Udział plików platformy Azure Klucz konta
Token SAS
Azure Data Lake Storage Gen 1 Jednostka usługi
Azure Data Lake Storage Gen 2 Jednostka usługi
Azure SQL Database Uwierzytelnianie SQL
Jednostka usługi
Azure PostgreSQL Uwierzytelnianie SQL
Azure Database for MySQL Uwierzytelnianie SQL ✓* ✓* ✓*
Databricks File System (System plików usługi Databricks) Bez uwierzytelniania ✓** ✓ ** ✓**
  • Usługa MySQL jest obsługiwana tylko w przypadku potoku DataTransferStep.
  • Usługa Databricks jest obsługiwana tylko w przypadku potoku DatabricksStep.

Wskazówki dotyczące magazynu

Zalecamy utworzenie magazynu danych dla kontenera obiektów blob platformy Azure. Magazyn w warstwie Standardowa i Premium jest dostępny dla obiektów blob. Mimo że magazyn w warstwie Premium jest droższy, szybkość przepływności może poprawić szybkość przebiegów trenowania, zwłaszcza w przypadku trenowania na dużym zestawie danych. Aby uzyskać informacje na temat kosztów konta magazynu, odwiedź kalkulator cen platformy Azure.

Usługa Azure Data Lake Storage Gen2 jest oparta na usłudze Azure Blob Storage. Jest ona przeznaczona do analizy danych big data przedsiębiorstwa. W ramach usługi Data Lake Storage Gen2 magazyn obiektów blob zawiera hierarchiczną przestrzeń nazw. Hierarchiczna przestrzeń nazw organizuje obiekty/pliki w hierarchię katalogów w celu zapewnienia efektywnego dostępu do danych.

Dostęp do magazynu i uprawnienia

Aby zapewnić bezpieczne połączenie z usługą Azure Storage, usługa Azure Machine Learning wymaga uprawnień dostępu do odpowiedniego kontenera magazynu danych. Ten dostęp zależy od poświadczeń uwierzytelniania używanych do rejestrowania magazynu danych.

Uwaga

Te wskazówki dotyczą również magazynów danych utworzonych przy użyciu dostępu do danych opartych na tożsamościach.

Sieć wirtualna

Aby komunikować się z kontem magazynu znajdującym się za zaporą lub w sieci wirtualnej, usługa Azure Machine Learning wymaga wykonania dodatkowych kroków konfiguracji. W przypadku konta magazynu znajdującego się za zaporą możesz dodać adres IP klienta do listy dozwolonych w witrynie Azure Portal.

Usługa Azure Machine Learning może odbierać żądania od klientów spoza sieci wirtualnej. Aby zapewnić bezpieczeństwo jednostki żądającej danych z usługi i włączyć wyświetlanie danych w obszarze roboczym, użyj prywatnego punktu końcowego z obszarem roboczym.

W przypadku użytkowników zestawu SDK języka Python: aby uzyskać dostęp do danych na docelowym obiekcie obliczeniowym za pomocą skryptu trenowania, musisz zlokalizować docelowy obiekt obliczeniowy w tej samej sieci wirtualnej i podsieci magazynu. Możesz użyć wystąpienia obliczeniowego/klastra w tej samej sieci wirtualnej.

W przypadku użytkowników usługi Azure Machine Learning Studio: kilka funkcji polega na możliwości odczytywania danych z zestawu danych — na przykład podglądów zestawów danych, profilów i zautomatyzowanego uczenia maszynowego. Aby te funkcje działały z magazynem za sieciami wirtualnymi, użyj tożsamości zarządzanej obszaru roboczego w programie Studio , aby umożliwić usłudze Azure Machine Learning dostęp do konta magazynu spoza sieci wirtualnej.

Uwaga

W przypadku danych przechowywanych w usłudze Azure SQL Database za siecią wirtualną ustaw opcję Odmów publicznego dostępu do opcji Nie w witrynie Azure Portal, aby zezwolić usłudze Azure Machine Learning na dostęp do konta magazynu.

Sprawdzanie poprawności dostępu

Ostrzeżenie

Dostęp między dzierżawami do kont magazynu nie jest obsługiwany. Jeśli twój scenariusz wymaga dostępu między dzierżawami, skontaktuj się z aliasem zespołu pomocy technicznej ds. danych usługi Azure Machine Learning, amldatasupport@microsoft.com aby uzyskać pomoc dotyczącą niestandardowego rozwiązania kodu.

W ramach początkowego procesu tworzenia i rejestracji magazynu danych usługa Azure Machine Learning automatycznie weryfikuje, czy podstawowa usługa magazynu istnieje i czy jednostka użytkownika (nazwa użytkownika, jednostka usługi lub token SAS) może uzyskać dostęp do określonego magazynu.

Po utworzeniu magazynu danych ta walidacja jest wykonywana tylko dla metod wymagających dostępu do bazowego kontenera magazynu, a nie za każdym razem, gdy są pobierane obiekty magazynu danych. Na przykład sprawdzanie poprawności odbywa się, jeśli chcesz pobrać pliki z magazynu danych. Jeśli jednak chcesz zmienić domyślny magazyn danych, walidacja nie zostanie wykonana.

Aby uwierzytelnić dostęp do bazowej usługi magazynu, możesz podać klucz konta, tokeny sygnatur dostępu współdzielonego (SAS) lub jednostkę usługi w odpowiedniej register_azure_*() metodzie typu magazynu danych, który chcesz utworzyć. Macierz typów magazynu zawiera listę obsługiwanych typów uwierzytelniania odpowiadających każdemu typowi magazynu danych.

Klucz konta, token SAS i informacje o jednostce usługi można znaleźć w witrynie Azure Portal.

  • Aby użyć klucza konta lub tokenu SAS do uwierzytelniania, wybierz pozycję Konta magazynu w okienku po lewej stronie i wybierz konto magazynu, które chcesz zarejestrować

    • Strona Przegląd zawiera nazwę konta, nazwę udziału plików, kontener itp.
      • W przypadku kluczy konta przejdź do pozycji Klucze dostępu w okienku Ustawienia
      • W przypadku tokenów SAS przejdź do pozycji Sygnatury dostępu współdzielonego w okienku Ustawienia
  • Aby użyć jednostki usługi do uwierzytelniania, przejdź do Rejestracje aplikacji i wybierz aplikację, której chcesz użyć

    • Odpowiednia strona Przegląd wybranej aplikacji zawiera wymagane informacje — na przykład identyfikator dzierżawy i identyfikator klienta

Ważne

Aby zmienić klucze dostępu dla konta usługi Azure Storage (klucz konta lub token SAS), zsynchronizuj nowe poświadczenia z obszarem roboczym i połączonymi z nim magazynami danych. Aby uzyskać więcej informacji, odwiedź stronę synchronizowania zaktualizowanych poświadczeń.

Uprawnienia

W przypadku kontenera obiektów blob platformy Azure i magazynu usługi Azure Data Lake Gen 2 upewnij się, że poświadczenia uwierzytelniania mają dostęp do czytnika danych obiektu blob usługi Storage. Aby uzyskać więcej informacji, odwiedź stronę Czytelnik danych obiektu blob usługi Storage. Token SAS konta domyślnie nie ma uprawnień.

  • W przypadku dostępu do odczytu danych poświadczenia uwierzytelniania muszą mieć co najmniej uprawnienia listy i odczytu dla kontenerów i obiektów

  • Dostęp do zapisu danych wymaga również uprawnień do zapisu i dodawania

Tworzenie i rejestrowanie magazynów danych

Rejestracja rozwiązania usługi Azure Storage jako magazynu danych automatycznie tworzy i rejestruje ten magazyn danych w określonym obszarze roboczym. Zapoznaj się z uprawnieniami i dostępem do magazynu w tym dokumencie, aby uzyskać wskazówki dotyczące scenariuszy sieci wirtualnej i miejsca znalezienia wymaganych poświadczeń uwierzytelniania.

Ta sekcja zawiera przykłady opisujące sposób tworzenia i rejestrowania magazynu danych za pomocą zestawu SDK języka Python dla tych typów magazynów. Przedstawione w tych przykładach parametry są wymaganymi parametrami do utworzenia i zarejestrowania magazynu danych:

Aby utworzyć magazyny danych dla innych obsługiwanych usług magazynu, odwiedź dokumentację referencyjną odpowiednich register_azure_* metod.

Aby dowiedzieć się, jak nawiązać połączenie z zasobem magazynu danych za pomocą interfejsu użytkownika, odwiedź stronę Nawiązywanie połączenia z danymi za pomocą usługi Azure Machine Learning Studio.

Ważne

Jeśli wyrejestrujesz i ponownie zarejestrujesz magazyn danych o tej samej nazwie, a ponowna rejestracja zakończy się niepowodzeniem, usługa Azure Key Vault dla obszaru roboczego może nie mieć włączonego usuwania nietrwałego. Domyślnie usuwanie nietrwałe jest włączone dla wystąpienia magazynu kluczy utworzonego przez obszar roboczy, ale może nie być włączone, jeśli użyto istniejącego magazynu kluczy lub utworzono obszar roboczy przed październikiem 2020 r. Aby uzyskać informacje opisujące sposób włączania usuwania nietrwałego, zobacz Włączanie usuwania nietrwałego dla istniejącego magazynu kluczy.

Uwaga

Nazwa magazynu danych powinna zawierać tylko małe litery, cyfry i podkreślenia.

Kontener obiektów Blob platformy Azure

Aby zarejestrować kontener obiektów blob platformy Azure jako magazyn danych, użyj register_azure_blob_container() metody .

Ten przykładowy kod tworzy i rejestruje blob_datastore_name magazyn danych w obszarze roboczym ws . Magazyn danych używa podanego klucza dostępu do konta w celu uzyskania dostępu do kontenera my-container-name obiektów blob na koncie my-account-name magazynu. Zapoznaj się z sekcją Dostęp do magazynu i uprawnienia , aby uzyskać wskazówki dotyczące scenariuszy sieci wirtualnej oraz miejsca znajdowania wymaganych poświadczeń uwierzytelniania.

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)

Udział plików platformy Azure

Aby zarejestrować udział plików platformy Azure jako magazyn danych, użyj register_azure_file_share() metody .

Ten przykładowy kod tworzy i rejestruje file_datastore_name magazyn danych w obszarze roboczym ws . Magazyn danych używa my-fileshare-name udziału plików na my-account-name koncie magazynu z podanym kluczem dostępu do konta. Zapoznaj się z sekcją Dostęp do magazynu i uprawnienia , aby uzyskać wskazówki dotyczące scenariuszy sieci wirtualnej oraz miejsca znajdowania wymaganych poświadczeń uwierzytelniania.

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 Generation 2

W przypadku magazynu danych usługi Azure Data Lake Storage Generation 2 (ADLS Gen 2) użyjmetody register_azure_data_lake_gen2(), aby zarejestrować magazyn danych poświadczeń połączony z magazynem usługi Azure Data Lake Gen 2 z uprawnieniami jednostki usługi.

Aby korzystać z jednostki usługi, musisz zarejestrować aplikację i udzielić dostępu do danych jednostki usługi za pośrednictwem kontroli dostępu opartej na rolach (Azure RBAC) lub list kontroli dostępu (ACL). Aby uzyskać więcej informacji, odwiedź stronę Kontrola dostępu skonfigurowana dla usługi ADLS Gen 2.

Ten kod tworzy i rejestruje adlsgen2_datastore_name magazyn danych w obszarze roboczym ws . Ten magazyn danych uzyskuje dostęp do systemu test plików na account_name koncie magazynu przy użyciu podanych poświadczeń jednostki usługi. Zapoznaj się z sekcją Dotyczącą dostępu do magazynu i uprawnień , aby uzyskać wskazówki dotyczące scenariuszy sieci wirtualnej oraz miejsca znalezienia wymaganych poświadczeń uwierzytelniania.

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

Tworzenie magazynów danych przy użyciu innych narzędzi platformy Azure

Oprócz tworzenia magazynu danych za pomocą zestawu SDK języka Python i programu Studio można również tworzyć magazyny danych za pomocą szablonów usługi Azure Resource Manager lub rozszerzenia programu VS Code usługi Azure Machine Learning.

Azure Resource Manager

Do tworzenia magazynów danych można użyć kilku szablonów https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices . Aby uzyskać informacje na temat tych szablonów, odwiedź stronę Tworzenie obszaru roboczego dla usługi Azure Machine Learning przy użyciu szablonu usługi Azure Resource Manager.

Rozszerzenie programu VS Code

Aby uzyskać więcej informacji na temat tworzenia magazynów danych i zarządzania nimi za pomocą rozszerzenia programu VS Code usługi Azure Machine Learning, zapoznaj się z przewodnikiem z instrukcjami dotyczącymi zarządzania zasobami programu VS Code.

Używanie danych w magazynach danych

Po utworzeniu magazynu danych utwórz zestaw danych usługi Azure Machine Learning w celu interakcji z danymi. Zestaw danych pakuje dane do leniwie ocenianego obiektu eksploatacyjnego na potrzeby zadań uczenia maszynowego, takich jak trenowanie. Zestawy danych umożliwiają pobieranie lub instalowanie plików dowolnego formatu z usług Azure Storage na potrzeby trenowania modelu na docelowym obiekcie obliczeniowym. Dowiedz się więcej na temat trenowania modeli uczenia maszynowego przy użyciu zestawów danych.

Pobieranie magazynów danych z obszaru roboczego

Aby uzyskać określony magazyn danych zarejestrowany w bieżącym obszarze roboczym, użyj get() metody statycznej w Datastore klasie:

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

Aby uzyskać listę magazynów danych zarejestrowanych w danym obszarze roboczym, użyj datastores właściwości w obiekcie obszaru roboczego:

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

W tym przykładzie kodu pokazano, jak uzyskać domyślny magazyn danych obszaru roboczego:

datastore = ws.get_default_datastore()

Możesz również zmienić domyślny magazyn danych przy użyciu tego przykładu kodu. Tylko zestaw SDK obsługuje tę możliwość:

 ws.set_default_datastore(new_default_datastore)

Uzyskiwanie dostępu do danych podczas oceniania

Usługa Azure Machine Learning oferuje kilka sposobów używania modeli do oceniania. Niektóre z tych metod nie zapewniają dostępu do magazynów danych. W poniższej tabeli opisano metody zezwalania na dostęp do magazynów danych podczas oceniania:

Method Dostęp do magazynu danych opis
Przewidywanie wsadowe Asynchronicznie twórz prognozy dotyczące dużych ilości danych.
Usługa sieci Web   Wdrażanie modeli jako usługi internetowej.

Jeśli zestaw SDK nie zapewnia dostępu do magazynów danych, może być możliwe utworzenie niestandardowego kodu przy użyciu odpowiedniego zestawu Azure SDK w celu uzyskania dostępu do danych. Na przykład zestaw SDK usługi Azure Storage dla biblioteki klienta języka Python może uzyskiwać dostęp do danych przechowywanych w obiektach blob lub plikach.

Przenoszenie danych do obsługiwanych rozwiązań usługi Azure Storage

Usługa Azure Machine Learning obsługuje uzyskiwanie dostępu do danych z

  • Azure Blob Storage
  • Azure Files
  • Usługa Azure Data Lake Storage 1. generacji
  • Usługa Azure Data Lake Storage 2. generacji
  • Azure SQL Database
  • Azure Database for PostgreSQL

Jeśli używasz nieobsługiwanego magazynu, zalecamy użycie usługi Azure Data Factory i tych kroków w celu przeniesienia danych do obsługiwanych rozwiązań usługi Azure Storage. Przenoszenie danych do obsługiwanego magazynu może pomóc w oszczędzeniu kosztów ruchu wychodzącego danych podczas eksperymentów uczenia maszynowego.

Usługa Azure Data Factory zapewnia wydajny i odporny transfer danych z ponad 80 wstępnie utworzonymi łącznikami bez dodatkowych kosztów. Te łączniki obejmują usługi danych platformy Azure, lokalne źródła danych, usługi Amazon S3 i Redshift oraz usługę Google BigQuery.

Następne kroki