ओलामा मुख्य रूप से llama.cpp के इर्द-गिर्द एक आवरण है, जिसे स्थानीय अनुमान कार्यों के लिए डिज़ाइन किया गया है। यदि आप अत्याधुनिक प्रदर्शन या सुविधाओं की तलाश में हैं तो यह आम तौर पर आपकी पहली पसंद नहीं है, लेकिन इसके उपयोग हैं, खासकर ऐसे वातावरण में जहां बाहरी निर्भरता चिंता का विषय है।
स्थानीय एआई विकास के लिए ओलामा का उपयोग करते समय, सेटअप सीधा लेकिन प्रभावी होता है। डेवलपर्स आमतौर पर अपनी स्थानीय मशीनों पर सीधे अनुमान कार्य चलाने के लिए ओलामा का लाभ उठाते हैं। यहां ओलामा का उपयोग करते हुए एक विशिष्ट स्थानीय विकास सेटअप का दृश्य चित्रण है:
यह कॉन्फ़िगरेशन डेवलपर्स को दूरस्थ सर्वर संचार की जटिलताओं के बिना जल्दी से परीक्षण और पुनरावृत्त करने की अनुमति देता है। यह प्रारंभिक प्रोटोटाइप और विकास चरणों के लिए आदर्श है जहां त्वरित बदलाव महत्वपूर्ण है।
स्थानीय सेटअप से स्केलेबल क्लाउड वातावरण में संक्रमण में एक साधारण 1:1 सेटअप (एक उपयोगकर्ता अनुरोध एक अनुमान होस्ट के लिए) से अधिक जटिल मैनी-टू-मैनी (एकाधिक उपयोगकर्ता अनुरोध एकाधिक अनुमान होस्ट के लिए) कॉन्फ़िगरेशन में विकसित होना शामिल है . मांग बढ़ने पर दक्षता और जवाबदेही बनाए रखने के लिए यह बदलाव आवश्यक है।
यहां बताया गया है कि स्थानीय विकास से उत्पादन की ओर बढ़ते समय यह स्केलिंग कैसी दिखती है:
इस संक्रमण के दौरान एक सीधा दृष्टिकोण अपनाने से अनुप्रयोगों की जटिलता में काफी वृद्धि हो सकती है, खासकर जब सत्रों को विभिन्न राज्यों में स्थिरता बनाए रखने की आवश्यकता होती है। यदि अनुरोधों को सर्वोत्तम उपलब्ध अनुमान होस्ट पर इष्टतम रूप से रूट नहीं किया जाता है तो देरी और अक्षमताएं उत्पन्न हो सकती हैं।
इसके अलावा, वितरित अनुप्रयोगों की जटिल प्रकृति उन्हें स्थानीय स्तर पर परीक्षण करना चुनौतीपूर्ण बनाती है, जो विकास प्रक्रिया को धीमा कर सकती है और उत्पादन वातावरण में विफलताओं के जोखिम को बढ़ा सकती है।
सर्वर रहित कंप्यूटिंग सार सर्वर प्रबंधन और बुनियादी ढांचे के विवरण, डेवलपर्स को पूरी तरह से कोड और व्यावसायिक तर्क पर ध्यान केंद्रित करने की अनुमति देता है। एप्लिकेशन से अनुरोध प्रबंधन और स्थिरता रखरखाव को अलग करके, सर्वर रहित आर्किटेक्चर स्केलिंग को सरल बनाता है।
यह दृष्टिकोण एप्लिकेशन को बुनियादी ढांचे की जटिलताओं के साथ डेवलपर्स पर बोझ डाले बिना कई सामान्य स्केलिंग चुनौतियों को हल करने, मूल्य प्रदान करने पर केंद्रित रहने की अनुमति देता है।
WebAssembly (Wasm) स्व-निहित मॉड्यूल में अनुप्रयोगों के संकलन को सक्षम करके निर्भरता प्रबंधन की चुनौती को संबोधित करता है। इससे ऐप्स को स्थानीय और क्लाउड दोनों में व्यवस्थित करना और परीक्षण करना आसान हो जाता है, जिससे विभिन्न वातावरणों में स्थिरता सुनिश्चित होती है।
ताऊ कम-रखरखाव और उच्च स्केलेबल क्लाउड कंप्यूटिंग प्लेटफॉर्म बनाने के लिए एक ढांचा है। यह सरलता और विस्तारशीलता में उत्कृष्ट है। ताऊ तैनाती को सरल बनाता है और विकास के लिए स्थानीय क्लाउड चलाने का समर्थन करता है, जिससे क्लाउड इंफ्रास्ट्रक्चर और उस पर चलने वाले एप्लिकेशन दोनों के एंड-टू-एंड (ई2ई) परीक्षण की अनुमति मिलती है।
यह दृष्टिकोण, जिसे टौबाइट ने "स्थानीय कोडिंग वैश्विक उत्पादन के बराबर है" के रूप में संदर्भित किया है, यह सुनिश्चित करता है कि जो स्थानीय रूप से काम करता है वह विश्व स्तर पर काम करेगा, जिससे विकास और तैनाती प्रक्रियाओं में काफी आसानी होगी।
ताऊ का प्लगइन सिस्टम, जिसे ऑर्बिट के नाम से जाना जाता है, सेवाओं को WebAssembly होस्ट मॉड्यूल में लपेटकर प्रबंधनीय घटकों में बदलना महत्वपूर्ण रूप से सरल बनाता है। यह दृष्टिकोण ताऊ को ऑर्केस्ट्रेशन कर्तव्यों को संभालने, तैनाती और प्रबंधन प्रक्रिया को सुव्यवस्थित करने की अनुमति देता है।
ताऊ के पारिस्थितिकी तंत्र के भीतर ओलामा कार्यों को सुलभ बनाने के लिए, हम ओलामा की क्षमताओं को कॉल करने योग्य समापन बिंदुओं के रूप में निर्यात करने के लिए ऑर्बिट सिस्टम का उपयोग करते हैं। यहां बताया गया है कि आप गो में एंडपॉइंट कैसे निर्यात कर सकते हैं:
func (s *ollama) W_pull(ctx context.Context, module satellite.Module, modelNamePtr uint32, modelNameSize uint32, pullIdptr uint32) Error { model, err := module.ReadString(modelNamePtr, modelNameSize) if err != nil { return ErrorReadMemory } id, updateFunc := s.getPullId(model) if updateFunc != nil { go func() { err = server.PullModel(s.ctx, model, &server.RegistryOptions{}, updateFunc) s.pullLock.Lock() defer s.pullLock.Unlock() s.pulls[id].err = err }() } module.WriteUint64(pullIdptr, id) return ErrorNone }
निर्यात कार्यों के सीधे उदाहरण के लिए, आप hello_world उदाहरण का संदर्भ ले सकते हैं।
एक बार परिभाषित होने के बाद, ये फ़ंक्शन, जिन्हें अब सैटेलाइट.एक्सपोर्ट के माध्यम से बुलाया जाता है, ताऊ के वातावरण में ओलामा के निर्बाध एकीकरण को सक्षम करते हैं:
func main() { server := new(context.TODO(), "/tmp/ollama-wasm") server.init() satellite.Export("ollama", server) }
प्लगइन का परीक्षण सुव्यवस्थित और सीधा है। यहां बताया गया है कि आप गो में सर्वर रहित फ़ंक्शन परीक्षण कैसे लिख सकते हैं:
//export pull func pull() { var id uint64 err := Pull("gemma:2b-instruct", &id) if err != 0 { panic("failed to call pull") } }
ताऊ के परीक्षण सूट और गो बिल्डर टूल का उपयोग करके, आप अपना प्लगइन बना सकते हैं, इसे परीक्षण वातावरण में तैनात कर सकते हैं, और कार्यक्षमता को सत्यापित करने के लिए सर्वर रहित फ़ंक्शन निष्पादित कर सकते हैं:
func TestPull(t *testing.T) { ctx := context.Background() // Create a testing suite to test the plugin ts, err := suite.New(ctx) assert.NilError(t, err) // Use a Go builder to build plugins and wasm gob := builder.New() // Build the plugin from the directory wd, _ := os.Getwd() pluginPath, err := gob.Plugin(path.Join(wd, "."), "ollama") assert.NilError(t, err) // Attach plugin to the testing suite err = ts.AttachPluginFromPath(pluginPath) assert.NilError(t, err) // Build a wasm file from serverless function wasmPath, err := gob.Wasm(ctx, path.Join(wd, "fixtures", "pull.go"), path.Join(wd, "fixtures", "common.go")) assert.NilError(t, err) // Load the wasm module and call the function module, err := ts.WasmModule(wasmPath) assert.NilError(t, err) // Call the "pull" function from our wasm module _, err = module.Call(ctx, "pull") assert.NilError(t, err) }
आप पूरा कोड यहां पा सकते हैं https://github.com/ollama-cloud/ollama-as-wasm-plugin/tree/main/tau
अब आप आसानी से एलएलएम एप्लिकेशन बना सकते हैं। आरंभ करने के चरण यहां दिए गए हैं:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3