Basismodel maken voor eindpunten
In dit artikel leert u hoe u modellen maakt die eindpunten leveren die basismodellen dienen.
Databricks Model Serving ondersteunt de volgende basismodellen:
- State-of-the-art open modellen die beschikbaar worden gesteld door Foundation Model-API's. Deze modellen zijn gecureerde basismodelarchitecturen die geoptimaliseerde deductie ondersteunen. Basismodellen, zoals Llama-2-70B-chat, BGE-Large en Mistral-7B zijn beschikbaar voor direct gebruik met prijzen voor betalen per token . Productieworkloads, met behulp van basismodellen of nauwkeurig afgestemde modellen, kunnen worden geïmplementeerd met prestatiegaranties met behulp van ingerichte doorvoer.
- Externe modellen. Dit zijn modellen die buiten Databricks worden gehost. Eindpunten die externe modellen dienen, kunnen centraal worden beheerd en klanten kunnen frequentielimieten en toegangsbeheer voor hen vaststellen. Voorbeelden hiervan zijn basismodellen zoals GpT-4 van OpenAI, Claude van Antropic en andere.
Model serving biedt de volgende opties voor het maken van een eindpunt voor het model:
- De ondersteunende gebruikersinterface
- REST-API
- MLflow Deployments SDK
Zie Aangepaste modellen maken die eindpunten leveren voor eindpunten voor het maken van eindpunten voor traditionele ML- of Python-modellen.
Eisen
- Een Databricks-werkruimte in een ondersteunde regio.
- Voor het maken van eindpunten met behulp van de MLflow Deployments SDK moet u de MLflow Deployment-client installeren. Voer de volgende opdracht uit om deze te installeren:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Een basismodel maken voor eindpunt
Hieronder wordt beschreven hoe u een eindpunt maakt dat een basismodel gebruikt dat beschikbaar wordt gemaakt met behulp van externe Databricks-modellen. Zie Uw ingerichte doorvoereindpunt maken met behulp van de REST API's voor eindpunten die zijn afgestemd op de modellen die beschikbaar worden gemaakt met behulp van Foundation Model-API's.
Gebruikersinterface bedienen
- Geef in het veld Naam een naam op voor uw eindpunt.
- In de sectie Geserveerde entiteiten
- Klik in het veld Entiteit om het formulier Voor de entiteit selecteren te openen.
- Selecteer Extern model.
- Selecteer de modelprovider die u wilt gebruiken.
- Klik op Bevestigen
- Geef de naam op van het externe model dat u wilt gebruiken. Het formulier wordt dynamisch bijgewerkt op basis van uw selectie. Bekijk de beschikbare externe modellen.
- Selecteer het taaktype. Beschikbare taken zijn chat-, voltooiings- en insluitingen.
- Geef de configuratiedetails op voor toegang tot de geselecteerde modelprovider. Dit is meestal het geheim dat verwijst naar het persoonlijke toegangstoken dat u wilt gebruiken voor toegang tot dit model.
- Klik op Create. De pagina Eindpunten voor het serveren wordt weergegeven met de status Van het servereindpunt die wordt weergegeven als Niet gereed.
Rest API
Belangrijk
De REST API-parameters voor het maken van service-eindpunten die basismodellen dienen, bevinden zich in openbare preview.
In het volgende voorbeeld wordt een eindpunt gemaakt dat de eerste versie van het text-embedding-ada-002
model van OpenAI gebruikt.
Zie POST /api/2.0/serving-endpoints voor eindpuntconfiguratieparameters.
{
"name": "openai_endpoint",
"config":{
"served_entities": [
{
"name": "openai_embeddings",
"external_model":{
"name": "text-embedding-ada-002",
"provider": "openai",
"task": "llm/v1/embeddings",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
},
"rate_limits": [
{
"calls": 100,
"key": "user",
"renewal_period": "minute"
}
],
"tags": [
{
"key": "team",
"value": "gen-ai"
}
]
}
Hier volgt een voorbeeld van een antwoord.
{
"name": "openai_endpoint",
"creator": "user@email.com",
"creation_timestamp": 1699617587000,
"last_updated_timestamp": 1699617587000,
"state": {
"ready": "READY"
},
"config": {
"served_entities": [
{
"name": "openai_embeddings",
"external_model": {
"provider": "openai",
"name": "text-embedding-ada-002",
"task": "llm/v1/embeddings",
"openai_config": {
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
},
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1699617587000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "openai_embeddings",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "gen-ai"
}
],
"id": "69962db6b9db47c4a8a222d2ac79d7f8",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
Mlflow deployments SDK
Hieronder wordt een eindpunt gemaakt voor insluitingen met OpenAI text-embedding-ada-002
.
Voor basismodeleindpunten moet u API-sleutels opgeven voor de modelprovider die u wilt gebruiken. Zie POST /api/2.0/serving-endpoints in de REST API voor details van het aanvraag- en antwoordschema.
U kunt ook eindpunten maken voor voltooiingen en chattaken, zoals opgegeven in het task
veld in de external_model
sectie van de configuratie. Zie Externe modellen in Databricks Model Serving voor ondersteunde modellen en providers voor elke taak.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="chat",
config={
"served_entities": [
{
"name": "completions",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Een basismodeleindpunt bijwerken
Nadat u een modeleindpunt hebt ingeschakeld, kunt u de rekenconfiguratie naar wens instellen. Deze configuratie is met name handig als u aanvullende resources nodig hebt voor uw model. Workloadgrootte en rekenconfiguratie spelen een belangrijke rol in de resources die worden toegewezen voor het leveren van uw model.
Totdat de nieuwe configuratie gereed is, blijft de oude configuratie voorspellingsverkeer leveren. Hoewel er een update wordt uitgevoerd, kan er geen andere update worden uitgevoerd. In de gebruikersinterface van De server kunt u een actieve configuratie-update annuleren door de update annuleren in de rechterbovenhoek van de detailpagina van het eindpunt te selecteren. Deze functionaliteit is alleen beschikbaar in de gebruikersinterface van De server.
Wanneer een external_model
object aanwezig is in een eindpuntconfiguratie, kan de lijst met weergegeven entiteiten slechts één served_entity-object hebben. Bestaande eindpunten met een external_model
kunnen niet worden bijgewerkt zodat ze external_model
geen . Als het eindpunt zonder een external_model
is gemaakt, kunt u het niet bijwerken om een external_model
.
Rest API
Als u het eindpunt van het basismodel wilt bijwerken, raadpleegt u de configuratiedocumentatie voor de REST API-update voor details van het aanvraag- en antwoordschema.
{
"name": "openai_endpoint",
"served_entities":[
{
"name": "openai_chat",
"external_model":{
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
}
Mlflow deployments SDK
Als u het eindpunt van het basismodel wilt bijwerken, raadpleegt u de configuratiedocumentatie voor de REST API-update voor details van het aanvraag- en antwoordschema.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
endpoint="chat",
config={
"served_entities": [
{
"name": "chats",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chats",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
rate_limits = client.update_endpoint(
endpoint="chat",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
},
)
assert rate_limits == {
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
}
Aanvullende bronnen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor