Bagikan melalui


Model eksternal dalam Mosaic AI Model Serving

Penting

Contoh kode dalam artikel ini menunjukkan penggunaan API CRUD Penyebaran MLflow Pratinjau Publik.

Artikel ini menjelaskan model eksternal dalam Mosaic AI Model Serving termasuk penyedia dan batasan model yang didukung.

Apa itu model eksternal?

Model eksternal adalah model pihak ketiga yang dihosting di luar Databricks. Didukung oleh Model Serving, model eksternal memungkinkan Anda menyederhanakan penggunaan dan manajemen berbagai penyedia model bahasa besar (LLM), seperti OpenAI dan Anthropic, dalam organisasi. Anda juga dapat menggunakan Mosaic AI Model Berfungsi sebagai penyedia untuk melayani model kustom, yang menawarkan batas tarif untuk titik akhir tersebut. Sebagai bagian dari dukungan ini, Model Serving menawarkan antarmuka tingkat tinggi yang menyederhanakan interaksi dengan layanan ini dengan menyediakan titik akhir terpadu untuk menangani permintaan terkait LLM tertentu.

Selain itu, dukungan Azure Databricks untuk model eksternal menyediakan manajemen kredensial terpusat. Dengan menyimpan kunci API di satu lokasi yang aman, organisasi dapat meningkatkan postur keamanan mereka dengan meminimalkan paparan kunci API sensitif di seluruh sistem. Ini juga membantu mencegah mengekspos kunci ini dalam kode atau mengharuskan pengguna akhir untuk mengelola kunci dengan aman.

Lihat Tutorial: Membuat titik akhir model eksternal untuk mengkueri model OpenAI untuk panduan langkah demi langkah tentang pembuatan titik akhir model eksternal dan mengkueri model yang didukung yang dilayani oleh titik akhir tersebut menggunakan SDK Penyebaran MLflow. Lihat panduan berikut untuk instruksi tentang cara menggunakan Antarmuka Pengguna layanan dan REST API:

Persyaratan

  • Bidang kunci API atau autentikasi untuk penyedia model.
  • Ruang kerja Databricks di wilayah yang didukung model Eksternal.

Penyedia model

Model eksternal dalam Model Serving dirancang untuk mendukung berbagai penyedia model. Penyedia mewakili sumber model pembelajaran mesin, seperti OpenAI, Anthropic, dan sebagainya. Setiap penyedia memiliki karakteristik dan konfigurasi khusus yang dienkapsulasi dalam external_model bidang konfigurasi titik akhir model eksternal.

Penyedia berikut didukung:

  • openai: Untuk model yang ditawarkan oleh OpenAI dan integrasi Azure untuk Azure OpenAI dan Azure OpenAI dengan AAD.
  • antropis: Untuk model yang ditawarkan oleh Anthropic.
  • cohere: Untuk model yang ditawarkan oleh Cohere.
  • amazon-bedrock: Untuk model yang ditawarkan oleh Amazon Bedrock.
  • ai21labs: Untuk model yang ditawarkan oleh AI21Labs.
  • google-cloud-vertex-ai: Untuk model yang ditawarkan oleh Google Cloud Vertex AI.
  • databricks-model-serving: Untuk Mosaic AI Model Melayani titik akhir dengan skema yang kompatibel. Lihat Konfigurasi titik akhir.

Untuk meminta dukungan untuk penyedia yang tidak tercantum di sini, hubungi tim akun Databricks Anda.

Model yang didukung

Model yang Anda pilih secara langsung memengaruhi hasil respons yang Anda dapatkan dari panggilan API. Oleh karena itu, pilih model yang sesuai dengan persyaratan kasus penggunaan Anda. Misalnya, untuk menghasilkan respons percakapan, Anda dapat memilih model obrolan. Sebaliknya, untuk menghasilkan penyematan teks, Anda dapat memilih model penyematan.

