Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
- Foundry Local is beschikbaar in preview. Openbare preview-versies bieden vroege toegang tot functies die actief zijn geïmplementeerd.
- Functies, benaderingen en processen kunnen worden gewijzigd of beperkte mogelijkheden hebben, voordat algemene beschikbaarheid (GA) wordt uitgevoerd.
Met Foundry Local kunt u uw eigen catalogusservice bouwen en integreren. Dit artikel behandelt:
- Modelindeling vereist voor de catalogus-API
- Aanvraag- en antwoordindeling vereist voor uw catalogus-API om te integreren met Foundry Local
Modelindeling
Modelbestanden in uw modelcatalogus moeten de ONNX-indeling (Open Neural Network Exchange) hebben om te kunnen werken met Foundry Local. Voor meer informatie over het compileren van Hugging Face- en PyTorch-modellen naar ONNX, raadpleegt u Compile Hugging Face-modellen om te worden uitgevoerd op Foundry Local.
API-indeling
Aanvraag
Implementeer een POST-eindpunt dat een hoofdtekst van een JSON-aanvraag accepteert in uw catalogusservice. De aanvraagindeling voor de catalogus-API is als volgt:
-
Methode:
POST -
Inhoudstype:
application/json
De aanvraagbody moet een JSON-object met de volgende velden zijn:
-
resourceIds: Een matrix met resource-id's waarmee de resources worden opgegeven die moeten worden opgevraagd-
resourceId: De id van de resource -
entityContainerType: Het type entiteitscontainer (bijvoorbeeldRegistry,Workspaceenzovoort)
-
-
indexEntitiesRequest: Een object dat de zoekparameters bevat.-
filters: Een matrix met filterobjecten die de criteria opgeven voor het filteren van de zoekresultaten-
field: Het veld waarop moet worden gefilterd (bijvoorbeeldtype,kindenzovoort) -
operator: de operator die moet worden gebruikt voor het filter. Bijvoorbeeld(eqis gelijk aan),ne(niet gelijk aan),gt(groter dan),lt(kleiner dan), enzovoort. -
values: Een matrix met waarden die overeenkomen met het veld
-
-
orderBy: Een matrix met velden om de resultaten te ordenen op -
searchText: Een tekenreeks die moet worden gezocht in de resultaten -
pageSize: Het maximum aantal resultaten dat moet worden geretourneerd (voor paginering) -
skip: Het aantal resultaten dat moet worden overgeslagen (voor paginering) -
continuationToken: Een token voor paginering om door te gaan vanaf een vorige aanvraag
-
Filterbare velden (optioneel)
Implementeer de catalogus-API zodat deze de aanvraagindeling accepteert. Filteren aan serverzijde is optioneel. Het overslaan van filteren aan de serverzijde is sneller te implementeren, maar is minder efficiënt voor het zoeken naar modellen.
Als u filteren aan de serverzijde implementeert, gebruikt u de volgende velden:
-
type: Het type van het model (bijvoorbeeldmodels,datasetsenzovoort). -
kind: Het type model (bijvoorbeeldVersioned,Unversionedenzovoort). -
properties/variantInfo/variantMetadata/device: het apparaattype (bijvoorbeeldcpu,gpuenzovoort). -
properties/variantInfo/variantMetadata/executionProvider: De uitvoeringsprovider (bijvoorbeeldcpuexecutionprovider,webgpuexecutionproviderenzovoort).
Voorbeeld van aanvraag
curl -X POST <your-catalog-api-endpoint> \
-H "Content-Type: application/json" \
-d '{
"resourceIds": [
{
"resourceId": "azureml",
"entityContainerType": "Registry"
}
],
"indexEntitiesRequest": {
"filters": [
{
"field": "type",
"operator": "eq",
"values": [
"models"
]
},
{
"field": "kind",
"operator": "eq",
"values": [
"Versioned"
]
},
{
"field": "properties/variantInfo/variantMetadata/device",
"operator": "eq",
"values": [
"cpu",
"gpu"
]
},
{
"field": "properties/variantInfo/variantMetadata/executionProvider",
"operator": "eq",
"values": [
"cpuexecutionprovider",
"webgpuexecutionprovider"
]
}
],
"pageSize": 10,
"skip": null,
"continuationToken": null
}
}'
Reactie
Het antwoord van de catalogus-API is een JSON-object dat de zoekresultaten bevat. Het antwoordschema is als volgt:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"indexEntitiesResponse": {
"type": "object",
"properties": {
"totalCount": {
"type": "integer",
"description": "The total count of entities."
},
"value": {
"type": "array",
"description": "An array of LocalModel objects.",
"items": {
"$ref": "#/definitions/LocalModel"
}
},
"nextSkip": {
"type": "integer",
"description": "The number of items to skip for the next request."
},
"continuationToken": {
"type": "string",
"description": "A token to continue fetching results."
}
}
}
},
"definitions": {
"LocalModel": {
"type": "object",
"properties": {
"annotations": {
"type": "object",
"description": "Annotations associated with the model.",
"properties": {
"tags": {
"type": "object",
"description": "Tags associated with the annotation.",
"properties": {
"author": { "type": "string" },
"alias": { "type": "string" },
"directoryPath": { "type": "string" },
"license": { "type": "string" },
"licenseDescription": { "type": "string" },
"promptTemplate": { "type": "string" },
"task": { "type": "string" }
}
},
"systemCatalogData": {
"type": "object",
"properties": {
"publisher": { "type": "string" },
"displayName": { "type": "string" }
}
},
"name": { "type": "string" }
}
},
"properties": {
"type": "object",
"description": "Properties of the model.",
"properties": {
"name": { "type": "string" },
"version": { "type": "integer" },
"alphanumericVersion": { "type": "string" },
"variantInfo": {
"type": "object",
"properties": {
"parents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": { "type": "string" }
}
}
},
"variantMetadata": {
"type": "object",
"properties": {
"modelType": { "type": "string" },
"device": { "type": "string" },
"executionProvider": { "type": "string" },
"fileSizeBytes": { "type": "integer" }
}
}
}
}
}
},
"version": {
"type": "string",
"description": "The version of the model."
},
"assetId": {
"type": "string",
"description": "The asset ID of the model."
}
}
}
}
}