Problemen met beheerde functieopslag oplossen
In dit artikel leert u hoe u veelvoorkomende problemen kunt oplossen die kunnen optreden met het beheerde functiearchief in Azure Machine Learning.
Problemen gevonden bij het maken en bijwerken van een functiearchief
Deze problemen kunnen optreden wanneer u een functiearchief maakt of bijwerkt:
- ARM-beperkingsfout
- Probleem met gedupliceerde Materialization Identity ARM-id
- RBAC-machtigingsfouten
- Oudere versies van
azure-mgmt-authorization
het pakket werken niet metAzureMLOnBehalfOfCredential
ARM-beperkingsfout
Symptoom
Het maken of bijwerken van het onderdeelarchief mislukt. De fout kan er als volgt uitzien:
{
"error": {
"code": "TooManyRequests",
"message": "The request is being throttled as the limit has been reached for operation type - 'Write'. ..",
"details": [
{
"code": "TooManyRequests",
"target": "Microsoft.MachineLearningServices/workspaces",
"message": "..."
}
]
}
}
Oplossing
Voer de bewerking voor het maken/bijwerken van het functiearchief op een later tijdstip uit. De implementatie vindt plaats in meerdere stappen, dus de tweede poging kan mislukken omdat sommige van de resources al bestaan. Verwijder deze resources en hervat de taak.
Problemen met dubbele ARM-id’s voor de materialisatie-identiteit
Zodra het functiearchief is bijgewerkt om materialisatie voor de eerste keer in te schakelen, kunnen sommige latere updates in het functiearchief deze fout veroorzaken.
Symptoom
Wanneer het functiearchief wordt bijgewerkt met behulp van de SDK/CLI, mislukt de update met dit foutbericht:
Fout:
{
"error":{
"code": "InvalidRequestContent",
"message": "The request content contains duplicate JSON property names creating ambiguity in paths 'identity.userAssignedIdentities['/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your-uai}']'. Please update the request content to eliminate duplicates and try again."
}
}
Oplossing
Het probleem omvat de ARM-id van de materialization_identity
ARM-id-indeling.
Vanuit de Azure-gebruikersinterface of SDK maakt de ARM-id van de door de gebruiker toegewezen beheerde identiteit gebruik van kleine letters resourcegroups
. Zie dit voorbeeld:
- (A): /subscriptions/{sub-id}/resourcegroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your-uai}
Wanneer het functiearchief de door de gebruiker toegewezen beheerde identiteit als materialization_identity gebruikt, wordt de ARM-id genormaliseerd en opgeslagen, met resourceGroups
. Zie dit voorbeeld:
- (B): /subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your-uai}
In de updateaanvraag kunt u een door de gebruiker toegewezen identiteit gebruiken die overeenkomt met de materialisatie-identiteit om het functiearchief bij te werken. Terwijl u de ARM-id in indeling (A) gebruikt, mislukt de update en wordt het eerdere foutbericht geretourneerd wanneer u die beheerde identiteit voor dat doel gebruikt.
Als u het probleem wilt oplossen, vervangt u de tekenreeks resourcegroups
door resourceGroups
de ARM-id van de door de gebruiker toegewezen beheerde identiteit. Voer vervolgens de update van het onderdelenarchief opnieuw uit.
RBAC-machtigingsfouten
Voor het maken van een functiearchief heeft de gebruiker de Contributor
en User Access Administrator
rollen nodig. Een aangepaste rol die betrekking heeft op dezelfde set rollen van de acties, werkt. Een superset van deze twee rollen van de acties werkt ook.
Symptoom
Als de gebruiker niet over de vereiste rollen beschikt, mislukt de implementatie. De foutreactie kan er als volgt uitzien:
{
"error": {
"code": "AuthorizationFailed",
"message": "The client '{client_id}' with object id '{object_id}' does not have authorization to perform action '{action_name}' over scope '{scope}' or the scope is invalid. If access was recently granted, please refresh your credentials."
}
}
Oplossing
Verdeel de Contributor
en User Access Administrator
rollen aan de gebruiker in de resourcegroep waar het functiearchief wordt gemaakt. Geef vervolgens de gebruiker de opdracht om de implementatie opnieuw uit te voeren.
Ga voor meer informatie naar de machtigingen die vereist zijn voor de feature store materialization managed identity
rolresource .
Oudere versies van het pakket azure-mgmt-authorization werken niet met AzureMLOnBehalfOfCredential
Symptoom
Wanneer u in de opslagplaats azureml-examples het setup_storage_uai
script gebruikt dat is opgegeven in de map featurestore_sample , mislukt het script met dit foutbericht:
AttributeError: 'AzureMLOnBehalfOfCredential' object has no attribute 'signed_session'
Oplossing:
Controleer de versie van het geïnstalleerde azure-mgmt-authorization
pakket en controleer of u een recente versie gebruikt, ten minste 3.0.0 of hoger. Een oudere versie, bijvoorbeeld 0.61.0, werkt niet met AzureMLOnBehalfOfCredential
.
Fouten bij het maken van functiesetspecificaties
- Ongeldig schema in functiesetspecificatie
- Kan de transformatieklasse niet vinden
- FileNotFoundError in codemap
Ongeldig schema in functiesetspecificatie
Voordat u een functieset registreert in het functiearchief, definieert u de functiesetspecificatie lokaal en voert u deze uit <feature_set_spec>.to_spark_dataframe()
om deze te valideren.
Symptoom
Wanneer een gebruiker wordt uitgevoerd <feature_set_spec>.to_spark_dataframe()
, kunnen er verschillende schemavalidatiefouten optreden als het dataframeschema van de onderdelenset niet overeenkomt met de definitie van de functiesetspecificatie.
Voorbeeld:
- Foutbericht:
azure.ai.ml.exceptions.ValidationException: Schema check errors, timestamp column: timestamp is not in output dataframe
- Foutbericht:
Exception: Schema check errors, no index column: accountID in output dataframe
- Foutbericht:
ValidationException: Schema check errors, feature column: transaction_7d_count has data type: ColumnType.long, expected: ColumnType.string
Oplossing
Controleer de fout in de schemavalidatie en werk de definitie van de functiesetspecificatie dienovereenkomstig bij voor zowel de kolomnamen als typen. Voorbeeld:
- de
source.timestamp_column.name
eigenschap bijwerken om de namen van de tijdstempelkolommen correct te definiëren - de
index_columns
eigenschap bijwerken om de indexkolommen correct te definiëren - de
features
eigenschap bijwerken om de namen en typen van de functiekolom correct te definiëren - als de functiebrongegevens van het type CSV zijn, controleert u of de CSV-bestanden worden gegenereerd met kolomkoppen
Voer vervolgens opnieuw uit <feature_set_spec>.to_spark_dataframe()
om te controleren of de validatie is geslaagd.
Als de SDK de specificatie van de functieset definieert, wordt de infer_schema
optie ook aanbevolen als de voorkeursmethode voor het automatisch invullen van de waarden in plaats van handmatig in de features
waarden te typen. De timestamp_column
en index columns
kunnen niet automatisch worden ingevuld.
Ga voor meer informatie naar de schemaresource functiesetspecificatie .
Kan de transformatieklasse niet vinden
Symptoom
Wanneer een gebruiker wordt uitgevoerd <feature_set_spec>.to_spark_dataframe()
, wordt deze fout geretourneerd: AttributeError: module '<...>' has no attribute '<...>'
Voorbeeld:
AttributeError: module '7780d27aa8364270b6b61fed2a43b749.transaction_transform' has no attribute 'TransactionFeatureTransformer1'
Oplossing
De functietransformatieklasse heeft naar verwachting de definitie in een Python-bestand onder de hoofdmap van de codemap. De codemap kan andere bestanden of submappen bevatten.
Stel de waarde van de feature_transformation_code.transformation_class
eigenschap in op <py file name of the transformation class>.<transformation class name>
.
Als de codemap er bijvoorbeeld zo uitziet
code
/
└my_transformation_class.py
en het bestand my_transformation_class.py definieert de MyFeatureTransformer
klasse, stelt u in
feature_transformation_code.transformation_class
om te zijn my_transformation_class.MyFeatureTransformer
FileNotFoundError in codemap
Symptoom
Deze fout kan optreden als de YAML van de onderdelenset handmatig wordt gemaakt en de SDK de onderdelenset niet genereert. De opdracht
runs <feature_set_spec>.to_spark_dataframe()
retourneert een fout
FileNotFoundError: [Errno 2] No such file or directory: ....
Oplossing
Controleer de codemap. Dit moet een submap zijn onder de map specificatie van de functieset. Stel in de functiesetspecificatie feature_transformation_code.path
in als een relatief pad naar de map met onderdelensetspecificaties. Voorbeeld:
feature set spec folder
/
├-code/
├my_transformer.py
└my_orther_folder
└.FeatureSetSpec.yaml
In dit voorbeeld moet de feature_transformation_code.path
eigenschap in de YAML zijn ./code
Notitie
Wanneer u de create_feature_set_spec-functie gebruikt azureml-featurestore
om een FeatureSetSpec Python-object te maken, kan elke lokale map als waarde feature_transformation_code.path
worden gebruikt. Wanneer het Object FeatureSetSpec wordt gedumpt om een spec-yaml voor een functieset in een doelmap te vormen, wordt het codepad gekopieerd naar de doelmap en wordt de feature_transformation_code.path
eigenschap bijgewerkt in de spec yaml.
CRUD-fouten in functieset
Get van onderdelenset mislukt vanwege ongeldige FeatureStoreEntity
Symptoom
Wanneer u de CRUD-client van het functiearchief gebruikt om een functieset op te halen, fs_client.feature_sets.get(name, version)
bijvoorbeeld '' , krijgt u mogelijk deze fout:
Traceback (most recent call last):
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/operations/_feature_store_entity_operations.py", line 116, in get
return FeatureStoreEntity._from_rest_object(feature_store_entity_version_resource)
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/entities/_feature_store_entity/feature_store_entity.py", line 93, in _from_rest_object
featurestoreEntity = FeatureStoreEntity(
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/_utils/_experimental.py", line 42, in wrapped
return func(*args, **kwargs)
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/entities/_feature_store_entity/feature_store_entity.py", line 67, in __init__
raise ValidationException(
azure.ai.ml.exceptions.ValidationException: Stage must be Development, Production, or Archived, found None
Deze fout kan ook optreden in de FeatureStore-materialisatietaak, waarbij de taak mislukt met dezelfde fouttracering.
Oplossing
Een notebooksessie starten met de nieuwe versie van SDKS
- Als azure-ai-ml wordt gebruikt, moet u bijwerken naar
azure-ai-ml==1.8.0
. - Als deze gebruikmaakt van de dataplane-SDK voor het functiearchief, werkt u deze bij naar
azureml-featurestore== 0.1.0b2
.
Werk in de notebooksessie de entiteit feature store bij om de eigenschap ervan in te stellen stage
, zoals wordt weergegeven in dit voorbeeld:
from azure.ai.ml.entities import DataColumn, DataColumnType
account_entity_config = FeatureStoreEntity(
name="account",
version="1",
index_columns=[DataColumn(name="accountID", type=DataColumnType.STRING)],
stage="Development",
description="This entity represents user account index key accountID.",
tags={"data_typ": "nonPII"},
)
poller = fs_client.feature_store_entities.begin_create_or_update(account_entity_config)
print(poller.result())
Wanneer u de FeatureStoreEntity definieert, stelt u de eigenschappen in die overeenkomen met de eigenschappen die worden gebruikt toen deze werd gemaakt. Het enige verschil is het toevoegen van de stage
eigenschap.
Zodra de begin_create_or_update()
aanroep is geretourneerd, moet de volgende feature_sets.get()
aanroep en de volgende materialisatietaak slagen.
Taak- en queryfouten ophalen van functies
- Fouten bij het ophalen van specificatie van functies
- Bestand feature_retrieval_spec.yaml niet gevonden bij het gebruik van een model als invoer voor de taak voor het ophalen van functies
- Observatiegegevens worden niet samengevoegd met functiewaarden
- Gebruiker of beheerde identiteit heeft geen juiste RBAC-machtiging voor het functiearchief
- Gebruiker of beheerde identiteit heeft geen juiste RBAC-machtiging om te lezen uit de bronopslag of offlineopslag
- Trainingstaak kan geen gegevens lezen die zijn gegenereerd door het onderdeel voor het ophalen van functies in de build
generate_feature_retrieval_spec()
mislukt vanwege het gebruik van de specificatie van de lokale functieset- De
get_offline_features()
query duurt lang
Wanneer een taak voor het ophalen van een functie mislukt, controleert u de foutdetails. Ga naar de pagina met uitvoeringsdetails, selecteer het tabblad Uitvoer en logboeken en bekijk het bestand logs/azureml/driver/stdout .
Als de gebruiker de get_offline_feature()
query uitvoert in het notebook, wordt de fout rechtstreeks weergegeven in celuitvoer.
Fouten bij het ophalen van specificatie van functies
Symptoom
In de query/taak voor het ophalen van functies worden de volgende fouten weergegeven:
- Ongeldige functie
code: "UserError"
mesasge: "Feature '<some name>' not found in this featureset."
- Ongeldige URI voor het functiearchief:
message: "the Resource 'Microsoft.MachineLearningServices/workspaces/<name>' under resource group '<>>resource group name>'->' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix",
code: "ResourceNotFound"
- Ongeldige functieset:
code: "UserError"
message: "Featureset with name: <name >and version: <version> not found."
Oplossing
Controleer de inhoud in de feature_retrieval_spec.yaml
taak die wordt gebruikt. Controleer of alle namen van het functiearchief
- URI
- naam/versie van onderdelenset
- gelaatstrek
geldig zijn en dat ze aanwezig zijn in het functiearchief.
Als u functies in een functiearchief wilt selecteren en het YAML-bestand voor het ophalen van functies wilt genereren, wordt het gebruik van de functie van het hulpprogramma aanbevolen.
Dit codefragment maakt gebruik van de generate_feature_retrieval_spec
hulpprogrammafunctie.
from azureml.featurestore import FeatureStoreClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
featurestore = FeatureStoreClient(
credential = AzureMLOnBehalfOfCredential(),
subscription_id = featurestore_subscription_id,
resource_group_name = featurestore_resource_group_name,
name = featurestore_name
)
transactions_featureset = featurestore.feature_sets.get(name="transactions", version = "1")
features = [
transactions_featureset.get_feature('transaction_amount_7d_sum'),
transactions_featureset.get_feature('transaction_amount_3d_sum')
]
feature_retrieval_spec_folder = "./project/fraud_model/feature_retrieval_spec"
featurestore.generate_feature_retrieval_spec(feature_retrieval_spec_folder, features)
Bestand feature_retrieval_spec.yaml niet gevonden bij het gebruik van een model als invoer voor de taak voor het ophalen van functies
Symptoom
Wanneer u een geregistreerd model gebruikt als taakinvoer voor het ophalen van functies, mislukt de taak met deze fout:
ValueError: Failed with visit error: Failed with execution error: error in streaming from input data sources
VisitError(ExecutionError(StreamError(NotFound)))
=> Failed with execution error: error in streaming from input data sources
ExecutionError(StreamError(NotFound)); Not able to find path: azureml://subscriptions/{sub_id}/resourcegroups/{rg}/workspaces/{ws}/datastores/workspaceblobstore/paths/LocalUpload/{guid}/feature_retrieval_spec.yaml
Oplossing:
Wanneer u een model opgeeft als invoer voor de stap voor het ophalen van functies, verwacht het model dat het YAML-bestand voor het ophalen van de specificatie wordt gevonden onder de map met modelartefacten. De taak mislukt als dat bestand ontbreekt.
Als u het probleem wilt oplossen, moet u het bestand inpakken feature_retrieval_spec.yaml
in de hoofdmap van de map met modelartefacten voordat u het model registreert.
Observatiegegevens worden niet samengevoegd met functiewaarden
Symptoom
Nadat gebruikers de query/taak voor het ophalen van functies hebben uitgevoerd, krijgen de uitvoergegevens geen functiewaarden. Een gebruiker voert bijvoorbeeld de taak voor het ophalen van functies uit om de transaction_amount_3d_avg
en transaction_amount_7d_avg
functies op te halen, met de volgende resultaten:
transactionID | accountID | tijdstempel | is_fraud | transaction_amount_3d_avg | transaction_amount_7d_avg |
---|---|---|---|---|---|
83870774-7A98-43B... | A1055520444618950 | 2023-02-28 04:34:27 | 0 | null | null |
25144265-F68B-4FD... | A1055520444618950 | 2023-02-28 10:44:30 | 0 | null | null |
8899ED8C-B295-43F... | A1055520444812380 | 2023-03-06 00:36:30 | 0 | null | null |
Oplossing
Bij het ophalen van een functie wordt een join-query naar een bepaald tijdstip uitgevoerd. Als het joinresultaat leeg is, kunt u de volgende mogelijke oplossingen proberen:
- Breid het
temporal_join_lookback
bereik uit in de definitie van de functiesetspecificatie of verwijder het tijdelijk. Hierdoor kan de punt-in-time-join verder (of oneindig) terugkijken naar het verleden, vóór het tijdstempel van de observatiegebeurtenis, om de functiewaarden te vinden. - Als
source.source_delay
deze optie ook is ingesteld in de definitie van de functiesetspecificatie, controleert u oftemporal_join_lookback > source.source_delay
.
Als geen van deze oplossingen werkt, haalt u de functieset op uit het functiearchief en voert u deze uit <feature_set>.to_spark_dataframe()
om de kolommen en tijdstempels van de functieindex handmatig te inspecteren. De fout kan optreden omdat:
- de indexwaarden in de observatiegegevens bestaan niet in het gegevensframe van de functieset
- geen functiewaarde, met een tijdstempelwaarde vóór de observatietijdstempel, bestaat.
In dergelijke gevallen moet u, als de functie offline materialisatie heeft ingeschakeld, mogelijk meer functiegegevens invullen.
De gebruiker of beheerde identiteit heeft geen juiste RBAC-machtiging voor het functiearchief
Symptoom:
De taak/query voor het ophalen van functies mislukt met dit foutbericht in het bestand logs/azureml/driver/stdout :
Traceback (most recent call last):
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/_restclient/v2022_12_01_preview/operations/_workspaces_operations.py", line 633, in get
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
azure.core.exceptions.HttpResponseError: (AuthorizationFailed) The client 'XXXX' with object id 'XXXX' does not have authorization to perform action 'Microsoft.MachineLearningServices/workspaces/read' over scope '/subscriptions/XXXX/resourceGroups/XXXX/providers/Microsoft.MachineLearningServices/workspaces/XXXX' or the scope is invalid. If access was recently granted, please refresh your credentials.
Code: AuthorizationFailed
Oplossing:
Als de functie voor het ophalen van functies gebruikmaakt van een beheerde identiteit, wijst u de
AzureML Data Scientist
rol in het functiearchief toe aan de identiteit.Als het probleem zich voordoet wanneer
- de gebruiker code uitvoert in een Azure Machine Learning Spark-notebook
- dat notebook gebruikmaakt van de eigen identiteit van de gebruiker om toegang te krijgen tot de Azure Machine Learning-service
wijs de AzureML Data Scientist
rol in het functiearchief toe aan de Microsoft Entra-identiteit van de gebruiker.
Azure Machine Learning Data Scientist
is een aanbevolen rol. Gebruikers kunnen hun eigen aangepaste rol maken met de volgende acties
- Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action
- Microsoft.MachineLearningServices/workspaces/featuresets/read
- Microsoft.MachineLearningServices/workspaces/read
Ga voor meer informatie over de RBAC-installatie naar de resource Toegang tot het beheerde functiearchief beheren.
Gebruiker of beheerde identiteit heeft geen juiste RBAC-machtiging om te lezen uit de bronopslag of offlineopslag
Symptoom
De taak/query voor het ophalen van functies mislukt met het volgende foutbericht in het bestand logs/azureml/driver/stdout :
An error occurred while calling o1025.parquet.
: java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, GET, https://{storage}.dfs.core.windows.net/test?upn=false&resource=filesystem&maxResults=5000&directory=datasources&timeout=90&recursive=false, AuthorizationPermissionMismatch, "This request is not authorized to perform this operation using this permission. RequestId:63013315-e01f-005e-577b-7c63b8000000 Time:2023-05-01T22:20:51.1064935Z"
at org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.checkException(AzureBlobFileSystem.java:1203)
at org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.listStatus(AzureBlobFileSystem.java:408)
at org.apache.hadoop.fs.Globber.listStatus(Globber.java:128)
at org.apache.hadoop.fs.Globber.doGlob(Globber.java:291)
at org.apache.hadoop.fs.Globber.glob(Globber.java:202)
at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:2124)
Oplossing:
- Als de functie voor het ophalen van functies gebruikmaakt van een beheerde identiteit, wijst u de
Storage Blob Data Reader
rol toe aan zowel de bronopslag als de offlineopslagopslag aan de identiteit. - Deze fout treedt op wanneer het notebook de identiteit van de gebruiker gebruikt om toegang te krijgen tot de Azure Machine Learning-service om de query uit te voeren. Als u de fout wilt oplossen, wijst u de rol toe aan de
Storage Blob Data Reader
identiteit van de gebruiker in de bronopslag en het offlineopslagaccount.
Storage Blob Data Reader
is de minimale aanbevolen toegangsvereiste. Gebruikers kunnen ook rollen toewijzen , Storage Blob Data Contributor
bijvoorbeeld of Storage Blob Data Owner
- met meer bevoegdheden.
Trainingstaak kan geen gegevens lezen die zijn gegenereerd door het onderdeel voor het ophalen van functies in de build
Symptoom
Een trainingstaak mislukt met het foutbericht dat de trainingsgegevens niet bestaan, de indeling is onjuist of er is een parserfout:
FileNotFoundError: [Errno 2] No such file or directory
- indeling is niet juist.
ParserError:
Oplossing
Het ingebouwde onderdeel voor het ophalen van de functie heeft één uitvoer, output_data
. De uitvoergegevens zijn een uri_folder-gegevensasset. Deze mapstructuur heeft altijd de volgende mapstructuur:
<training data folder>
/
├── data/
│ ├── xxxxx.parquet
│ └── xxxxx.parquet
└── feature_retrieval_spec.yaml
De uitvoergegevens hebben altijd een parquet-indeling. Werk het trainingsscript bij om te lezen uit de submap 'data' en de gegevens te lezen als Parquet.
generate_feature_retrieval_spec()
mislukt vanwege het gebruik van de specificatie van de lokale functieset
Symptoom:
Met deze Python-code wordt een specificatie voor het ophalen van functies gegenereerd voor een bepaalde lijst met functies:
featurestore.generate_feature_retrieval_spec(feature_retrieval_spec_folder, features)
Als de lijst met functies functies bevat die zijn gedefinieerd door een specificatie van een lokale functieset, mislukt het generate_feature_retrieval_spec()
volgende foutbericht:
AttributeError: 'FeatureSetSpec' object has no attribute 'id'
Oplossing:
Een specificatie voor het ophalen van functies kan alleen worden gegenereerd met behulp van functiesets die zijn geregistreerd in de Feature Store. Ga als volgt te werk om het probleem op te lossen:
- De specificatie van de lokale onderdelenset registreren als een functieset in het functiearchief
- De geregistreerde functieset ophalen
- Functielijsten opnieuw maken met behulp van alleen functies uit geregistreerde onderdelensets
- De specificatie voor het ophalen van functies genereren met behulp van de nieuwe lijst met functies
De get_offline_features()
query duurt lang
Symptoom:
Het get_offline_features
duurt te lang om trainingsgegevens te genereren met behulp van een paar functies uit het functiearchief.
Oplossingen:
Controleer deze configuraties:
- Controleer of elke functieset die in de query wordt gebruikt, is
temporal_join_lookback
ingesteld in de specificatie van de onderdelenset. Stel de waarde ervan in op een kleinere waarde. - Als de grootte en het tijdstempelvenster in het observatiedataframe groot zijn, configureert u de notebooksessie (of de taak) om de grootte (geheugen en kern) van het stuurprogramma en de uitvoerder te vergroten. Verhoog bovendien het aantal uitvoerders.
Fouten met functie materialisatietaken
- Ongeldige configuratie van offlinearchief
- Materialization Identity heeft niet de juiste RBAC-machtiging voor het functiearchief
- Materialization Identity heeft geen juiste RBAC-machtiging om te lezen uit de opslag
- Materialisatie-identiteit heeft geen RBAC-machtiging om gegevens naar het offlinearchief te schrijven
- Resultaten van het uitvoeren van streamingtaken naar een notebook resulteert in een fout
- Ongeldige Spark-configuratie
Wanneer de functie-materialisatietaak mislukt, volgt u deze stappen om de details van de taakfout te controleren:
- Navigeer naar de pagina van het functiearchief: https://ml.azure.com/featureStore/{your-feature-store-name}.
- Ga naar het
feature set
tabblad, selecteer de relevante functieset en navigeer naar de detailpagina van de onderdelenset. - Selecteer op de detailpagina van de functieset het
Materialization jobs
tabblad en selecteer vervolgens de mislukte taak om deze te openen in de weergave taakdetails. - Controleer in de detailweergave van de taak onder de
Properties
kaart de taakstatus en het foutbericht. - U kunt ook naar het
Outputs + logs
tabblad gaan en vervolgens hetstdout
bestand zoeken uit hetlogs\azureml\driver\stdout
bestand.
Nadat u een fix hebt toegepast, kunt u handmatig een backfill-materialisatietaak activeren om te controleren of de oplossing werkt.
Ongeldige configuratie van offlinearchief
Symptoom
De materialisatietaak mislukt met dit foutbericht in het logs/azureml/driver/stdout
bestand:
Caused by: Status code: -1 error code: null error message: InvalidAbfsRestOperationExceptionjava.net.UnknownHostException: adlgen23.dfs.core.windows.net
java.util.concurrent.ExecutionException: Operation failed: "The specified resource name contains invalid characters.", 400, HEAD, https://{storage}.dfs.core.windows.net/{container-name}/{fs-id}/transactions/1/_delta_log?upn=false&action=getStatus&timeout=90
Oplossing
Gebruik de SDK om het offlineopslagdoel te controleren dat is gedefinieerd in het functiearchief:
from azure.ai.ml import MLClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
fs_client = MLClient(AzureMLOnBehalfOfCredential(), featurestore_subscription_id, featurestore_resource_group_name, featurestore_name)
featurestore = fs_client.feature_stores.get(name=featurestore_name)
featurestore.offline_store.target
U kunt ook het offlineopslagdoel controleren op de overzichtspagina van de gebruikersinterface van het functiearchief. Controleer of zowel de opslag als de container bestaan en of het doel deze indeling heeft:
/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{storage}/blobServices/default/containers/{container-name}
Materialization Identity heeft geen juiste RBAC-machtiging voor het functiearchief
Symptoom:
De materialisatietaak mislukt met dit foutbericht in de logboeken/azureml/driver/stdout-bestand :
Traceback (most recent call last):
File "/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/azure/ai/ml/_restclient/v2022_12_01_preview/operations/_workspaces_operations.py", line 633, in get
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
azure.core.exceptions.HttpResponseError: (AuthorizationFailed) The client 'XXXX' with object id 'XXXX' does not have authorization to perform action 'Microsoft.MachineLearningServices/workspaces/read' over scope '/subscriptions/XXXX/resourceGroups/XXXX/providers/Microsoft.MachineLearningServices/workspaces/XXXX' or the scope is invalid. If access was recently granted, please refresh your credentials.
Code: AuthorizationFailed
Oplossing:
Wijs de rol Azure Machine Learning Data Scientist
in het functiearchief toe aan de materialisatie-identiteit (een door de gebruiker toegewezen beheerde identiteit) van het functiearchief.
Azure Machine Learning Data Scientist
is een aanbevolen rol. U kunt uw eigen aangepaste rol maken met deze acties:
- Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action
- Microsoft.MachineLearningServices/workspaces/featuresets/read
- Microsoft.MachineLearningServices/workspaces/read
Ga voor meer informatie naar de machtigingen die vereist zijn voor de feature store materialization managed identity
rolresource .
Materialisatie-identiteit heeft geen juiste RBAC-machtiging om te lezen uit de opslag
Symptoom
De materialisatietaak mislukt met dit foutbericht in de logboeken/azureml/driver/stdout-bestand :
An error occurred while calling o1025.parquet.
: java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, GET, https://{storage}.dfs.core.windows.net/test?upn=false&resource=filesystem&maxResults=5000&directory=datasources&timeout=90&recursive=false, AuthorizationPermissionMismatch, "This request is not authorized to perform this operation using this permission. RequestId:63013315-e01f-005e-577b-7c63b8000000 Time:2023-05-01T22:20:51.1064935Z"
at org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.checkException(AzureBlobFileSystem.java:1203)
at org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.listStatus(AzureBlobFileSystem.java:408)
at org.apache.hadoop.fs.Globber.listStatus(Globber.java:128)
at org.apache.hadoop.fs.Globber.doGlob(Globber.java:291)
at org.apache.hadoop.fs.Globber.glob(Globber.java:202)
at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:2124)
Oplossing:
Wijs de Storage Blob Data Reader
rol in de bronopslag toe aan de materialisatie-identiteit (een door de gebruiker toegewezen beheerde identiteit) van het functiearchief.
Storage Blob Data Reader
is de minimale aanbevolen toegangsvereiste. U kunt ook rollen met meer bevoegdheden toewijzen, Storage Blob Data Contributor
bijvoorbeeld.Storage Blob Data Owner
Ga naar de machtigingen die vereist zijn voor de rolresource voor meer informatie over de feature store materialization managed identity
RBAC-configuratie.
Materialisatie-identiteit heeft geen juiste RBAC-machtiging om gegevens naar het offlinearchief te schrijven
Symptoom
De materialisatietaak mislukt met dit foutbericht in de logboeken/azureml/driver/stdout-bestand :
An error occurred while calling o1162.load.
: java.util.concurrent.ExecutionException: java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, HEAD, https://featuresotrestorage1.dfs.core.windows.net/offlinestore/fs_xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_fsname/transactions/1/_delta_log?upn=false&action=getStatus&timeout=90
at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:135)
at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2410)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2380)
at com.google.common.cache.LocalCache$S
Oplossing
Wijs de Storage Blob Data Reader
rol in de bronopslag toe aan de materialisatie-identiteit (een door de gebruiker toegewezen beheerde identiteit) van het functiearchief.
Storage Blob Data Contributor
is de minimale aanbevolen toegangsvereiste. U kunt ook rollen met meer bevoegdheden toewijzen, Storage Blob Data Owner
bijvoorbeeld.
Ga naar de machtigingen die vereist zijn voor de rolresource voor meer informatie over de feature store materialization managed identity
RBAC-configuratie.
Uitvoer van streamingtaak naar een notebook resulteert in een fout
Symptoom:
Wanneer u de CRUD-client van het functiearchief gebruikt om resultaten van de materialisatietaak naar een notebook te streamen met behulp van, mislukt fs_client.jobs.stream("<job_id>")
de SDK-aanroep met een fout
HttpResponseError: (UserError) A job was found, but it is not supported in this API version and cannot be accessed.
Code: UserError
Message: A job was found, but it is not supported in this API version and cannot be accessed.
Oplossing:
Wanneer de materialisatietaak wordt gemaakt (bijvoorbeeld door een backfill-aanroep), kan het enkele seconden duren voordat de taak correct is geïnitialiseerd. Voer de jobs.stream()
opdracht een paar seconden later opnieuw uit. Dit zou het probleem moeten oplossen.
Ongeldige Spark-configuratie
Symptoom:
Een materialisatietaak mislukt met dit foutbericht:
Synapse job submission failed due to invalid spark configuration request
{
"Message":"[..] Either the cores or memory of the driver, executors exceeded the SparkPool Node Size.\nRequested Driver Cores:[4]\nRequested Driver Memory:[36g]\nRequested Executor Cores:[4]\nRequested Executor Memory:[36g]\nSpark Pool Node Size:[small]\nSpark Pool Node Memory:[28]\nSpark Pool Node Cores:[4]"
}
Oplossing:
Werk de materialization_settings.spark_configuration{}
onderdelenset bij. Zorg ervoor dat deze parameters zowel geheugengroottebedragen als een totaal aantal kernwaarden gebruiken, die beide kleiner zijn dan het exemplaartype, zoals gedefinieerd door materialization_settings.resource
, biedt:
spark.driver.cores
spark.driver.memory
spark.executor.cores
spark.executor.memory
Bijvoorbeeld, bijvoorbeeld type standard_e8s_v3, deze Spark-configuratie is een van de geldige opties:
transactions_fset_config.materialization_settings = MaterializationSettings(
offline_enabled=True,
resource = MaterializationComputeResource(instance_type="standard_e8s_v3"),
spark_configuration = {
"spark.driver.cores": 4,
"spark.driver.memory": "36g",
"spark.executor.cores": 4,
"spark.executor.memory": "36g",
"spark.executor.instances": 2
},
schedule = None,
)
fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)