Tabel di bawah ini menyajikan daftar model yang didukung yang tidak lengkap dan jenis titik akhir yang sesuai. Asosiasi model yang tercantum di bawah ini dapat digunakan sebagai panduan bermanfaat saat mengonfigurasi titik akhir untuk jenis model yang baru dirilis saat tersedia dengan penyedia tertentu. Pelanggan bertanggung jawab untuk memastikan kepatuhan terhadap lisensi model yang berlaku.

Catatan

Dengan perkembangan LLM yang pesat, tidak ada jaminan bahwa daftar ini sudah diperbarui setiap saat.

Penyedia model llm/v1/completions llm/v1/chat llm/v1/embeddings
OpenAI** * gpt-3.5-turbo-instruct
* babbage-002
* davinci-002
* gpt-3.5-turbo
* gpt-4
* gpt-4o
* gpt-4o-2024-05-13
* gpt-3.5-turbo-0125
* gpt-3.5-turbo-1106
* gpt-4-0125-preview
* gpt-4-turbo-preview
* gpt-4-1106-preview
* gpt-4-vision-preview
* gpt-4-1106-vision-preview
* text-embedding-ada-002
* teks-penyematan-3-besar
* teks-penyematan-3-kecil
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* text-embedding-ada-002
* teks-penyematan-3-besar
* teks-penyematan-3-kecil
Antropis * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-haiku-20240307
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** *perintah
* perintah-terang-malam
* lampu perintah
* perintah-malam
* embed-english-v2.0
* embed-multilingual-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-multilingual-v3.0
* embed-multilingual-light-v3.0
Penyajian Model AI Mosaik Titik akhir penyajian Databricks Titik akhir penyajian Databricks Titik akhir penyajian Databricks
Amazon Bedrock Antropis:

* claude-instant-v1
* claude-v1
* claude-v2

Cohere:

* command-text-v14
* command-text-v14:7:4k
* command-light-text-v14
* command-light-text-v14:7:4k

AI21 Labs:

* j2-grande-instruct
* j2-jumbo-instruksi
* j2-mid
* j2-pertengahan v1
* j2-ultra j2-ultra-v1
Antropis:

* claude-instant-v1:2:100k
* claude-v2
* claude-v2:0:18k
* claude-v2:0:100k
* claude-v2:1
* claude-v2:1:18k
* claude-v2:1:200k
* claude-3-sonnet-20240229-v1:0
Amazon:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * chat-bison
* gemini-pro
textembedding-gecko

** Penyedia model mendukung penyelesaian yang disempurnakan dan model obrolan. Untuk mengkueri model yang disempurnakan, isi name bidang external model konfigurasi dengan nama model yang disempurnakan.

penyedia model † mendukung model penyelesaian kustom.

Menggunakan model yang disajikan pada titik akhir Penyajian Model AI Mosaik

Model AI Mosaik Melayani titik akhir sebagai penyedia didukung untuk llm/v1/completionsjenis titik akhir , , llm/v1/chatdan llm/v1/embeddings . Titik akhir ini harus menerima parameter kueri standar yang ditandai sebagaimana diperlukan, sementara parameter lain mungkin diabaikan tergantung pada apakah titik akhir Mosaic AI Model Serving mendukungnya atau tidak.

Lihat POST /serving-endpoints/{name}/invocations dalam referensi API untuk parameter kueri standar.

Titik akhir ini harus menghasilkan respons dalam format OpenAI berikut.

Untuk tugas penyelesaian:

