Delen via


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

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

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 featureswaarden 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

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 of temporal_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:

  1. 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.

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

Wanneer de functie-materialisatietaak mislukt, volgt u deze stappen om de details van de taakfout te controleren:

  1. Navigeer naar de pagina van het functiearchief: https://ml.azure.com/featureStore/{your-feature-store-name}.
  2. Ga naar het feature set tabblad, selecteer de relevante functieset en navigeer naar de detailpagina van de onderdelenset.
  3. 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.
  4. Controleer in de detailweergave van de taak onder de Properties kaart de taakstatus en het foutbericht.
  5. U kunt ook naar het Outputs + logs tabblad gaan en vervolgens het stdout bestand zoeken uit het logs\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 Ownerbijvoorbeeld.

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)

Volgende stappen