"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ओलामा क्लाउड का निर्माण - क्लाउड के स्थानीय अनुमान को स्केल करना

ओलामा क्लाउड का निर्माण - क्लाउड के स्थानीय अनुमान को स्केल करना

2024-07-29 को प्रकाशित
ब्राउज़ करें:470

ओलामा मुख्य रूप से llama.cpp के इर्द-गिर्द एक आवरण है, जिसे स्थानीय अनुमान कार्यों के लिए डिज़ाइन किया गया है। यदि आप अत्याधुनिक प्रदर्शन या सुविधाओं की तलाश में हैं तो यह आम तौर पर आपकी पहली पसंद नहीं है, लेकिन इसके उपयोग हैं, खासकर ऐसे वातावरण में जहां बाहरी निर्भरता चिंता का विषय है।

स्थानीय एआई विकास

स्थानीय एआई विकास के लिए ओलामा का उपयोग करते समय, सेटअप सीधा लेकिन प्रभावी होता है। डेवलपर्स आमतौर पर अपनी स्थानीय मशीनों पर सीधे अनुमान कार्य चलाने के लिए ओलामा का लाभ उठाते हैं। यहां ओलामा का उपयोग करते हुए एक विशिष्ट स्थानीय विकास सेटअप का दृश्य चित्रण है:

Typical Local Development with Ollama

यह कॉन्फ़िगरेशन डेवलपर्स को दूरस्थ सर्वर संचार की जटिलताओं के बिना जल्दी से परीक्षण और पुनरावृत्त करने की अनुमति देता है। यह प्रारंभिक प्रोटोटाइप और विकास चरणों के लिए आदर्श है जहां त्वरित बदलाव महत्वपूर्ण है।

लोकल से क्लाउड तक

स्थानीय सेटअप से स्केलेबल क्लाउड वातावरण में संक्रमण में एक साधारण 1:1 सेटअप (एक उपयोगकर्ता अनुरोध एक अनुमान होस्ट के लिए) से अधिक जटिल मैनी-टू-मैनी (एकाधिक उपयोगकर्ता अनुरोध एकाधिक अनुमान होस्ट के लिए) कॉन्फ़िगरेशन में विकसित होना शामिल है . मांग बढ़ने पर दक्षता और जवाबदेही बनाए रखने के लिए यह बदलाव आवश्यक है।

यहां बताया गया है कि स्थानीय विकास से उत्पादन की ओर बढ़ते समय यह स्केलिंग कैसी दिखती है:

View of Typical m:n Scaling

इस संक्रमण के दौरान एक सीधा दृष्टिकोण अपनाने से अनुप्रयोगों की जटिलता में काफी वृद्धि हो सकती है, खासकर जब सत्रों को विभिन्न राज्यों में स्थिरता बनाए रखने की आवश्यकता होती है। यदि अनुरोधों को सर्वोत्तम उपलब्ध अनुमान होस्ट पर इष्टतम रूप से रूट नहीं किया जाता है तो देरी और अक्षमताएं उत्पन्न हो सकती हैं।

इसके अलावा, वितरित अनुप्रयोगों की जटिल प्रकृति उन्हें स्थानीय स्तर पर परीक्षण करना चुनौतीपूर्ण बनाती है, जो विकास प्रक्रिया को धीमा कर सकती है और उत्पादन वातावरण में विफलताओं के जोखिम को बढ़ा सकती है।

सर्वर रहित

सर्वर रहित कंप्यूटिंग सार सर्वर प्रबंधन और बुनियादी ढांचे के विवरण, डेवलपर्स को पूरी तरह से कोड और व्यावसायिक तर्क पर ध्यान केंद्रित करने की अनुमति देता है। एप्लिकेशन से अनुरोध प्रबंधन और स्थिरता रखरखाव को अलग करके, सर्वर रहित आर्किटेक्चर स्केलिंग को सरल बनाता है।

यह दृष्टिकोण एप्लिकेशन को बुनियादी ढांचे की जटिलताओं के साथ डेवलपर्स पर बोझ डाले बिना कई सामान्य स्केलिंग चुनौतियों को हल करने, मूल्य प्रदान करने पर केंद्रित रहने की अनुमति देता है।

वेबअसेंबली

WebAssembly (Wasm) स्व-निहित मॉड्यूल में अनुप्रयोगों के संकलन को सक्षम करके निर्भरता प्रबंधन की चुनौती को संबोधित करता है। इससे ऐप्स को स्थानीय और क्लाउड दोनों में व्यवस्थित करना और परीक्षण करना आसान हो जाता है, जिससे विभिन्न वातावरणों में स्थिरता सुनिश्चित होती है।

ताउ

tau

ताऊ कम-रखरखाव और उच्च स्केलेबल क्लाउड कंप्यूटिंग प्लेटफॉर्म बनाने के लिए एक ढांचा है। यह सरलता और विस्तारशीलता में उत्कृष्ट है। ताऊ तैनाती को सरल बनाता है और विकास के लिए स्थानीय क्लाउड चलाने का समर्थन करता है, जिससे क्लाउड इंफ्रास्ट्रक्चर और उस पर चलने वाले एप्लिकेशन दोनों के एंड-टू-एंड (ई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

आगे क्या होगा?

अब आप आसानी से एलएलएम एप्लिकेशन बना सकते हैं। आरंभ करने के चरण यहां दिए गए हैं:

  • स्थानीय रूप से सपने का उपयोग शुरू करें: अपने एप्लिकेशन को विकसित करने और परीक्षण करने के लिए अपना स्थानीय वातावरण स्थापित करें।
  • एक प्रोजेक्ट बनाएं: इसकी पूरी क्षमता का दोहन करने के लिए ताऊ के साथ एक नया प्रोजेक्ट शुरू करें।
  • अपना प्रोडक्शन क्लाउड बनाएं: अपने प्रोजेक्ट को प्रोडक्शन क्लाउड वातावरण में तैनात करें।
  • प्लगइन बाइनरी को /tb/plugins फ़ोल्डर में छोड़ें।
  • अपने प्रोजेक्ट को उत्पादन में आयात करें
  • दिखावा!
विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/samyfodil/building-ollama-cloud-scaleing-local-inference-to-the-cloud-2i1a?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3