{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Untuk tugas obrolan:

{
  "id": "123", # Not Required
  "model": "test_chat_model",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "human",
      "content": "\n\nWhat is the weather in San Francisco?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Untuk tugas penyematan:

{
  "data": [
    {
      "embedding": [
       0.0023064255,
        -0.009327292,
        .... # (1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    },
    {
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... #(1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "test_embedding_model",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Konfigurasi titik akhir

Untuk melayani dan mengkueri model eksternal, Anda perlu mengonfigurasi titik akhir penyajian. Lihat Membuat model eksternal yang melayani titik akhir

Untuk model eksternal yang melayani titik akhir, Anda harus menyertakan external_model bidang dan parameternya di bagian served_entities konfigurasi titik akhir. Jika Anda mengonfigurasi beberapa model eksternal dalam titik akhir penyajian, Anda harus menyediakan traffic_config untuk menentukan persentase perutean lalu lintas untuk setiap model eksternal.

Bidang external_model menentukan model tempat titik akhir ini meneruskan permintaan. Saat menentukan model, sangat penting bahwa penyedia mendukung model yang Anda minta. Misalnya, openai karena penyedia mendukung model seperti text-embedding-ada-002, tetapi penyedia lain mungkin tidak. Jika model tidak didukung oleh penyedia, Databricks mengembalikan kesalahan HTTP 4xx saat mencoba merutekan permintaan ke model tersebut.

Tabel di bawah ini meringkas external_model parameter bidang. Lihat POST /api/2.0/serving-endpoints untuk parameter konfigurasi titik akhir.

Parameter Deskripsi
name Nama model yang akan digunakan. Misalnya, gpt-3.5-turbo untuk model OpenAI GPT-3.5-Turbo .
provider Menentukan nama penyedia untuk model ini. Nilai string ini harus sesuai dengan penyedia model eksternal yang didukung. Misalnya, openai untuk model OpenAI GPT-3.5 .
task Tugas ini sesuai dengan jenis interaksi model bahasa yang Anda inginkan. Tugas yang didukung adalah "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings".
<provider>_config Berisi detail konfigurasi tambahan yang diperlukan untuk model. Ini termasuk menentukan URL dasar API dan kunci API. Lihat Mengonfigurasi penyedia untuk titik akhir.

Berikut ini adalah contoh pembuatan titik akhir model eksternal menggunakan create_endpoint() API. Dalam contoh ini, permintaan yang dikirim ke titik akhir penyelesaian diteruskan ke claude-2 model yang disediakan oleh anthropic.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

client.create_endpoint(
    name="anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "claude-2",
                    "provider": "anthropic",
                    "task": "llm/v1/completions",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ]
    }
)

Melayani beberapa model eksternal ke titik akhir

Anda juga dapat mengonfigurasi beberapa model eksternal dalam titik akhir penyajian selama semuanya memiliki jenis tugas yang sama dan setiap model memiliki yang unik name. Contoh di bawah ini, membuat titik akhir penyajian yang merutekan 50% lalu lintas yang gpt-4 disediakan oleh OpenAI dan 50% sisanya untuk claude-3-opus-20240229 disediakan oleh Anthropic.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

client.create_endpoint(
    name="mix-chat-endpoint",
    config={
        "served_entities": [
            {
                "name": "served_model_name_1",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}"
                    }
                }
            },
            {
                "name": "served_model_name_2",
                "external_model": {
                    "name": "claude-3-opus-20240229",
                    "provider": "anthropic",
                    "task": "llm/v1/chat",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ],
        "traffic_config": {
            "routes": [
                {"served_model_name": "served_model_name_1", "traffic_percentage": 50},
                {"served_model_name": "served_model_name_2", "traffic_percentage": 50}
            ]
        },
    }
)

Mengonfigurasi penyedia untuk titik akhir

Saat membuat titik akhir, Anda harus menyediakan konfigurasi yang diperlukan untuk penyedia model yang ditentukan. Bagian berikut ini meringkas parameter konfigurasi titik akhir yang tersedia untuk setiap penyedia model.

OpenAI

Parameter Konfigurasi Deskripsi Wajib diisi Default
openai_api_key Kunci API untuk layanan OpenAI. Ya
openai_api_type Bidang opsional untuk menentukan jenis OPENAI API yang akan digunakan. No
openai_api_base URL dasar untuk API OpenAI. No https://api.openai.com/v1
openai_api_version Bidang opsional untuk menentukan versi OpenAI API. No
openai_organization Bidang opsional untuk menentukan organisasi di OpenAI. No

Cohere

Parameter Konfigurasi Deskripsi Wajib diisi Default
cohere_api_key Kunci API untuk layanan Cohere. Ya

Antropis

Parameter Konfigurasi Deskripsi Wajib diisi Default
anthropic_api_key Kunci API untuk layanan Anthropic. Ya

Azure OpenAI

Azure OpenAI memiliki fitur yang berbeda dibandingkan dengan layanan OpenAI langsung. Untuk gambaran umum, silakan lihat dokumentasi perbandingan.

Parameter Konfigurasi Deskripsi Wajib diisi Default
openai_api_key Kunci API untuk layanan Azure OpenAI. Ya
openai_api_type Gunakan azure untuk validasi token akses. Ya
openai_api_base URL dasar untuk layanan Azure OpenAI API yang disediakan oleh Azure. Ya
openai_api_version Versi layanan Azure OpenAI untuk digunakan, ditentukan oleh tanggal. Ya
openai_deployment_name Nama sumber daya penyebaran untuk layanan Azure OpenAI. Ya
openai_organization Bidang opsional untuk menentukan organisasi di OpenAI. No

Jika Anda menggunakan Azure OpenAI dengan MICROSOFT Entra ID, gunakan parameter berikut dalam konfigurasi titik akhir Anda.

Parameter Konfigurasi Deskripsi Wajib diisi Default
microsoft_entra_tenant_id ID penyewa untuk autentikasi ID Microsoft Entra. Ya
microsoft_entra_client_id ID klien untuk autentikasi ID Microsoft Entra. Ya
microsoft_entra_client_secret Rahasia klien untuk autentikasi ID Microsoft Entra. Ya
openai_api_type Gunakan azuread untuk autentikasi menggunakan ID Microsoft Entra. Ya
openai_api_base URL dasar untuk layanan Azure OpenAI API yang disediakan oleh Azure. Ya
openai_api_version Versi layanan Azure OpenAI untuk digunakan, ditentukan oleh tanggal. Ya
openai_deployment_name Nama sumber daya penyebaran untuk layanan Azure OpenAI. Ya
openai_organization Bidang opsional untuk menentukan organisasi di OpenAI. No

Contoh berikut menunjukkan cara membuat titik akhir dengan Azure OpenAI:

client.create_endpoint(
    name="openai-chat-endpoint",
    config={
        "served_entities": [{
            "external_model": {
                "name": "gpt-3.5-turbo",
                "provider": "openai",
                "task": "llm/v1/chat",
                "openai_config": {
                    "openai_api_type": "azure",
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
                    "openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
                    "openai_deployment_name": "my-gpt-35-turbo-deployment",
                    "openai_api_version": "2023-05-15"
                }
            }
        }]
    }
)

Google Cloud Vertex AI

Parameter Konfigurasi Deskripsi Wajib diisi Default
private_key Ini adalah kunci privat untuk akun layanan yang memiliki akses ke Layanan AI Google Cloud Vertex. Lihat Praktik terbaik untuk mengelola kunci akun layanan. Ya
region Ini adalah wilayah untuk Layanan AI Google Cloud Vertex. Lihat wilayah yang didukung untuk detail selengkapnya. Beberapa model hanya tersedia di wilayah tertentu. Ya
project_id Ini adalah id proyek Google Cloud yang dikaitkan dengan akun layanan. Ya

Amazon Bedrock

Untuk menggunakan Amazon Bedrock sebagai penyedia model eksternal, pelanggan perlu memastikan Bedrock diaktifkan di wilayah AWS yang ditentukan, dan pasangan kunci AWS yang ditentukan memiliki izin yang sesuai untuk berinteraksi dengan layanan Bedrock. Untuk informasi selengkapnya, lihat AWS Identity and Access Management.

Parameter Konfigurasi Deskripsi Wajib diisi Default
aws_region Wilayah AWS yang akan digunakan. Bedrock harus diaktifkan di sana. Ya
aws_access_key_id ID kunci akses AWS dengan izin untuk berinteraksi dengan layanan Bedrock. Ya
aws_secret_access_key Kunci akses rahasia AWS dipasangkan dengan ID kunci akses, dengan izin untuk berinteraksi dengan layanan Bedrock. Ya
bedrock_provider Penyedia yang mendasar di Amazon Bedrock. Nilai yang didukung (tidak peka huruf besar/kecil) meliputi: Anthropic, Cohere, AI21Labs, Amazon Ya

Contoh berikut menunjukkan cara membuat titik akhir dengan Amazon Bedrock.

client.create_endpoint(
    name="bedrock-anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "external_model": {
                    "name": "claude-v2",
                    "provider": "amazon-bedrock",
                    "task": "llm/v1/completions",
                    "amazon_bedrock_config": {
                        "aws_region": "<YOUR_AWS_REGION>",
                        "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
                        "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
                        "bedrock_provider": "anthropic",
                    },
                }
            }
        ]
    },
)

