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
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
iDatastore
załadujconfig.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
iworkspacefilestore
, odpowiednio. Magazynujeworkspaceblobstore
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. Magazynujeworkspacefilestore
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
- Strona Przegląd zawiera nazwę konta, nazwę udziału plików, kontener itp.
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:
- Kontener obiektów blob platformy Azure
- Udział plików platformy Azure
- Azure Data Lake Storage Generation 2
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:
Metoda | 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.