Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Windows ML Çalışma Zamanı ve Metin Oluşturma API'leri şu anda deneyseldir ve üretim ortamlarında kullanılmak üzere desteklenmez. Bu API'leri deneyen uygulamalar Microsoft Store'da yayımlanmamalıdır.
Important
Windows ML Çalışma Zamanı ve Metin Oluşturma API'leri şu anda C++ ve Python'da kullanılabilir; C# şu anda desteklenmiyor. C# dilinden bu API'leri kullanmakla ilgileniyorsanız, Windows ML GitHub deposunda bir sorun göndererek bize bildirin!
Windows ML Metin Oluşturma API'si, kendi dil modeliniz üzerinden metin oluşturmayı basitleştirir. ONNX Runtime GenAI'nin ONNX Runtime üzerinde bu döngüyü basitleştirmesine benzer şekilde, Windows ML Runtime API'nin üzerinde sizin için belirteçleştirme, otoregresif kod çözme, akış çıktısı ve iptal işlemlerini gerçekleştirir. Windows bu API için bir modelle birlikte gelmez; modeli (ONNX veya GGUF dosyası ve belirteç oluşturucu) uygulamanızla birlikte seçer, paketler ve dağıtırsınız.
Tip
Belirli bir modele ihtiyacınız yoksa ve yalnızca Microsoft'un yönettiği bir modelle cihaz içi metin oluşturmak istiyorsanız, bunun yerine kullanıma hazır yerel LLM'lerden birini kullanın.
Yine de temel çalışma zamanı nesnelerini (model, yürütme hedefi ve işlem hattı) oluşturur ve bunları oturuma iletirsiniz. API donanım yerleşimini gizlemez; yalnızca kendi belirteç döngünüzü yazma gereksinimini ortadan kaldırır.
Desteklenen modeller
Metin Oluşturma API'si şunları kabul eder:
-
ONNX (
.onnx) veya ORT biçimi (.ort) modellerini ONNX Runtime ile çalıştırın. Model bir belirteç kimliği girişi, bir logits çıkışı ve anahtar/değer önbelleğini ve sıra konumunu tutan bir sabit kapasiteli durum tensor çiftini kullanıma sunmalıdır. Ayrı bir tokenizer kaynağı (örneğin, birtokenizer.json) sağlarsınız. -
GGUF (
.gguf) modelleri, llama.cpp arka ucu üzerinden çalışır. Tokenizer modele gömülüdür, bu nedenle ayrı bir tokenizer kaynağı gerekmez.
Örnekler, bu sözleşmeyi, anahtar/değer önbelleğini ve sıra konumunu tek bir durum çiftinde paketleyen göreve özgü bir grafikle dışa aktarılmış Qwen2.5-0.5B-Instruct model ailesine karşı doğrular. Aynı belirteç girişini, logits çıkışını ve durum sözleşmesini kullanıma sunan diğer yalnızca kod çözücü içeren dil modelleri de çalışmalıdır.
Metin oluşturma
Metin oluşturma oturumu, tokenleştiriciyi ve durum bilgisi olan bir pipeline'ı (anahtar/değer önbelleğinin sahibi olan model) sarmalar. Modeli ve tokenizer'ı yükleyin, modelin belirteç girişini, logits çıkışını ve durum sözleşmesini açıklayın ve oturumu oluşturun:
// Create the runtime and an execution target (CPU here; GPU/NPU also available).
ComPtr<IWinMLRuntime> runtime;
THROW_IF_FAILED(WinMLCreateRuntime(IID_PPV_ARGS(runtime.GetAddressOf())));
ComPtr<IWinMLExecutionTarget> target;
THROW_IF_FAILED(runtime->CreateCpuExecutionTarget(target.GetAddressOf()));
// Load your ONNX model and its tokenizer.
ComPtr<IWinMLModel> model;
THROW_IF_FAILED(runtime->LoadModelFromFile(
L"C:\\models\\qwen2.5-0.5b-instruct\\task_model.onnx",
nullptr,
model.GetAddressOf()));
ComPtr<IWinMLTokenizer> tokenizer;
THROW_IF_FAILED(WinMLCreateTokenizerFromFile(
L"C:\\models\\qwen2.5-0.5b-instruct\\tokenizer.json",
tokenizer.GetAddressOf()));
// Describe the model's token input, logits output, and KV-cache state pair.
winml::tasks::text_generation::onnx::StateTensorPair stateTensorPairs[] = {{1, 1}};
winml::tasks::text_generation::Options options;
options.values = winml::tasks::MakeTextGenerationOptions(/* maxNewTokens */ 64);
winml::tasks::text_generation::onnx::BuildTextGenerationArguments arguments;
arguments.runtime = runtime.Get();
arguments.model = model.Get();
arguments.target = target.Get();
arguments.tokenizer = tokenizer.Get();
arguments.tokenInputName = L"input_ids";
arguments.outputName = L"logits";
arguments.debugName = L"my-text-generation";
arguments.stateTensorPairs = stateTensorPairs;
arguments.sequenceCapacityHint = 128;
arguments.outputKind = WINML_TEXT_GENERATION_OUTPUT_KIND_LOGITS;
arguments.eosPolicy = WINML_TEXT_GENERATION_EOS_POLICY_TOKENIZER_DEFAULT;
arguments.options = &options;
winml::tasks::text_generation::TextGeneration textGeneration;
THROW_IF_FAILED(winml::tasks::text_generation::onnx::BuildTextGeneration(
arguments, textGeneration));
Bir akış işlemi başlatmak için GenerateText öğesini bir istemle çağırın, ardından döndürülen akıştan tamamlandığını bildirene kadar parçaları çekin:
ComPtr<IWinMLCancellationSource> cancellation;
THROW_IF_FAILED(textGeneration.tasks->CreateCancellationSource(
cancellation.GetAddressOf()));
ComPtr<IWinMLTextGenerationPullStream> stream;
THROW_IF_FAILED(textGeneration.session->GenerateText(
L"The sky is often",
textGeneration.options.Get(),
cancellation.Get(),
stream.GetAddressOf()));
// Pull generated text one fragment at a time until the stream completes.
WINML_TEXT_GENERATION_READ_STATUS status{};
UINT32 tokenId = 0;
LPCWSTR fragment = nullptr;
while (SUCCEEDED(stream->ReadNext(&status, &tokenId, &fragment)) &&
status == WINML_TEXT_GENERATION_READ_STATUS_UPDATE)
{
std::wprintf(L"%ls", fragment);
}
// The terminal result is the authoritative text, token counts, and finish reason.
ComPtr<IWinMLTextGenerationResult> result;
THROW_IF_FAILED(stream->GetResult(result.GetAddressOf()));
Tamamlanan sonuç rapor eder:
- Oluşturulan metnin tamamı ve belirteç kimlikleri
- İstem ve oluşturulan belirteç sayıları
- Bitiş nedeni: sıra sonu belirteci, durdurma belirteci, istenen belirteç sınırı, sıra kapasitesi, iptal veya hata
C++ ve Python
Yerel API, WinMLTasks.h aracılığıyla ve winml/tasks/text_generation/TextGeneration.hpp altındaki türlendirilmiş C++ yardımcıları aracılığıyla kullanıma sunulur. Python uygulamaları projeksiyonu windowsml.tasks ile windowsml.runtime birlikte kullanır.
Windows ML örnekleri bir C++ ve Python metin oluşturma örneği içerir. Örnekte, soyutlamanın nerede başladığını ve temel alınan iş akışını nasıl özelleştirebileceğinizi görebilmeniz için metin oluşturma yapılandırmasının yanında tam Çalışma Zamanı kurulumu gösterilir.