Aracılığıyla paylaş


Azure'da yapay zeka iş yükleri için uygulama tasarımı

Yapay zeka işlevlerine sahip bir uygulama oluştururken göz önünde bulundurmanız gereken birçok seçenek vardır. Kullanım örneğinin geleneksel makine öğrenmesi, üretken, belirleyici veya yapay zeka türlerinin birleşimi gibi benzersiz işlevsel ve işlevsel olmayan gereksinimleriniz, tasarımınızla ilgili üst düzey kararları daraltmanıza yardımcı olur. Üst düzey tasarım alanlarından alt düzey tasarım alanlarına geçiş yaptığınız sürece bu seçenekleri göz önünde bulunduracaksınız.

Başlarken makalesinde açıklandığı gibi, kendi modelinizi oluşturup oluşturmayacağınız veya önceden oluşturulmuş bir model kullanıp kullanmayacağınız, alınacak ilk önemli kararlardan biridir. Önceden oluşturulmuş bir model kullandığınızda şu noktaları göz önünde bulundurun:

  • Katalog kaynakları. Önceden eğitilmiş modelleri bulmak için Hugging Face Model Hub, TensorFlow Hub ve Azure AI Foundry portalı model kataloğu gibi depoları keşfedin. Bu platformlar, çeşitli görevler için kapsamlı bir model kataloğu sağlar.

  • Lisanslama. Özellikle uygulamayı dağıtmayı veya diğer hizmetlerle tümleştirmeyi planlıyorsanız modelin lisanslama koşullarının güvenlik, uyumluluk ve uygulama hedeflerinize uygun olduğundan emin olun.

  • Temel bileşenler. Görevin veya etki alanınızın ince ayarlı olup olmadığını belirlemek için modelin mimarisine, eğitim verilerine, performansa ve lisanslamaya bakın.

Barındırma platformu seçme konusunda rehberlik için bkz. Model barındırma ve çıkarım platformuiçin dikkat edilmesi gerekenler.

Bu makalede, teknoloji ve yaklaşım hakkında karar alırken göz önünde bulundurmanız gereken yaygın tasarım alanları ve faktörler açıklanmaktadır.

Öneriler

Aşağıdaki tablo, bu makalede sağlanan önerileri özetlemektedir.

Öneri Açıklama
Kullanıma açık çözümlerin önceliklerini belirleyin. Pratik olduğunda, iş yükü işlevlerini işlemek için hizmet olarak platform (PaaS) çözümlerini kullanın. İş yükü ve operasyon ekipleriniz için operasyonel ve geliştirme yükünü en aza indirmek için mümkün olduğunca önceden oluşturulmuş ve önceden eğitilmiş modelleri kullanın.
İşlevleri ve yetenekleri istemciden uzağa soyutlayın. Yatay kesen konular olan hız sınırlama ve yük devretme işlemlerini ele almak için arka uç servisleri tasarlayarak istemciyi olabildiğince ince tutun.
Veri depolarına erişimi engelleyin. Yapay zeka sistemindeki kodlar veri depolarınıza doğrudan erişmemelidir. Tüm veri isteklerini bir API katmanı üzerinden yönlendirin. API'ler özel olarak gerekli görev için oluşturulmalıdır.
Modellerinizi yalıtın. Veri depolarında olduğu gibi, modele yönelik istekler için bir ağ geçidi görevi görmek için bir API katmanı kullanın. Azure OpenAI Hizmeti ve Azure Machine Learning gibi bazı PaaS çözümleri bu amaçla SDK'ları kullanır. İstem akışı gibi birçok araç, API'leri hizmete yaymak için yerel destek içerir.
Bileşenleri bağımsız olarak dağıtılacak şekilde tasarlar. Yapay zeka modelleri, veri işlem hatları, ön uç bileşenleri ve veri ön işleme, özellik ayıklama ve çıkarım gibi mikro hizmetler, iş yükünüzün esnekliğini, ölçeklenebilirliğini ve çalışabilirliğini iyileştirmek için bağımsız olarak dağıtılabilir olmalıdır.

Bileşenleri kapsayıcıya alma

Bağımsız olarak dağıtılabilir bileşenlerinizin tamamen bağımsız olduğundan emin olmak ve dağıtımlarınızı kolaylaştırmak için, tasarım stratejinizin bir parçası olarak kapsayıcıya almayı göz önünde bulundurun. Aşağıdaki bileşenler kapsayıcılı hale getirilmelidir:

  • Mikroservisler. Veri işleme, model çıkarımı ve kullanıcı kimlik doğrulaması gibi uygulamanın belirli işlevlerini işleyen tek tek mikro hizmetler kapsayıcılı hale getirilmelidir. Bu yaklaşım bağımsız dağıtıma ve ölçeklendirmeye olanak tanır ve daha verimli güncelleştirmeler ve bakımlar sağlar.

  • yapay zeka modelleri. Tüm bağımlılıkların, kitaplıkların ve yapılandırmaların birlikte paketlenmiş olduğundan emin olmak için yapay zeka modellerini kapsayıcılı hale getirin. Bu yaklaşım, sürüm çakışmalarını önlemek ve farklı dağıtım ortamlarında tutarlı davranış sağlamaya yardımcı olmak için model ortamını konak sisteminden yalıtır.

  • Veri işleme işlem hatları. Veri temizleme, dönüştürme ve özellik ayıklama gibi model çıkarımı öncesinde veya sonrasında gelen tüm veri işleme görevleri kapsayıcılı hale getirilmelidir. Bu yaklaşım yeniden üretilebilirliği artırır ve bağımlılıkların yönetimini basitleştirir.

  • Altyapı hizmetleri. Veritabanları ve önbelleğe alma katmanları gibi altyapı desteği sağlayan hizmetler de kapsayıcılamadan yararlanabilir. Bu hizmetleri kapsayıcıya almak, sürüm tutarlılığını korumaya yardımcı olur ve bu bileşenlerin daha kolay ölçeklendirilmesini ve yönetilmesini kolaylaştırır.

Yapay zeka bileşenlerini diğer iş yükü bileşenleriyle birlikte birleştirme

Yapay zeka bileşenlerinizi diğer iş yükü bileşenleriyle birlikte kullanmak için çeşitli iyi nedenler vardır, ancak bunu yapmakla ilişkili avantajlar vardır. Bileşenleri şu nedenlerle bir araya getirmeyi seçebilirsiniz:

  • Gecikme duyarlılığı. Düşük gecikme süresi önemli olduğunda, yapay zeka bileşenlerini API barındırma gibi diğer hizmetlerle birlikte kullanın. Örneğin, kullanıcı deneyimini geliştirmek için gerçek zamanlı çıkarıma ihtiyacınız varsa, yapay zeka modellerini API'nin yakınlarına yerleştirmek sonuçları almak için gereken süreyi en aza indirebilirsiniz.

  • Veri yakınlığı. Yapay zeka modelleri, arama dizini gibi belirli veri kümelerine sık erişim gerektirdiğinde, bu bileşenlerin birlikte bulunması performansı artırabilir ve işlemeyi ve çıkarımı hızlandırmak için veri aktarımı ek yükünü azaltabilir.

  • Kaynak kullanımı. Belirli bileşenlerin CPU ve bellek gibi tamamlayıcı kaynak gereksinimleri varsa bunları birlikte konumlandırmak kaynak kullanımını iyileştirebilir. Örneğin, önemli hesaplama gerektiren bir model, kaynakları aynı anda daha düşük taleplere sahip bir hizmetle paylaşabilir.

Tradeoff. Bileşenleri birlikte bulundurmayı mı seçip seçmeyeceğinize karar verirken ödün vermeniz gereken durumlar vardır. Bileşenleri bağımsız olarak dağıtma veya ölçeklendirme özelliğini kaybedebilirsiniz. Ayrıca olayların olası patlama yarıçapını artırarak arıza riskini artırabilirsiniz.

Düzenleyicilerin üretken yapay zeka çözümlerinde kullanımını değerlendirme

Düzenleyici, yapay zeka çözümünün karmaşık iş yüklerinde yönetilmesi zor olabilecek farklı bileşenleri arasındaki iletişimi koordine ederek bir iş akışını yönetir. İş yükünüz aşağıdaki özelliklerden herhangi birine sahipse tasarımınızda bir düzenleyici oluşturmanızı öneririz:

  • Karmaşık iş akışları. İş akışı ön işleme, model zincirleme veya son işlem gibi birden çok adımı içerir.

  • Koşullu Mantık. Sonuçları farklı modellere yönlendirme gibi kararlar model çıkışlarına göre dinamik olarak alınmalıdır.

  • Ölçeklendirme ve kaynak yönetimi. İsteğe bağlı model ölçeklendirmeyi kullanarak yüksek hacimli uygulamalar için kaynak ayırmayı yönetmeniz gerekir.

  • Durum yönetimi. Kullanıcı etkileşimlerinin durumunu ve belleğini yönetmeniz gerekir.

  • Veri elde etme. Dizinden büyütme verilerini alabilmeniz gerekir.

Birden çok model kullanma konusunda dikkat edilmesi gerekenler

İş yükünüz birden çok model kullandığında bir düzenleyici gereklidir. Orchestrator, kullanım örneğine göre verileri ve istekleri uygun modele yönlendirir. Bir modelden alınan çıkışların başka bir model için giriş olarak hizmet verebildiğinden emin olarak modeller arasında veri akışını planlayın. Planlama, veri dönüştürme veya zenginleştirme işlemlerini içerebilir.

Orkestrasyon ve ajanlar

Üretken yapay zeka iş yükleri için, orkestrasyonunuza genişletilebilirlik katmak amacıyla ajan tabanlı, bazen de ajanik olarak adlandırılan bir yaklaşım kullanmayı göz önünde bulundurun. Ajanslar bağlama özgü işlevsellik sağlar. Mikro hizmetlerle birçok özelliği paylaşır ve bir düzenleyiciyle birlikte görevler gerçekleştirirler. Koordine edici, görevleri bir aracılar havuzuna duyurabilir veya aracılar yeteneklerini koordine ediciye kaydedebilir. Her iki yaklaşım da düzenleyicinin sorgunun aracılar arasında nasıl ayrılıp yönlendirileceğini dinamik olarak belirlemesine olanak sağlar.

Ortak bir kullanıcı arayüzü yüzeyine sahip olduğunuz durumlarda, ajan veya aracı temelli yaklaşımlar, zamanla akışa daha fazla beceri ve sabit veri eklenmesini sağlayan çeşitli ve gelişen özelliklerin deneyime entegre edilebilmesi açısından idealdir.

Çok sayıda aracıya sahip karmaşık iş yüklerinde, görevleri ayırmak ve atamak için düzenleyici kullanmak yerine aracıların dinamik olarak işbirliği yapmasına izin vermek daha verimlidir.

Düzenleyici ile aracılar arasındaki iletişim, aracıların bir konuya abone olduğu ve düzenleyicinin kuyruk aracılığıyla görev gönderdiği konu kuyruğu desenini izlemelidir.

Aracı bir yaklaşım benimsemek, koreografi modeli yerine orkestrasyon modeliyle daha iyi sonuç verir.

Daha fazla bilgi için Orkestrasyon platformuyla ilgili önemli noktalara bakınız.

API ağ geçitlerinin kullanımını değerlendirme

Azure API Management gibi API ağ geçitleri, işlevleri API'lerden soyutlar ve bu da istekte bulunan hizmet ile API arasındaki bağımlılıkları ayırır. API ağ geçitleri yapay zeka iş yükleri için aşağıdaki avantajları sağlar:

  • Birden çok mikro hizmet. Ağ geçitleri, hız sınırlama ve kimlik doğrulaması gibi tutarlı ilkeleri zorunlu kılmanız gerektiğinde birden çok yapay zeka modeli uç noktasını yönetmenize yardımcı olur.

  • Trafik yönetimi. Ağ geçitleri istekleri yöneterek, yanıtları önbelleğe alarak ve yükleri dağıtarak yüksek trafikli uygulamaları verimli bir şekilde yönetmenize yardımcı olur.

  • Güvenlik. Ağ geçitleri, ağ geçidinin arkasındaki API'ler için merkezi erişim denetimi, günlük kaydı ve tehdit koruması sağlar.

Yapay zeka uygulaması tasarım desenlerini kullanma

Yapay zeka uygulamaları için sektörde çeşitli yaygın tasarım desenleri oluşturulmuştur. Tasarımınızı ve uygulamanızı basitleştirmek için bunları kullanabilirsiniz. Bu tasarım desenleri şunlardır:

  • Model birleştirme. Bu tasarım düzeni, tek tek modellerin zayıflıklarını azaltarak doğruluğu ve sağlamlığı geliştirmek için birden çok modelden gelen tahminlerin birleştirilmesini içerir.

  • Mikroservis mimarisi. Bileşenleri bağımsız olarak dağıtılabilir hizmetlere ayırmak ölçeklenebilirliği ve sürdürülebilirliği artırır. Ekiplerin uygulamanın farklı bölümlerinde aynı anda çalışmasını sağlar.

  • olay odaklı mimari. Eylemleri tetikleme olaylarının kullanılması, sistemin değişen verilere daha duyarlı ve uyarlanabilir olmasını sağlamak için ayrılmış bileşenlere ve gerçek zamanlı işlemeye olanak tanır.

RAG deseni ve öbekleme stratejileri

Retrieval-Augmented Nesil (RAG) deseni, üretim modellerini alma sistemleriyle birleştirir ve bu, modelin gelişmiş bağlam ve doğruluk için dış bilgi kaynaklarına erişimini sağlar. Bu düzen hakkında ayrıntılı yönergeler için Tasarım ve RAG çözümü geliştirme makale serisine bakın. İki RAG yaklaşımı vardır:

  • Tam zamanında. Bu yaklaşım, en son verilerin her zaman kullanıldığından emin olmak için istek sırasında ilgili bilgileri dinamik olarak alır. Gerçek zamanlı bağlam gerektiren senaryolarda faydalıdır, ancak gecikmeye neden olabilir.

  • Önceden hesaplanmış (önbelleğe alınmış). Bu yöntem, önceden hesaplanan verileri sunarak yanıt sürelerini azaltmak için alma sonuçlarını önbelleğe almayı içerir. Tutarlı verilerin depolanabildiği yüksek talep senaryoları için uygundur. Veriler en güncel bilgileri yansıtmayabilir ve bu da ilgi sorunlarına yol açabilir.

RAG deseni kullandığınızda, iş yükünüzün performans verimliliğini iyileştirmek için iyi tanımlanmış bir öbekleme stratejisi kritik önem taşır. Rehberliği verilen "RAG çözümü tasarla ve geliştir" serisine başlayın. Dikkate alınması gereken bazı ek öneriler şunlardır:

  • Veri türü, sorgu karmaşıklığı ve kullanıcı gereksinimlerine göre öbek boyutlarını ayarlayan dinamik bir öbekleme stratejisi uygulayın. Bunu yapmak, erişim verimliliğini ve bağlam korumayı artırabilir.

  • Performans verilerine göre öbekleme stratejilerini geliştirmek için geri bildirim döngülerini birleştirin.

  • Temel alma kaynağına geri bağlanan meta verileri ve benzersiz tanımlayıcıları koruyarak öbekler için veri kökenini koruyun. Net köken belgeleri, kullanıcıların veri kaynağını, dönüşümlerini ve çıkışa nasıl katkıda bulunduğunu anlamasını sağlamaya yardımcı olur.

Tasarım desenleri ne zaman kullanılır?

Kullanım örneğiniz açıklanan koşulu karşıladığında bu tasarım desenlerini kullanmayı göz önünde bulundurun:

  • Karmaşık iş akışları. Birden çok yapay zeka modeli arasında karmaşık iş akışları veya etkileşimler olduğunda, RAG veya mikro hizmetler gibi desenler karmaşıklığı yönetmeye ve bileşenler arasında net bir iletişim sağlamaya yardımcı olabilir.

  • Ölçeklenebilirlik gereksinimleri. Uygulamanıza olan talep dalgalanırsa, mikro hizmetler gibi bir desen, tek tek bileşenlerin genel sistem performansını etkilemeden farklı yükleri karşılamak için bağımsız olarak ölçeklendirilmesini sağlar.

  • Veri temelli uygulamalar. Uygulamanız kapsamlı veri işleme gerektiriyorsa, olay odaklı bir mimari gerçek zamanlı yanıt verme ve verimli veri işleme olanağı sağlayabilir.

Not

Küçük uygulamalar veya POC'ler genellikle bu tasarım desenlerinden yararlanmaz. Bu uygulamalar basitlik için tasarlanmalıdır. Benzer şekilde, kaynak (bütçe, zaman veya say) kısıtlamalarınız varsa, daha sonra yeniden düzenlenebilen basit bir tasarım kullanmak karmaşık bir tasarım deseni benimsemekten daha iyi bir yaklaşımdır.

Doğru çerçeveleri ve kitaplıkları seçme

Çerçeve ve kitaplık seçimi, uygulama tasarımıyla yakından iç içe geçmiştir. Bunlar performansı, ölçeklenebilirliği ve sürdürülebilirliği etkiler. Ancak tasarım gereksinimleri çerçeve seçimlerinizi sınırlayabilir. Örneğin, Anlam Çekirdeği SDK'sının kullanılması genellikle her aracı veya işlevin kendi hizmetinde kapsüllendiği mikro hizmet tabanlı bir tasarımı teşvik eder. Çerçeveleri ve kitaplıkları seçerken şu faktörleri göz önünde bulundurun:

  • Uygulama gereksinimleri. Gerçek zamanlı işleme veya toplu işleme gibi uygulamanın gereksinimleri çerçeve seçimini sınırlayabilir. Örneğin, uygulama düşük gecikme süresi gerektiriyorsa, zaman uyumsuz özelliklere sahip bir çerçeve kullanmanız gerekebilir.

  • Entegrasyon ihtiyaçları. Tasarım, diğer sistem veya hizmetlerle belirli tümleştirmeler gerektirebilir. Bir çerçeve gerekli protokolleri veya veri biçimlerini desteklemiyorsa tasarımı yeniden gözden geçirmeniz veya farklı bir çerçeve seçmeniz gerekebilir.

  • Ekibin uzmanlığı. Geliştirme ekibinin beceri kümesi çerçeve seçimlerini sınırlayabilir. Daha az tanıdık bir çerçeveye dayalı bir tasarım geliştirme süresinin ve karmaşıklığının artmasına neden olabileceği için daha tanıdık bir araç kullanmak isteyebilirsiniz.

Kimlikler, yetkilendirme ve erişim için strateji tasarlama

Genel olarak konuşursak, kimlik, yetkilendirme ve erişime normalde uygulama tasarlarken yaptığınız gibi yaklaşmanız gerekir. Bu alanları mümkün olduğunca yönetmek için Microsoft Entra ID gibi bir kimlik sağlayıcısı kullanmalısınız. Ancak, birçok yapay zeka uygulaması özel dikkate alınması gereken benzersiz zorluklara sahiptir. Yeni geliştirme olmadan erişim denetim listelerini (ACL' ler) sistem üzerinden kalıcı hale getirmek bazen zor ve hatta imkansızdır.

Belgelere ve öbeklere güvenlik kırpan metaverileri eklemeyi öğrenmek için Güvenli Çok Kiracılı RAG Çıkarım Çözümü Tasarlama Kılavuzu'nu inceleyin. Bu düzenleme, güvenlik gruplarını veya benzer örgütsel yapıları temel alabilir.

İşlevsel olmayan gereksinimleri göz önünde bulundurun

İş yükünüz, yapay zeka teknolojilerinin doğasında yer alan faktörler nedeniyle güçlükler doğuran işlevsel olmayan gereksinimlere sahip olabilir. Aşağıda bazı yaygın işlev dışı gereksinimler ve bunların zorlukları yer alır:

  • Model çıkarımının gecikme süresi / zaman aşımı. Yapay zeka uygulamaları genellikle gerçek zamanlı veya gerçek zamanlıya yakın yanıtlar gerektirir. Düşük gecikme süresi için tasarım çok önemlidir. Model mimarisini, veri işleme işlem hatlarını ve donanım kaynaklarını iyileştirmeyi içerir. Zaman aşımlarını önlemek ve zamanında yanıtlar sağlamak için önbelleğe alma stratejilerini uygulamak ve verimli model yüklemesini sağlamak da önemlidir.

  • Belirteç veya istek aktarım hızı sınırlamaları. Birçok yapay zeka hizmeti, özellikle bulut tabanlı modellerde belirteç sayısına veya isteklerin aktarım hızına sınırlar uygular. Bu sınırlamaların tasarlanması için giriş boyutlarının dikkatli bir şekilde yönetilmesi, gerektiğinde isteklerin toplu olarak yönetilmesi ve kullanıcı beklentilerini yönetmek ve hizmet kesintilerini önlemek için hız sınırlama veya kuyruğa alma mekanizmalarının uygulanması gerekir.

  • Maliyet ve iade senaryoları. Maliyet şeffaflığı için tasarım, geri ödeme modellerini kolaylaştıran kullanım izleme ve raporlama özelliklerini uygulamayı içerir. Bu özellikler, kuruluşların departmanlar arasında maliyetleri doğru bir şekilde ayırmasını sağlar. Geri ödeme yönetimi genellikle Azure API Managementgibi bir API ağ geçidi tarafından işlenir.

Sonraki adım