PAI-EAS, DeepSeek ve Qwen gibi popüler büyük dil modellerini (LLM) tek tıklamayla dağıtmak için uçtan uca bir çözüm sunar. Bu sayede ortam yapılandırması, performans ayarlaması ve maliyet yönetimi gibi karmaşık görevler basitleştirilir.
Hızlı başlangıç: Açık kaynaklı bir modeli dağıtın
Bu örnekte Qwen3-8B açık kaynaklı modelinin nasıl dağıtılacağı gösterilmektedir. Aynı süreç diğer desteklenen modeller için de geçerlidir.
Adım 1: Hizmet oluşturun
PAI console oturumunu açın. Sayfanın üst kısmından bir bölge seçin. Ardından istediğiniz çalışma alanını seçin ve Enter Elastic Algorithm Service (EAS) öğesine tıklayın.
Deploy Service öğesine tıklayın. Scenario-based Model Deployment alanında LLM Deployment seçeneğine tıklayın.
-
Aşağıdaki temel parametreleri yapılandırın:
Parametre
Değer
Model Settings
Public Model seçeneğini belirleyin, ardından Qwen3-8B modelini aratıp seçin.
Inference Engine
vLLM (Önerilen, OpenAI API uyumlu) seçeneğini belirleyin.
Deployment Template
Single-Node seçeneğini belirleyin. Sistem, şablona göre örnek türü ve görüntü gibi önerilen parametreleri otomatik olarak doldurur. -
Deploy öğesine tıklayın. Hizmet dağıtımı yaklaşık 5 dakika sürer. Hizmet durumu Running olarak değiştiğinde dağıtım başarılı olur.
NotHizmet dağıtımı başarısız olursa sorun giderme adımları için Hizmet dağıtımı ve durum sorunları konusuna bakın.
Adım 2: Hizmeti doğrulayın
Dağıtım tamamlandıktan sonra çevrimiçi hata ayıklama özelliğini kullanarak hizmetin doğru çalıştığını doğrulayabilirsiniz.
Hizmet adına tıklayarak ayrıntılar sayfasını açın ve Online Debugging sekmesine geçin.
-
Aşağıdaki istek parametrelerini yapılandırın:
Parametre
Değer
İstek yöntemi
POST
URL yolu
Tam URL yolunu
/api/predict/{service_name}/v1/chat/completionsbiçiminde girin; burada{service_name}, dağıttığınız hizmetin adıdır. Örnek:/api/predict/llm_qwen3_8b_test/v1/chat/completions.Gövde (Body)
{ "model": "Qwen3-8B", "messages": [ {"role": "user", "content": "Hello!"} ], "max_tokens": 1024 }Başlıklar (Headers)
İsteğin
Content-Type: application/jsoniçerdiğinden emin olun. Send Request öğesine tıklayın. Modelin yanıtını içeren bir cevap almalısınız.
İstek 200 durum kodu ve chat.completion türünde bir JSON yanıtı döndürüyorsa hizmet başarıyla dağıtılmış ve çalışıyor demektir. Yanıt gövdesi, modelin yanıtını content alanında içerir.
API'yi çağırın
Hizmeti çağırmadan önce hizmet ayrıntıları sayfasındaki View Endpoint Information sekmesine giderek uç nokta ve belirteç bilgilerini alın.
Aşağıdaki örneklerde hizmet API'sinin nasıl çağrılacağı gösterilmektedir:
cURL
curl -X POST <EAS_ENDPOINT>/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "<model_name>",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "hello"
}
],
"max_tokens":1024,
"temperature": 0.7,
"top_p": 0.8,
"stream":true
}'
Yukarıdaki kodda aşağıdaki parametreleri değiştirin:
<EAS_ENDPOINT>ve<EAS_TOKEN>değerlerini, dağıttığınız hizmetin uç noktası ve belirteci ile değiştirin.-
<model_name>değerini model adı ile değiştirin. vLLM veya SGLang için model adını<EAS_ENDPOINT>/v1/modelsuç noktasındaki model listesi API'sinden alabilirsiniz.curl -X GET <EAS_ENDPOINT>/v1/models -H "Authorization: <EAS_TOKEN>"
OpenAI SDK
Hizmetle etkileşim kurmak için resmi Python SDK'sını kullanmanızı öneririz. OpenAI SDK'yı yüklediğinizden emin olun: pip install openai.
from openai import OpenAI
# 1. Configure the client.
# Replace <EAS_TOKEN> with the token of your deployed service.
openai_api_key = "<EAS_TOKEN>"
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
# 2. Get the model name.
# For BladeLLM, set model = "". BladeLLM does not require a model parameter
# and does not support getting the model name by using client.models.list().
# Set it to an empty string to meet the mandatory parameter requirement of the OpenAI SDK.
models = client.models.list()
model = models.data[0].id
print(model)
# 3. Send a chat request.
# Both streaming (stream=True) and non-streaming (stream=False) outputs are supported.
stream = True
chat_completion = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
],
model=model,
top_p=0.8,
temperature=0.7,
max_tokens=1024,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
Python requests
OpenAI SDK bağımlılığı eklemek istemiyorsanız requests kitaplığını kullanabilirsiniz.
import json
import requests
# Replace <EAS_ENDPOINT> with the endpoint of your deployed service.
EAS_ENDPOINT = "<EAS_ENDPOINT>"
# Replace <EAS_TOKEN> with the token of your deployed service.
EAS_TOKEN = "<EAS_TOKEN>"
# Replace <model_name> with the model name. You can get it from the <EAS_ENDPOINT>/v1/models API.
# For BladeLLM, this API is not supported. You can omit the "model" field or set it to "".
model = "<model_name>"
url = f"{EAS_ENDPOINT}/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": EAS_TOKEN,
}
stream = True
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "hello"},
]
req = {
"messages": messages,
"stream": stream,
"temperature": 0.7,
"top_p": 0.8,
"max_tokens": 1024,
"model": model,
}
response = requests.post(
url,
json=req,
headers=headers,
stream=stream,
)
if stream:
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
# The following code processes Server-Sent Events (SSE) formatted streaming responses.
if msg.startswith("data:"):
info = msg[6:]
if info == "[DONE]":
break
else:
resp = json.loads(info)
if resp["choices"][0]["delta"].get("content") is not None:
print(resp["choices"][0]["delta"]["content"], end="", flush=True)
else:
resp = json.loads(response.text)
print(resp["choices"][0]["message"]["content"])
Yerel bir web kullanıcı arayüzü oluşturun
Gradio, modeller için etkileşimli arayüzler hızlı bir şekilde oluşturmanıza yardımcı olan bir Python UI kitaplığıdır. Yerel olarak bir Gradio web kullanıcı arayüzü çalıştırmak için şu adımları izleyin.
-
Kodu indirin
-
Ortamı hazırlayın
Python 3.10 veya üzeri bir sürüm gerekir ve
pip install openai gradiokomutunu çalıştırarak bağımlılıkları yüklemeniz gerekir. -
Web uygulamasını başlatın
Terminalde aşağıdaki komutu yürütün.
<EAS_ENDPOINT>ve<EAS_TOKEN>değerlerini dağıtılan hizmetin uç noktası ve belirteci ile değiştirin.python webui_client.py --eas_endpoint "<EAS_ENDPOINT>" --eas_token "<EAS_TOKEN>" Başlatma başarılı olduktan sonra yerel bir URL çıktılanır (genellikle
http://127.0.0.1:7860). Erişmek için bu URL'yi bir tarayıcıda açın.
Üçüncü taraf uygulamalarla entegre edin
Bir PAI-EAS hizmetini, OpenAI API'yi destekleyen çeşitli istemciler ve geliştirme araçlarıyla entegre edebilirsiniz. Temel yapılandırma ayarları hizmet uç noktası, belirteç ve model adıdır.
Dify
-
OpenAI API uyumlu model sağlayıcısını yükleyin
Sağ üst köşedeki avatarınıza tıklayın ve Settings seçeneğini belirleyin. Sol bölmede Model Providers seçeneğine tıklayın. Model List içinde OpenAI-API-compatible yoksa aşağıdaki listede bulun ve Install öğesine tıklayın.
-
Model ekleyin
OpenAI-API-compatible kartının sağ alt köşesindeki Add Model öğesine tıklayın ve aşağıdaki parametreleri yapılandırın:
Model type: LLM seçeneğini belirleyin.
Model name: vLLM dağıtımı için ad almak üzere
/v1/modelsuç noktasına bir GET isteği gönderin. Bu örnek için Qwen3-8B girin.API key: PAI-EAS hizmet belirtecinizi girin.
API endpoint URL: PAI-EAS hizmetinizin genel uç noktasını girin ve sonuna /v1 ekleyin.
-
Entegrasyonu test edin
Dify ana sayfasında Create Blank App öğesine tıklayın, Chatflow türünü seçin, bir uygulama adı ve diğer bilgileri girin, ardından Create öğesine tıklayın.
LLM düğümüne tıklayın, eklediğiniz modeli seçin ve bağlam ile istemleri ayarlayın. OpenAI-API-compatible kategorisinden Qwen3-8B CHAT seçeneğini belirleyin. SYSTEM istemine bir rol açıklaması girin ve sys.query bağlam değişkenine referans verin. USER alanında sys.query ve sys.files değişkenlerini ekleyin. Max Tokens (varsayılan 512), Presence Penalty ve Thinking Mode gibi model parametrelerini gerektiği gibi ayarlayabilirsiniz.
-
Sağ üst köşedeki Preview öğesine tıklayın ve bir soru girin.
Bot, soruyu workflow üzerinden işler ve bir yanıt döndürür. Konuşma alanının üst kısmında Deep thinking durumu ve geçen süre görüntülenir.
Chatbox
Chatbox adresine giderek cihazınız için istemciyi indirip yükleyin veya web sürümü için Launch Web App öğesine tıklayın. Bu örnekte macOS M3 kullanılmaktadır.
Model sağlayıcı ekleyin. Settings öğesine tıklayın, bir model sağlayıcı ekleyin,
paigibi bir ad girin ve API modu olarak OpenAI API Compatible seçeneğini belirleyin.-
pai sağlayıcısını seçin ve aşağıdaki parametreleri yapılandırın:
API key: PAI-EAS hizmet belirtecinizi girin.
API host: PAI-EAS hizmetinizin genel uç noktasını girin ve sonuna /v1 ekleyin.
API path: Bu alanı boş bırakın.
Model: Modeli eklemek için Get öğesine tıklayın. BladeLLM çıkarım motoru, API tabanlı model alma işlemini desteklemez. BladeLLM kullanıyorsanız New öğesine tıklayarak modeli manuel olarak ekleyin.
-
Sohbeti test edin. New Chat öğesine tıklayın ve metin giriş kutusunun sağ alt köşesindeki model hizmetini seçin.
Sohbet arayüzünün üst kısmında
You are a helpful assistant.gibi bir sistem istemi görüntülenir. Metin kutusuna "Who are you?" gibi bir soru girin ve gönderin. Asistanın yanıt alanında, düşünme süresini gösteren daraltılmış bir Deep thinking bölümü ve ardından modelin yanıtı yer alır.
Cherry Studio
-
İstemciyi yükleyin
İstemciyi indirmek ve yüklemek için Cherry Studio adresini ziyaret edin.
Ayrıca şuradan da indirebilirsiniz:
https://github.com/CherryHQ/cherry-studio/releases. -
Model hizmetini yapılandırın
Sol alt köşedeki ayarlar simgesine tıklayın. Model Service bölümünün altında Add öğesine tıklayın. Provider name alanına PAI gibi özel bir ad girin ve sağlayıcı türünü OpenAI olarak ayarlayın. OK öğesine tıklayın.
API key alanına PAI-EAS hizmet belirtecinizi girin. API address alanına PAI-EAS hizmetinizin genel uç noktasını girin.
Add öğesine tıklayın ve Model ID alanına model adını girin. vLLM dağıtımları için adı
/v1/modelsAPI'sine bir GET isteği göndererek alabilirsiniz. Örneğin,Qwen3-8Bgirin. Ad büyük/küçük harfe duyarlıdır. API Address için URL'yi girin ancak sondaki v1 sürüm numarasını atlayın. URL bir#karakteriyle biterse sistem/v1/chat/completionsyolunu zorunlu olarak kullanır. Yapılandırma tamamlandığında Model bölümü Qwen3-8B gibi kullanılabilir modelleri otomatik olarak tanımlar ve listeler.Bağlantıyı doğrulamak için API key giriş alanının yanındaki Test öğesine tıklayın.
-
Modeli hızlıca test edin
Sohbet arayüzüne dönün, üst kısımdan modeli seçin ve bir konuşma başlatın.
Örneğin, Who are you? girdiğinizde Qwen3-8B modeli bir kendini tanıtma yanıtı veriyorsa modelin başarıyla dağıtıldığı ve çalıştığı anlamına gelir.
LangChain
LangChain, LLM uygulamaları oluşturmak için yaygın olarak kullanılan bir Python çerçevesidir. Bir PAI-EAS hizmeti OpenAI API ile uyumlu olduğundan hizmeti doğrudan langchain_openai.ChatOpenAI ile çağırabilirsiniz; örneğin, bir istem şablonunu zincire dönüştürmek için.
-
Bağımlılıkları yükleyin
pip install langchain langchain-openai -
Modeli yapılandırın. Aşağıdaki parametrelerle
ChatOpenAIyapılandırmasını yapın:base_url: PAI-EAS hizmetinizin genel uç noktasını girin ve sonuna /v1 ekleyin.
api_key: PAI-EAS hizmet belirtecinizi girin.
model: Model adını girin. vLLM dağıtımı için ad almak üzere
/v1/modelsuç noktasına bir GET isteği gönderin. Bu örnek içinQwen3-8Bgirin.
from langchain_openai import ChatOpenAI llm = ChatOpenAI( base_url="<EAS_ENDPOINT>/v1", api_key="<EAS_TOKEN>", model="<model_name>" )Önemlibase_urldeğerine/v1eklemelisiniz. PAI-EAS hizmetinizin genel uç noktasını/v1olmadan girerseniz çağrı 404 hatası döndürür. -
Zincir çağrısı.
|operatörünü kullanarak modeliChatPromptTemplateile birleştirebilirsiniz:from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_messages([ ("system", "You are a helpful assistant."), ("user", "{input}") ]) chain = prompt | llm response = chain.invoke({"input": "Who are you?"}) print(response.content)
Faturalama
Maliyetler aşağıdakileri içerir ancak bunlarla sınırlı değildir. Daha fazla bilgi için PAI-EAS faturalandırması konusuna bakın.
İşlem ücretleri: Bu, birincil maliyettir. Bir PAI-EAS hizmeti oluştururken ihtiyaçlarınıza göre kullandıkça öde veya abonelik kaynaklarını seçin.
Depolama ücretleri: Özel bir model kullanıyorsanız model dosyaları Object Storage Service (OSS) üzerinde depolanır ve bu durum depolama ücretlerine neden olur.
Üretim kullanımı
Doğru modeli seçin
-
Uygulama senaryonuzu tanımlayın:
Genel konuşma: Modelin talimatlarınızı anlamasını ve takip etmesini sağlamak için her zaman temel model yerine talimatla ince ayarlanmış bir model seçin.
Kod Oluşturma: Kodla ilgili görevlerde genellikle genel amaçlı modellere kıyasla çok daha iyi performans gösterdikleri için
Qwen3-Coderserisi gibi özel kod modellerini seçin.Alana özgü görevler: Göreviniz finans veya hukuk gibi oldukça uzmanlaşmış bir alansa o alan için ince ayar yapılmış bir model bulmayı veya genel amaçlı bir modeli kendiniz ince ayar yapmayı düşünün.
Performans ve maliyeti dengeleyin: Daha büyük modeller genellikle daha yeteneklidir ancak daha fazla hesaplama kaynağı gerektirir ve çıkarım maliyetleri daha yüksektir. Doğrulama için 7B modeli gibi daha küçük bir modelle başlayın. Performansı ihtiyaçlarınızı karşılamazsa daha büyük bir model deneyin.
Yetkili karşılaştırmalara başvurun: OpenCompass ve LMSys Chatbot Arena gibi liderlik tablolarına danışabilirsiniz. Bu tablolar modelleri akıl yürütme, kodlama ve matematik gibi birçok boyutta değerlendirir ve model seçimi için değerli rehberlik sağlar.
Doğru çıkarım motorunu seçin
vLLM/SGLang: Açık kaynak topluluğunda yaygın tercihler olarak geniş model desteği ve kapsamlı topluluk belgeleri ve örnekleri sunarlar; bu da entegrasyonu ve sorun gidermeyi kolaylaştırır.
BladeLLM: Alibaba Cloud PAI ekibi tarafından geliştirilen bir çıkarım motorudur. Özellikle Qwen serisi olmak üzere belirli modeller için derinlemesine optimize edilmiştir ve daha yüksek performans ile daha düşük GPU bellek kullanımı sağlayabilir.
Çıkarım optimizasyonu
Akıllı yönlendirme ile bir LLM dağıtın: İstekleri token aktarım hızı ve GPU bellek kullanımı gibi gerçek zamanlı ölçümlere göre dinamik olarak dağıtır. Bu yaklaşım, çıkarım örnekleri arasında hesaplama gücü ve bellek tahsisini dengeler ve birden fazla çıkarım örneği ile eşit olmayan şekilde dağıtılmış istek yükleri olan dağıtımlar için uygundur. Küme kaynak kullanımını ve sistem kararlılığını artırır.
Uzman paralelliği ve PD ayrımı kullanarak Karışık Uzmanlar (MoE) modellerini dağıtın: Karışık Uzmanlar (MoE) modelleri için bu yaklaşım, çıkarım verimliliğini artırmak ve dağıtım maliyetlerini düşürmek amacıyla uzman paralelliği (EP) ve Ön İşleme-Kod Çözme (PD) ayrımı gibi teknikler kullanır.
SSS
S: Hizmet Beklemede durumunda takılı kalıyor
Sorunu gidermek için şu adımları izleyin:
Örnek durumunu kontrol edin: Hizmet listesi sayfasında hizmet adına tıklayarak ayrıntılar sayfasına gidin. Service Instance bölümünde örnek durumunu kontrol edin.
insufficient resourcesgösteriyorsa mevcut genel kaynak grubunda yeterli kapasite yoktur.-
Çözümler (öncelik sırasına göre):
Seçenek 1: Örnek türünü değiştirin. Dağıtım sayfasına dönün ve farklı bir GPU modeli seçin.
Çözüm 2: Ayrılmış kaynakları kullanın. Resource Type için ayrılmış kaynakları kullanmak üzere bir EAS kaynak grubu seçin (kaynak grubunun önceden oluşturulmuş olması gerekir).
-
Önleyici tedbirler:
Genel kaynakların sınırlamalarını önlemek için ayrılmış bir kaynak grubu oluşturun.
Yoğun saatlerde birden fazla bölgede test yapın.
S: Çağrı hataları
-
API çağrısı aşağıdaki hatayı döndürüyor: Unsupported Media Type: Only 'application/json' is allowed
İstek başlıklarının
Content-Type: application/jsoniçerdiğinden emin olun. -
API çağrısı aşağıdaki hatayı döndürüyor: The model '<model_name>' does not exist.
vLLM çıkarım motoru, model alanının doğru şekilde belirtilmesini gerektirir. Model adını
/v1/modelsuç noktasına bir GET isteği göndererek alabilirsiniz.
Diğer sorular için EAS SSS konusuna bakın.