Felsöka hanterad funktionsbutik
I den här artikeln får du lära dig hur du felsöker vanliga problem som kan uppstå med hanterad funktionsbutik i Azure Machine Learning.
Problem med att skapa och uppdatera ett funktionsarkiv
Du kan stöta på följande problem när du skapar eller uppdaterar ett funktionsarkiv:
- ARM-begränsningsfel
- Problem med duplicerad materialiseringsidentitets-ARM-ID
- RBAC-behörighetsfel
- Äldre versioner av
azure-mgmt-authorization
paketet fungerar inte medAzureMLOnBehalfOfCredential
ARM-begränsningsfel
Symptom
Det går inte att skapa eller uppdatera funktionsarkivet. Felet kan se ut så här:
{
"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": "..."
}
]
}
}
Lösning
Kör åtgärden skapa/uppdatera funktionsarkivet vid ett senare tillfälle. Distributionen sker i flera steg, så det andra försöket kan misslyckas eftersom vissa resurser redan finns. Ta bort dessa resurser och återuppta jobbet.
ARM-ID-problem vid duplicerad materialiseringsidentitet
När funktionsarkivet har uppdaterats för att aktivera materialisering för första gången kan vissa senare uppdateringar i funktionsarkivet resultera i det här felet.
Symptom
När funktionsarkivet uppdateras med hjälp av SDK/CLI misslyckas uppdateringen med det här felmeddelandet:
Fel:
{
"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."
}
}
Lösning
Problemet gäller ARM-ID för materialization_identity
ARM-ID-formatet.
Från Azure UI eller SDK använder ARM-ID:t för den användartilldelade hanterade identiteten gemener resourcegroups
. Se det här exemplet:
- (A): /subscriptions/{sub-id}/resourcegroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your-uai}
När funktionsarkivet använder den användartilldelade hanterade identiteten som sin materialization_identity normaliseras och lagras arm-ID:t med resourceGroups
. Se det här exemplet:
- (B): /subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your-uai}
I uppdateringsbegäran kan du använda en användartilldelad identitet som matchar materialiseringsidentiteten för att uppdatera funktionsarkivet. När du använder ARM-ID:t i format (A) misslyckas uppdateringen när du använder den hanterade identiteten för det ändamålet och returnerar det tidigare felmeddelandet.
Åtgärda problemet genom att ersätta strängen resourcegroups
med resourceGroups
i arm-ID:t för den användartilldelade hanterade identiteten. Kör sedan funktionslagringsuppdateringen igen.
RBAC-behörighetsfel
För att skapa ett funktionslager behöver användaren rollerna Contributor
och User Access Administrator
. En anpassad roll som täcker samma uppsättning roller för åtgärderna fungerar. En superuppsättning av de två rollerna för åtgärderna fungerar också.
Symptom
Om användaren inte har de roller som krävs misslyckas distributionen. Felsvaret kan se ut så här:
{
"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."
}
}
Lösning
Bevilja rollerna Contributor
och User Access Administrator
till användaren i resursgruppen där funktionsarkivet skapas. Instruera sedan användaren att köra distributionen igen.
Mer information finns i Behörigheter som krävs för rollresursenfeature store materialization managed identity
.
Äldre versioner av azure-mgmt-authorization-paketet fungerar inte med AzureMLOnBehalfOfCredential
Symptom
I azureml-examples-lagringsplatsen, När du använder skriptet setup_storage_uai
som anges i mappen featurestore_sample , misslyckas skriptet med det här felmeddelandet:
AttributeError: 'AzureMLOnBehalfOfCredential' object has no attribute 'signed_session'
Lösning:
Kontrollera versionen av det installerade azure-mgmt-authorization
paketet och kontrollera att du använder en ny version, minst 3.0.0 eller senare. En äldre version – till exempel 0.61.0 – fungerar inte med AzureMLOnBehalfOfCredential
.
Skapa fel för funktionsuppsättningsspecifikation
- Ogiltigt schema i funktionsuppsättningsspecifikationen
- Det går inte att hitta transformeringsklassen
- FileNotFoundError i kodmappen
Ogiltigt schema i funktionsuppsättningsspecifikationen
Innan du registrerar en funktionsuppsättning i funktionsarkivet definierar du funktionsuppsättningsspecifikationen lokalt och kör <feature_set_spec>.to_spark_dataframe()
för att verifiera den.
Symptom
När en användare kör <feature_set_spec>.to_spark_dataframe()
kan olika schemavalideringsfel inträffa om funktionsuppsättningens dataramschema inte överensstämmer med funktionsuppsättningens specifikationsdefinition.
Till exempel:
- Felmeddelande:
azure.ai.ml.exceptions.ValidationException: Schema check errors, timestamp column: timestamp is not in output dataframe
- Felmeddelande:
Exception: Schema check errors, no index column: accountID in output dataframe
- Felmeddelande:
ValidationException: Schema check errors, feature column: transaction_7d_count has data type: ColumnType.long, expected: ColumnType.string
Lösning
Kontrollera fel vid schemavalidering och uppdatera funktionsuppsättningens specifikationsdefinition i enlighet med detta för både kolumnnamnen och typerna. Till exempel:
- uppdatera egenskapen
source.timestamp_column.name
för att korrekt definiera tidsstämpelkolumnnamnen - uppdatera egenskapen
index_columns
för att korrekt definiera indexkolumnerna features
uppdatera egenskapen för att korrekt definiera namn och typer av funktionskolumner- Om funktionskällans data är av typen csv kontrollerar du att CSV-filerna genereras med kolumnrubriker
Kör <feature_set_spec>.to_spark_dataframe()
sedan igen för att kontrollera om verifieringen har godkänts.
Om SDK:t definierar funktionsuppsättningsspecifikationen infer_schema
i stället för att skriva in värdena manuellt rekommenderas även alternativet som det bästa sättet att fylla features
i automatiskt . Och timestamp_column
index columns
kan inte fyllas automatiskt.
Mer information finns i schemaresursen Funktionsuppsättningsspecifikation.
Det går inte att hitta transformeringsklassen
Symptom
När en användare kör <feature_set_spec>.to_spark_dataframe()
returneras det här felet: AttributeError: module '<...>' has no attribute '<...>'
Till exempel:
AttributeError: module '7780d27aa8364270b6b61fed2a43b749.transaction_transform' has no attribute 'TransactionFeatureTransformer1'
Lösning
Funktionstransformeringsklassen förväntas ha sin definition i en Python-fil under roten i kodmappen. Kodmappen kan ha andra filer eller undermappar.
Ange värdet för feature_transformation_code.transformation_class
egenskapen till <py file name of the transformation class>.<transformation class name>
.
Om kodmappen till exempel ser ut så här
code
/
└my_transformation_class.py
och filen my_transformation_class.py definierar MyFeatureTransformer
klassen, anger
feature_transformation_code.transformation_class
som ska my_transformation_class.MyFeatureTransformer
FileNotFoundError i kodmappen
Symptom
Det här felet kan inträffa om funktionsuppsättningsspecifikationen YAML skapas manuellt och SDK:t inte genererar funktionsuppsättningen. Kommandot
runs <feature_set_spec>.to_spark_dataframe()
returnerar fel
FileNotFoundError: [Errno 2] No such file or directory: ....
Lösning
Kontrollera kodmappen. Det bör vara en undermapp under funktionsuppsättningens specifikationsmapp. I funktionsuppsättningsspecifikationen anger du feature_transformation_code.path
som en relativ sökväg till funktionsuppsättningens specifikationsmapp. Till exempel:
feature set spec folder
/
kod/
│ my_transformer.py
│ └my_orther_folder
└└-- funktionersetSpec.yaml
I det här exemplet feature_transformation_code.path
ska egenskapen i YAML vara ./code
Kommentar
När du använder funktionen create_feature_set_spec i azureml-featurestore
för att skapa ett FeatureSetSpec python-objekt kan det ta vilken lokal mapp som helst som feature_transformation_code.path
värde. När Objektet FeatureSetSpec dumpas för att bilda en funktionsuppsättningsspecifikation i en målmapp kopieras kodsökvägen till målmappen feature_transformation_code.path
och egenskapen uppdateras i specifikationen yaml.
Crud-fel för funktionsuppsättning
Funktionsuppsättningen GET misslyckas på grund av ogiltig FeatureStoreEntity
Symptom
När du använder CRUD-klienten för funktionsarkivet för att hämta en funktionsuppsättning – till exempel fs_client.feature_sets.get(name, version)
"" – kan det här felet uppstå:
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
Det här felet kan också inträffa i materialiseringsjobbet i FeatureStore, där jobbet misslyckas med samma felspårning tillbaka.
Lösning
Starta en notebook-session med den nya versionen av SDKS
- Om den använder azure-ai-ml uppdaterar du till
azure-ai-ml==1.8.0
. - Om den använder funktionslagringens dataplans-SDK uppdaterar du den till
azureml-featurestore== 0.1.0b2
.
I notebook-sessionen uppdaterar du funktionsarkivets entitet för att ange dess stage
egenskap, som du ser i det här exemplet:
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())
När du definierar FeatureStoreEntity anger du egenskaperna så att de matchar de egenskaper som användes när den skapades. Den enda skillnaden är att lägga till egenskapen stage
.
När anropet begin_create_or_update()
har returnerats ska nästa feature_sets.get()
anrop och nästa materialiseringsjobb lyckas.
Funktionshämtningsjobb och frågefel
- Lösningsfel för funktionshämtningsspecifikation
- Filen feature_retrieval_spec.yaml hittades inte när du använder en modell som indata till funktionshämtningsjobbet
- Observationsdata är inte kopplade till några funktionsvärden
- Användar- eller hanterad identitet har inte rätt RBAC-behörighet i funktionsarkivet
- Användar- eller hanterad identitet har inte rätt RBAC-behörighet att läsa från källlagringsplatsen eller offlinearkivet
- Träningsjobbet kan inte läsa data som genereras av komponenten för inbyggd funktionshämtning
generate_feature_retrieval_spec()
misslyckas på grund av användning av specifikationen för lokal funktionsuppsättning- Frågan
get_offline_features()
tar lång tid
När ett funktionshämtningsjobb misslyckas kontrollerar du felinformationen. Gå till sidan körningsinformation, välj fliken Utdata + loggar och granska filen logs/azureml/driver/stdout .
Om användaren kör get_offline_feature()
frågan i notebook-filen visas felet direkt i cellutdata.
Lösningsfel för funktionshämtningsspecifikation
Symptom
Frågan/jobbet för funktionshämtning visar följande fel:
- Ogiltig funktion
code: "UserError"
mesasge: "Feature '<some name>' not found in this featureset."
- Ogiltig funktionsarkiv-URI:
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"
- Ogiltig funktionsuppsättning:
code: "UserError"
message: "Featureset with name: <name >and version: <version> not found."
Lösning
Kontrollera innehållet i feature_retrieval_spec.yaml
det jobb som används. Kontrollera att alla namn på funktionsarkivet
- URI
- funktionsuppsättningens namn/version
- funktion
är giltiga och att de finns i funktionsarkivet.
Om du vill välja funktioner från ett funktionsarkiv och generera YAML-filen för funktionshämtningsspecifikation rekommenderas användning av verktygsfunktionen.
Det här kodfragmentet använder verktygsfunktionen generate_feature_retrieval_spec
.
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)
Filen feature_retrieval_spec.yaml hittades inte när du använder en modell som indata till funktionshämtningsjobbet
Symptom
När du använder en registrerad modell som indata för funktionshämtningsjobb misslyckas jobbet med det här felet:
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
Lösning:
När du anger en modell som indata till funktionshämtningssteget förväntar sig modellen att hitta YAML-filen för hämtningsspecifikation under modellartefaktmappen. Jobbet misslyckas om filen saknas.
Åtgärda problemet genom att paketera feature_retrieval_spec.yaml
filen i rotmappen i modellartefaktmappen innan du registrerar modellen.
Observationsdata är inte kopplade till några funktionsvärden
Symptom
När användarna har kört frågan/jobbet för funktionshämtning hämtar utdata inga funktionsvärden. En användare kör till exempel funktionshämtningsjobbet transaction_amount_3d_avg
för att hämta funktionerna och transaction_amount_7d_avg
med följande resultat:
transactionID | accountID | timestamp | 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 |
Lösning
Funktionshämtningen kör en tidpunktsbaserad kopplingsfråga. Om kopplingsresultatet visas tomt kan du prova följande potentiella lösningar:
temporal_join_lookback
Utöka intervallet i funktionsuppsättningens specifikationsdefinition eller ta bort det tillfälligt. Detta gör att punkt-i-tid-kopplingen kan se tillbaka längre (eller oändligt) in i det förflutna, före tidsstämpeln för observationshändelsen, för att hitta funktionsvärdena.- Om
source.source_delay
även anges i funktionsuppsättningens specifikationsdefinition kontrollerar du atttemporal_join_lookback > source.source_delay
.
Om ingen av dessa lösningar fungerar hämtar du funktionsuppsättningen från funktionsarkivet och kör <feature_set>.to_spark_dataframe()
för att manuellt granska kolumnerna för funktionsindex och tidsstämplar. Felet kan inträffa eftersom:
- indexvärdena i observationsdata finns inte i funktionsuppsättningens dataram
- inget funktionsvärde, med ett tidsstämpelvärde innan tidsstämpeln för observation finns.
I dessa fall kan du behöva fylla på fler funktionsdata om funktionen är aktiverad offlinematerialisering.
Användaren eller den hanterade identiteten har inte rätt RBAC-behörighet i funktionsarkivet
Symptom:
Funktionshämtningsjobbet/frågan misslyckas med det här felmeddelandet i filen 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
Lösning:
Om funktionshämtningsjobbet använder en hanterad identitet tilldelar du
AzureML Data Scientist
rollen i funktionsarkivet till identiteten.Om problemet uppstår när
- användaren kör kod i en Azure Machine Learning Spark-notebook-fil
- notebook-filen använder användarens egen identitet för att få åtkomst till Azure Machine Learning-tjänsten
AzureML Data Scientist
tilldela rollen i funktionsarkivet till användarens Microsoft Entra-identitet.
Azure Machine Learning Data Scientist
är en rekommenderad roll. Användaren kan skapa en egen anpassad roll med följande åtgärder
- Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action
- Microsoft.MachineLearningServices/workspaces/featuresets/read
- Microsoft.MachineLearningServices/workspaces/read
Mer information om RBAC-konfiguration finns i Hantera åtkomst till hanterad funktionsbutik resurs.
Användar- eller hanterad identitet har inte rätt RBAC-behörighet att läsa från källlagringsplatsen eller offlinearkivet
Symptom
Funktionshämtningsjobbet/frågan misslyckas med följande felmeddelande i filen 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)
Lösning:
- Om funktionshämtningsjobbet använder en hanterad identitet tilldelar du
Storage Blob Data Reader
rollen på både källlagrings- och offlinelagringslagringen till identiteten. - Det här felet inträffar när notebook-filen använder användarens identitet för att komma åt Azure Machine Learning-tjänsten för att köra frågan. Lös felet genom att tilldela
Storage Blob Data Reader
rollen till användarens identitet på lagringskontot för källlagring och offlinelagring.
Storage Blob Data Reader
är lägsta rekommenderade åtkomstbehörighet. Användare kan också tilldela roller – till exempel Storage Blob Data Contributor
eller Storage Blob Data Owner
– med fler behörigheter.
Träningsjobbet kan inte läsa data som genereras av komponenten för inbyggd funktionshämtning
Symptom
Ett träningsjobb misslyckas med felmeddelandet att träningsdata inte finns, att formatet är felaktigt eller att det finns ett parserfel:
FileNotFoundError: [Errno 2] No such file or directory
- formatet är inte korrekt.
ParserError:
Lösning
Den inbyggda funktionshämtningskomponenten har bara output_data
som utdata. Utdata är en datatillgång av typen uri_folder. Den har alltid den här mappstrukturen:
<training data folder>
/
├── data/
│ ├── xxxxx.parquet
│ └── xxxxx.parquet
└── feature_retrieval_spec.yaml
Utdata är alltid i parquet-format. Uppdatera träningsskriptet så att det läser från undermappen ”data” och läs data som parquet.
generate_feature_retrieval_spec()
misslyckas på grund av användning av specifikationen för lokal funktionsuppsättning
Symptom:
Den här Python-koden genererar en funktionshämtningsspecifikation på en viss lista över funktioner:
featurestore.generate_feature_retrieval_spec(feature_retrieval_spec_folder, features)
Om funktionslistan innehåller funktioner som definierats av en lokal funktionsuppsättningsspecifikation misslyckas generate_feature_retrieval_spec()
med det här felmeddelandet:
AttributeError: 'FeatureSetSpec' object has no attribute 'id'
Lösning:
En funktionshämtningsspecifikation kan bara genereras med hjälp av funktionsuppsättningar som registrerats i Funktionsarkiv. Så här åtgärdar du problemet:
- Registrera den lokala funktionsuppsättningsspecifikationen som en funktionsuppsättning i funktionsarkivet
- Hämta den registrerade funktionsuppsättningen
- Skapa funktionslistor igen med endast funktioner från registrerade funktionsuppsättningar
- Generera funktionshämtningsspecifikationen med hjälp av den nya funktionslistan
Frågan get_offline_features()
tar lång tid
Symptom:
Det get_offline_features
tar för lång tid att köra för att generera träningsdata med hjälp av några funktioner från funktionsarkivet.
Lösningar:
Kontrollera dessa konfigurationer:
- Kontrollera att varje funktionsuppsättning som används i frågan har
temporal_join_lookback
angetts i funktionsuppsättningsspecifikationen. Ange dess värde till ett mindre värde. - Om storleks- och tidsstämpelfönstret på observationsdataramen är stort konfigurerar du notebook-sessionen (eller jobbet) för att öka storleken (minne och kärna) för drivrutinen och kören. Öka dessutom antalet utförare.
Fel vid funktionsmaterialiseringsjobb
- Ogiltig offlinelagringskonfiguration
- Materialiseringsidentiteten har inte rätt RBAC-behörighet i funktionsarkivet
- Materialiseringsidentiteten har inte rätt RBAC-behörighet att läsa från lagringen
- Materialiseringsidentiteten har inte RBAC-behörighet att skriva data till offlinearkivet
- Körning av strömmande jobb till en notebook-fil resulterar i fel
- Ogiltig Spark-konfiguration
När funktionsmaterialetiseringsjobbet misslyckas följer du dessa steg för att kontrollera information om jobbfel:
- Gå till sidan för funktionsbutiken: https://ml.azure.com/featureStore/{your-feature-store-name}.
- Gå till fliken
feature set
, välj relevant funktionsuppsättning och gå till detaljsidan funktionsuppsättning. - Från detaljsidan för funktionsuppsättning väljer du fliken
Materialization jobs
och väljer sedan det misslyckade jobbet för att öppna det i jobbinformationsvyn. - Granska jobbstatusen och felmeddelandet under
Properties
kortet i jobbinformationsvyn. - Du kan också gå till fliken
Outputs + logs
och sedan hittastdout
filen frånlogs\azureml\driver\stdout
filen.
När du har tillämpat en korrigering kan du manuellt utlösa ett materialiseringsjobb för återfyllnad för att kontrollera att korrigeringen fungerar.
Ogiltig offlinelagringskonfiguration
Symptom
Materialiseringsjobbet misslyckas med det här felmeddelandet logs/azureml/driver/stdout
i filen:
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
Lösning
Använd SDK för att kontrollera det offlinelagringsmål som definierats i funktionsarkivet:
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
Du kan också kontrollera offlinelagringsmålet på översiktssidan för funktionsarkivets användargränssnitt. Kontrollera att både lagringen och containern finns och att målet har det här formatet:
/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{storage}/blobServices/default/containers/{container-name}
Materialiseringsidentiteten har inte rätt RBAC-behörighet i funktionsarkivet
Symptom:
Materialiseringsjobbet misslyckas med det här felmeddelandet i filen 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
Lösning:
Tilldela rollen Azure Machine Learning Data Scientist
för funktionsbutiken till materialiseringsidentiteten (en användartilldelad hanterad identitet) för funktionsbutiken.
Azure Machine Learning Data Scientist
är en rekommenderad roll. Du kan skapa en egen anpassad roll med följande åtgärder:
- Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action
- Microsoft.MachineLearningServices/workspaces/featuresets/read
- Microsoft.MachineLearningServices/workspaces/read
Mer information finns i Behörigheter som krävs för rollresursenfeature store materialization managed identity
.
Materialiseringsidentiteten har inte rätt RBAC-behörighet att läsa från lagringen
Symptom
Materialiseringsjobbet misslyckas med det här felmeddelandet i filen 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)
Lösning:
Storage Blob Data Reader
Tilldela rollen på källlagringen till materialiseringsidentiteten (en användartilldelad hanterad identitet) för funktionsarkivet.
Storage Blob Data Reader
är lägsta rekommenderade åtkomstbehörighet. Du kan också tilldela roller med fler behörigheter – till exempel Storage Blob Data Contributor
eller Storage Blob Data Owner
.
Mer information om RBAC-konfiguration finns i Behörigheter som krävs för rollresursenfeature store materialization managed identity
.
Materialiseringsidentiteten har inte rätt RBAC-behörighet att skriva data till offlinearkivet
Symptom
Materialiseringsjobbet misslyckas med det här felmeddelandet i filen logs/azureml/driver/stdout :
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
Lösning
Storage Blob Data Reader
Tilldela rollen på källlagringen till materialiseringsidentiteten (en användartilldelad hanterad identitet) för funktionsarkivet.
Storage Blob Data Contributor
är lägsta rekommenderade åtkomstbehörighet. Du kan också tilldela roller med fler behörigheter , till exempel Storage Blob Data Owner
.
Mer information om RBAC-konfiguration finns i Behörigheter som krävs för rollresursenfeature store materialization managed identity
.
Direktuppspelning av jobbutdata till en notebook-fil resulterar i fel
Symptom:
När du använder CRUD-klienten för funktionsarkivet för att strömma materialiseringsjobbresultat till en notebook-fil fs_client.jobs.stream("<job_id>")
misslyckas SDK-anropet med ett fel
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.
Lösning:
När materialiseringsjobbet skapas (till exempel av ett återfyllnadsanrop) kan det ta några sekunder innan jobbet initieras korrekt. jobs.stream()
Kör kommandot igen några sekunder senare. Detta bör lösa problemet.
Ogiltig Spark-konfiguration
Symptom:
Ett materialiseringsjobb misslyckas med det här felmeddelandet:
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]"
}
Lösning:
materialization_settings.spark_configuration{}
Uppdatera funktionsuppsättningen. Kontrollera att dessa parametrar använder både minnesstorleksmängder och ett totalt antal kärnvärden, som båda är mindre än vad instanstypen, enligt definitionen i materialization_settings.resource
, ger:
spark.driver.cores
spark.driver.memory
spark.executor.cores
spark.executor.memory
Till exempel, för instanstyp standard_e8s_v3 är den här Spark-konfigurationen ett av de giltiga alternativen:
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)