Jika ada masalah izin AWS, Databricks menyarankan agar Anda memverifikasi kredensial langsung dengan AMAZON Bedrock API.

Lab AI21

Parameter Konfigurasi Deskripsi Wajib diisi Default
ai21labs_api_key Ini adalah kunci API untuk layanan AI21 Labs. Ya

Mengkueri titik akhir model eksternal

Setelah Anda membuat titik akhir model eksternal, siap untuk menerima lalu lintas dari pengguna.

Anda dapat mengirim permintaan penilaian ke titik akhir menggunakan klien OpenAI, REST API, atau MLflow Deployments SDK.

Contoh berikut mengkueri claude-2 model penyelesaian yang dihosting oleh Anthropic menggunakan klien OpenAI. Untuk menggunakan klien OpenAI, isi model bidang dengan nama model yang melayani titik akhir yang menghosting model yang ingin Anda kueri.

Contoh ini menggunakan titik akhir yang dibuat sebelumnya, anthropic-completions-endpoint, dikonfigurasi untuk mengakses model eksternal dari penyedia model Antropik. Lihat cara membuat titik akhir model eksternal.

Lihat Model yang didukung untuk model tambahan yang bisa Anda kueri dan penyedianya.

import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="anthropic-completions-endpoint",
  prompt="what is databricks",
  temperature=1.0
)
print(completion)

Format respons output yang diharapkan:

{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Parameter kueri tambahan

Anda dapat meneruskan parameter tambahan apa pun yang didukung oleh penyedia titik akhir sebagai bagian dari kueri Anda.

Contohnya:

  • logit_bias (didukung oleh OpenAI, Cohere).
  • top_k (didukung oleh Anthropic, Cohere).
  • frequency_penalty (didukung oleh OpenAI, Cohere).
  • presence_penalty (didukung oleh OpenAI, Cohere).
  • stream (didukung oleh OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Ini hanya tersedia untuk permintaan obrolan dan penyelesaian.

Batasan

Bergantung pada model eksternal yang Anda pilih, konfigurasi Anda dapat menyebabkan data Anda diproses di luar wilayah tempat data Anda berasal. Lihat Batas dan wilayah Layanan Model.

Jika Anda memilih untuk mengonfigurasi beberapa model eksternal dalam titik akhir penyajian, semua model eksternal harus memiliki jenis tugas yang sama dan setiap model memerlukan yang unik name. Anda tidak dapat memiliki model eksternal dan model non-eksternal di titik akhir penyajian yang sama.

Sumber Daya Tambahan: