Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie den Zugriff auf externe und private Ressourcen über Model Serving-Endpunkte konfigurieren. Model Serving unterstützt Umgebungsvariablen mit Nur-Text sowie auf Geheimnisse basierende Umgebungsvariablen mithilfe von Databricks-Geheimnissen.
Anforderungen
Voraussetzungen für geheimnisbasierte Umgebungsvariablen:
- Der Endpunktersteller muss über Lesezugriff auf die Databricks-Geheimnisse verfügen, auf die in den Konfigurationen verwiesen wird.
- Sie müssen Anmeldeinformationen wie Ihren API-Schlüssel oder andere Token als Databricks-Geheimnis speichern.
Hinzufügen von Nur-Text-Umgebungsvariablen
Verwenden Sie Nur-Text-Umgebungsvariablen, um Variablen festzulegen, die nicht ausgeblendet werden müssen. Sie können Variablen in der Dienstbenutzeroberfläche, der REST-API oder dem SDK festlegen, wenn Sie einen Endpunkt erstellen oder aktualisieren.
Serving-Benutzeroberfläche
Über die Model Serving-Benutzeroberfläche können Sie eine Umgebungsvariable über Erweiterte Konfigurationen hinzufügen:
REST API
Im Folgenden sehen Sie ein Beispiel zum Erstellen eines Dienstendpunkts mithilfe der POST /api/2.0/serving-endpoints REST-API und des Felds environment_vars zum Konfigurieren Ihrer Umgebungsvariable.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"TEXT_ENV_VAR_NAME": "plain-text-env-value"
}
}
]
}
}
WorkspaceClient SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe des WorkspaceClient SDK und des environment_vars Felds zum Konfigurieren der Umgebungsvariable.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
)
]
)
)
MLflow Deployments SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe des Mlflow Deployments SDK und des environment_vars Felds zum Konfigurieren der Umgebungsvariable.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"MY_ENV_VAR": "value_to_be_injected",
"ADS_TOKEN": "abcdefg-1234"
}
}
]
}
)
Protokollfeature-Lookup von DataFrames zu Inferenztabellen
Wenn Sie Schlussfolgerungstabellen auf Ihrem Endpunkt aktiviert haben, können Sie in der Inferencetabelle protokollieren. Dies erfordert MLflow 2.14.0 oder höher.
Legen Sie ENABLE_FEATURE_TRACING als Umgebungsvariable in der Bereitstellungs-UI, REST-API oder im SDK fest, wenn Sie einen Endpunkt erstellen oder aktualisieren.
Serving-Benutzeroberfläche
- Wählen Sie in erweiterten Konfigurationen ** + Umgebungsvariablen hinzufügen** aus.
- Geben Sie
ENABLE_FEATURE_TRACINGden Namen der Umgebung ein. - Geben Sie im Feld rechts
trueein.
REST API
Im Folgenden sehen Sie ein Beispiel zum Erstellen eines Dienstendpunkts mithilfe der POST /api/2.0/serving-endpoints REST-API und des environment_vars Felds zum Konfigurieren der ENABLE_FEATURE_TRACING Umgebungsvariable.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
}
WorkspaceClient SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines dienstenden Endpunkts mithilfe des WorkspaceClient SDK und des environment_vars Felds zum Konfigurieren der ENABLE_FEATURE_TRACING Umgebungsvariable.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"ENABLE_FEATURE_TRACING": "true"
}
)
]
)
)
MLflow Deployments SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe des Mlflow Deployments SDK und des environment_vars Felds zum Konfigurieren der ENABLE_FEATURE_TRACING Umgebungsvariable.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
)
Hinzufügen geheimnisbasierter Umgebungsvariablen
Sie können Anmeldeinformationen sicher mithilfe von Databricks-Geheimnissen speichern und bei der Modellbereitstellung mithilfe von geheimnisbasierten Umgebungsvariablen auf diese Geheimnisse verweisen. Dadurch können Anmeldeinformationen zur Bereitstellungszeit von Modellbereitstellungsendpunkten abgerufen werden.
Sie können beispielsweise Anmeldeinformationen übergeben, um OpenAI und andere externe Modellendpunkte aufzurufen oder direkt über die Modellbereitstellung auf externe Datenspeicherorte zuzugreifen.
Databricks empfiehlt dieses Feature für die Bereitstellung von OpenAI- und LangChain-MLflow-Modellvarianten für die Bereitstellung. Es gilt auch für andere SaaS-Modelle, die Anmeldeinformationen erfordern, wobei das Zugriffsmuster auf der Verwendung von Umgebungsvariablen und API-Schlüsseln und Token basiert.
Schritt 1: Erstellen eines Geheimnisbereichs
Während der Modellbereitstellung werden die Geheimnisse aus Databricks-Geheimnissen durch den Geheimnisbereich und -Schlüssel abgerufen. Diese werden den Namen der geheimen Umgebungsvariablen zugewiesen, die innerhalb des Modells verwendet werden können.
Erstellen Sie zunächst einen Geheimnisbereich. Siehe "Geheime Bereiche verwalten".
Im Folgenden sind CLI-Befehle aufgeführt:
databricks secrets create-scope my_secret_scope
Anschließend können Sie Ihr Geheimnis einem gewünschten Geheimnisbereich und Schlüssel hinzufügen, wie unten gezeigt:
databricks secrets put-secret my_secret_scope my_secret_key
Die Geheimnisinformationen und der Name der Umgebungsvariablen können dann während der Endpunkterstellung oder als Aktualisierung der Konfiguration eines vorhandenen Endpunkts an Ihre Endpunktkonfiguration übergeben werden.
Schritt 2: Hinzufügen von Geheimnisbereichen zur Endpunktkonfiguration
Sie können den Geheimnisbereich einer Umgebungsvariable hinzufügen und diese Variable während der Endpunkterstellung oder Konfigurationsupdates an Ihren Endpunkt übergeben. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Model Serving-Endpunkten.
Serving-Benutzeroberfläche
Über die Model Serving-Benutzeroberfläche können Sie eine Umgebungsvariable über Erweiterte Konfigurationen hinzufügen. Die geheimnisbasierte Umgebungsvariable muss mithilfe der folgenden Syntax bereitgestellt werden: {{secrets/scope/key}}. Andernfalls wird die Umgebungsvariable als Nur-Text-Umgebungsvariable betrachtet.
REST API
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe der REST-API. Während des Modells, das Endpunkterstellung und Konfigurationsupdates bereitstellt, können Sie eine Liste der Spezifikationen für geheime Umgebungsvariablen für jedes bereitgestellte Modell innerhalb der API-Anforderung mithilfe des Felds environment_vars bereitstellen.
Im folgenden Beispiel wird der Wert aus dem im bereitgestellten Code erstellten Geheimnis der Umgebungsvariablen OPENAI_API_KEY zugewiesen.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
}
Sie können auch einen Bereitstellungsendpunkt aktualisieren, wie im folgenden Beispiel mit PUT /api/2.0/serving-endpoints/{name}/config REST-API gezeigt:
{
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "2",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
WorkspaceClient SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe des WorkspaceClient SDK. Während des Modells, das Endpunkterstellung und Konfigurationsupdates bereitstellt, können Sie eine Liste der Spezifikationen für geheime Umgebungsvariablen für jedes bereitgestellte Modell innerhalb der API-Anforderung mithilfe des Felds environment_vars bereitstellen.
Im folgenden Beispiel wird der Wert aus dem im bereitgestellten Code erstellten Geheimnis der Umgebungsvariablen OPENAI_API_KEY zugewiesen.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ServedEntityInput, EndpointCoreConfigInput, ServingModelWorkloadType
w = WorkspaceClient()
endpoint_name = "example-add-model"
model_name = "main.default.addmodel"
w.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name = model_name,
entity_version = "2",
workload_type = ServingModelWorkloadType("CPU"),
workload_size = "Small",
scale_to_zero_enabled = False,
environment_vars = {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
)
]
)
)
MLflow Deployments SDK
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Bereitstellungsendpunkts mithilfe des Mlflow Deployments SDK. Während des Modells, das Endpunkterstellung und Konfigurationsupdates bereitstellt, können Sie eine Liste der Spezifikationen für geheime Umgebungsvariablen für jedes bereitgestellte Modell innerhalb der API-Anforderung mithilfe des Felds environment_vars bereitstellen.
Im folgenden Beispiel wird der Wert aus dem im bereitgestellten Code erstellten Geheimnis der Umgebungsvariablen OPENAI_API_KEY zugewiesen.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": True,
"environment_vars": {
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}
]
}
)
Nachdem der Endpunkt erstellt oder aktualisiert wurde, ruft die Modellbereitstellung automatisch den geheimen Schlüssel aus dem Databricks-Geheimnisbereich ab und füllt die Umgebungsvariable für den zu verwendenden Modellrückschlusscode auf.
Notebookbeispiel
Im folgenden Notebook sehen Sie ein Beispiel für das Konfigurieren eines OpenAI-API-Schlüssels für eine LangChain-Abruf-QA-Kette, die hinter dem Modell bereitgestellt wird und Endpunkte mit Geheimnis-basierten Umgebungsvariablen bedient.