paint-brush
কীভাবে ওল্লামা ব্যবহার করবেন: স্থানীয় LLM-এর সাথে হাত মিলিয়ে এবং একটি চ্যাটবট তৈরি করাদ্বারা@arjunrao1987
34,310 পড়া
34,310 পড়া

কীভাবে ওল্লামা ব্যবহার করবেন: স্থানীয় LLM-এর সাথে হাত মিলিয়ে এবং একটি চ্যাটবট তৈরি করা

দ্বারা Arjun 7m2024/03/14
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

স্থানীয় LLM-এর জায়গায়, আমি প্রথমে LMStudio-এ ছুটে যাই। অ্যাপটি নিজেই ব্যবহার করা সহজ, আমি ওল্লামা যে সরলতা এবং চালচলন প্রদান করে তা পছন্দ করেছি। ওল্লামা সম্পর্কে আরও জানতে আপনি এখানে যেতে পারেন। tl;dr: ওল্লামা আপনার অ্যাক্সেস আছে এমন মডেলগুলির নিজস্ব কিউরেটেড তালিকা হোস্ট করে। আপনি এই মডেলগুলি আপনার স্থানীয় মেশিনে ডাউনলোড করতে পারেন, এবং তারপর কমান্ড লাইন প্রম্পটের মাধ্যমে সেই মডেলগুলির সাথে ইন্টারঅ্যাক্ট করতে পারেন। বিকল্পভাবে, আপনি যখন মডেলটি চালান, তখন ওল্লামা 11434 পোর্টে হোস্ট করা একটি ইনফারেন্স সার্ভারও চালায় (ডিফল্টরূপে) যেটির সাথে আপনি এপিআই এবং ল্যাংচেইনের মতো অন্যান্য লাইব্রেরির মাধ্যমে যোগাযোগ করতে পারেন।
featured image - কীভাবে ওল্লামা ব্যবহার করবেন: স্থানীয় LLM-এর সাথে হাত মিলিয়ে এবং একটি চ্যাটবট তৈরি করা
Arjun  HackerNoon profile picture

এটি ওল্লামা এবং স্থানীয় এলএলএম সম্পর্কে এবং আপনি কীভাবে অনুমান-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য সেগুলি ব্যবহার করতে পারেন সে সম্পর্কে আমি শিখেছি সেগুলির মধ্যে গভীরভাবে ডুব দেওয়ার প্রথম অংশ। এই পোস্টে, আপনি সম্পর্কে জানতে পারবেন -


  1. কিভাবে ওল্লামা ব্যবহার করবেন
  2. কিভাবে ওল্লামায় আপনার নিজের মডেল তৈরি করবেন
  3. একটি চ্যাটবট তৈরি করতে ওল্লামা ব্যবহার করে


LLM-এর মূল বিষয়গুলি বোঝার জন্য (স্থানীয় এলএলএম সহ), আপনি এই বিষয়ে আমার পূর্ববর্তী পোস্টটি এখানে উল্লেখ করতে পারেন।

প্রথম, কিছু পটভূমি

স্থানীয় LLM-এর জায়গায়, আমি প্রথমে LMStudio-এ ছুটে যাই। যদিও অ্যাপটি নিজেই ব্যবহার করা সহজ, আমি ওল্লামা যে সরলতা এবং চালচলন প্রদান করে তা পছন্দ করেছি। ওল্লামা সম্পর্কে আরও জানতে আপনি এখানে যেতে পারেন।

tl;dr: ওল্লামা আপনার অ্যাক্সেস আছে এমন মডেলগুলির নিজস্ব কিউরেটেড তালিকা হোস্ট করে।


আপনি এই মডেলগুলি আপনার স্থানীয় মেশিনে ডাউনলোড করতে পারেন, এবং তারপর কমান্ড লাইন প্রম্পটের মাধ্যমে সেই মডেলগুলির সাথে ইন্টারঅ্যাক্ট করতে পারেন। বিকল্পভাবে, আপনি যখন মডেলটি চালান, তখন ওল্লামা 11434 পোর্টে হোস্ট করা একটি ইনফারেন্স সার্ভারও চালায় (ডিফল্টরূপে) যেটির সাথে আপনি এপিআই এবং ল্যাংচেইনের মতো অন্যান্য লাইব্রেরির মাধ্যমে যোগাযোগ করতে পারেন।


এই পোস্টের হিসাবে, ওল্লামার 74টি মডেল রয়েছে, যার মধ্যে এম্বেডিং মডেলের মতো বিভাগও রয়েছে।

কিভাবে ওল্লামা ব্যবহার করবেন

আপনার পছন্দের ওএসের জন্য ওল্লামা ডাউনলোড করুন । একবার আপনি এটি করলে, আপনি এটি কাজ করছে তা নিশ্চিত করতে ollama কমান্ডটি চালান। এটি আপনাকে সাহায্য মেনু দেখাতে হবে -

 Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model pull Pull a model from a registry push Push a model to a registry list List models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command.


যেকোন মডেল ব্যবহার করার জন্য, আপনাকে প্রথমে ওল্লামা থেকে সেগুলিকে "টানতে" হবে, যেমন আপনি ডকারহাব (যদি আপনি অতীতে এটি ব্যবহার করে থাকেন) বা ইলাস্টিক কন্টেইনার রেজিস্ট্রি (ইসিআর) এর মতো কিছু একটি ছবি টেনে আনবেন।


ওল্লামা কিছু ডিফল্ট মডেল (যেমন llama2 যা Facebook এর ওপেন-সোর্স LLM) সহ পাঠানো হয় যা আপনি চালিয়ে দেখতে পারেন।


 ollama list 


আপনি ওল্লামা লাইব্রেরি পৃষ্ঠা থেকে যে মডেলটির সাথে ইন্টারঅ্যাক্ট করতে চান (চলুন phi বলি) নির্বাচন করুন। আপনি এখন কমান্ডটি চালিয়ে এই মডেলটি টানতে পারেন

 ollama pull phi 


একবার ডাউনলোড সম্পূর্ণ হলে, আপনি চালানোর মাধ্যমে মডেলটি স্থানীয়ভাবে উপলব্ধ কিনা তা দেখতে পারেন -

 ollama list


এখন যে মডেল উপলব্ধ, এটি সঙ্গে চালানোর জন্য প্রস্তুত. আপনি কমান্ড ব্যবহার করে একটি মডেল চালাতে পারেন -

 ollama run phi


উত্তরগুলির যথার্থতা সর্বদা শীর্ষস্থানীয় হয় না, তবে আপনি বিভিন্ন মডেল নির্বাচন করে বা সম্ভবত কিছু সূক্ষ্ম-টিউনিং করে বা নির্ভুলতা উন্নত করার জন্য আপনার নিজের মতো একটি RAG-এর মতো সমাধান প্রয়োগ করে তা সমাধান করতে পারেন।


আমি উপরে যা প্রদর্শন করেছি তা হল কিভাবে আপনি কমান্ড লাইন প্রম্পট ব্যবহার করে ওল্লামা মডেলগুলি ব্যবহার করতে পারেন। যাইহোক, যদি আপনি Llama যে ইনফারেন্স সার্ভারটি চালাচ্ছেন তা পরীক্ষা করে দেখেন যে 11434 পোর্টে আঘাত করে এটি অ্যাক্সেস করার প্রোগ্রাম্যাটিক উপায় রয়েছে।

আপনি যদি আপনার ওল্লামা মডেল অ্যাক্সেস করতে ল্যাংচেইন ব্যবহার করতে চান তবে আপনি এমন কিছু ব্যবহার করতে পারেন -

 from langchain_community.llms import Ollama from langchain.chains import RetrievalQA prompt = "What is the difference between an adverb and an adjective?" llm = Ollama(model="mistral") qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True, ) response = qa(prompt)

কিভাবে ওল্লামাতে আপনার নিজের মডেল তৈরি করবেন

আপনি ওল্লামাতে Modelfile ধারণা ব্যবহার করে আপনার নিজস্ব মডেলের বৈকল্পিকও তৈরি করতে পারেন। আপনার মডেলফাইলে কনফিগার করার জন্য আরও পরামিতিগুলির জন্য, আপনি এই নথিগুলি দেখতে পারেন৷


উদাহরণ মডেল ফাইল -

 # Downloaded from Hugging Face https://huggingface.co/TheBloke/finance-LLM-GGUF/tree/main FROM "./finance-llm-13b.Q4_K_M.gguf" PARAMETER temperature 0.001 PARAMETER top_k 20 TEMPLATE """ {{.Prompt}} """ # set the system message SYSTEM """ You are Warren Buffet. Answer as Buffet only, and do so in short sentences. """


একবার আপনার মডেলফাইল হয়ে গেলে, আপনি ব্যবহার করে আপনার মডেল তৈরি করতে পারেন

 ollama create arjunrao87/financellm -f Modelfile

যেখানে financellm হল আপনার LLM মডেলের নাম এবং arjunrao87 আপনার ollama.com ব্যবহারকারীর নাম দ্বারা প্রতিস্থাপিত হবে (যা আপনার অনলাইন ওল্লামা রেজিস্ট্রির নামস্থান হিসাবেও কাজ করে)। এই মুহুর্তে, আপনি আপনার তৈরি করা মডেলটি ওল্লামার অন্যান্য মডেলের মতো ব্যবহার করতে পারেন।


আপনি আপনার মডেলটিকে দূরবর্তী ওল্লামা রেজিস্ট্রিতে পুশ করতেও বেছে নিতে পারেন। এই ঘটতে, আপনি প্রয়োজন


  • ollama.com-এ আপনার অ্যাকাউন্ট তৈরি করুন
  • একটি নতুন মডেল যোগ করুন
  • আপনার রিমোট মেশিন থেকে মডেলগুলি পুশ করার অনুমতি দেওয়ার জন্য সর্বজনীন কীগুলি সেট আপ করুন৷


একবার আপনি আপনার স্থানীয় এলএলএম তৈরি করলে, আপনি এটি ব্যবহার করে ওল্লামা রেজিস্ট্রিতে পুশ করতে পারেন —

 ollama push arjunrao87/financellm

🦄 এখন, ভালো অংশে আসা যাক।

একটি চ্যাটবট তৈরি করতে ওল্লামা ব্যবহার করা

ওল্লামা ব্যবহার করার জন্য আমার অনুসন্ধানের সময়, পাইথন-ভিত্তিক ওয়েব অ্যাপ্লিকেশন নির্মাতাদের এই ইকোসিস্টেমটি আরও আনন্দদায়ক আবিষ্কারগুলির মধ্যে একটি ছিল যা আমি পেয়েছিলাম। চেইনলাইট ChatGPT-এর মতো একটি পূর্ণাঙ্গ চ্যাটবট তৈরি করতে ব্যবহার করা যেতে পারে। তাদের পৃষ্ঠায় বলা হয়েছে,


চেইনলিট হল একটি ওপেন-সোর্স পাইথন প্যাকেজ যাতে প্রোডাকশন রেডি কনভারসেশনাল এআই তৈরি করা যায়


চেইনলিট দিয়ে আপনি কী করতে পারেন তার একটি হ্যান্ডেল পেতে আমি কয়েকটি চেইনলিট টিউটোরিয়াল দেখেছি, যার মধ্যে কাজগুলির ক্রম তৈরি করা (যাকে "পদক্ষেপ" বলা হয়), বোতাম এবং ক্রিয়াকলাপ সক্ষম করা, ছবি পাঠানো এবং সমস্ত ধরণের জিনিস অন্তর্ভুক্ত রয়েছে। আপনি এখানে আমার যাত্রার এই অংশ অনুসরণ করতে পারেন.


একবার আমি চেইনলিটের হ্যাং পেয়েছিলাম, আমি একটি সহজবোধ্য চ্যাটবট একসাথে রাখতে চেয়েছিলাম যা মূলত ওল্লামা ব্যবহার করে যাতে আমি একটি স্থানীয় LLM ব্যবহার করতে পারি (ChatGPT বা Claude বলার পরিবর্তে)।


50 টিরও কম লাইনের কোড সহ, আপনি Chainlit + Ollama ব্যবহার করে এটি করতে পারেন। এটা কি পাগল না?

একটি লাইব্রেরি হিসাবে চেইনলাইট ব্যবহার করা অত্যন্ত সহজবোধ্য। আমি ওল্লামার সাথে ব্যবহার এবং ইন্টারঅ্যাক্ট করার জন্য ল্যাংচেইন ব্যবহার করেছি।


 from langchain_community.llms import Ollama from langchain.prompts import ChatPromptTemplate import chainlit as cl


পরবর্তী ধাপ হল চেইনলিটের @cl.on_chat_start ডেকোরেটর ব্যবহার করে চ্যাটবটের লোডিং স্ক্রীনটি কেমন দেখতে চান তা নির্ধারণ করা।

 @cl.on_chat_start async def on_chat_start(): elements = [cl.Image(name="image1", display="inline", path="assets/gemma.jpeg")] await cl.Message( content="Hello there, I am Gemma. How can I help you?", elements=elements ).send() .... ....


Message ইন্টারফেস হল যা চেইনলিট UI-তে প্রতিক্রিয়া পাঠাতে ব্যবহার করে। আপনি সাধারণ content কী দিয়ে বার্তাগুলি তৈরি করতে পারেন, এবং তারপরে আপনি elements মতো জিনিসগুলি দিয়ে এটিকে অলঙ্কৃত করতে পারেন যা, আমার ক্ষেত্রে, ব্যবহারকারী যখন প্রথম লগ ইন করে তখন একটি চিত্র দেখানোর জন্য আমি একটি Image যুক্ত করেছি৷


পরবর্তী ধাপ হল ওল্লামা (আপনার পছন্দের মডেল সহ) ইনস্ট্যান্টিয়েট করার জন্য ল্যাংচেইনকে আহ্বান করা এবং প্রম্পট টেমপ্লেট তৈরি করা। cl.user_session এর ব্যবহার হল বেশিরভাগ ব্যবহারকারীর প্রসঙ্গ এবং ইতিহাসের পৃথকীকরণ বজায় রাখা, যা শুধুমাত্র একটি দ্রুত ডেমো চালানোর উদ্দেশ্যে, কঠোরভাবে প্রয়োজন হয় না।


চেইন হল একটি ল্যাংচেইন ইন্টারফেস যা Runnable নামে পরিচিত যা কাস্টম চেইন তৈরি করতে ব্যবহৃত হয়। এখানে তার সম্বন্ধে আরও পড়তে পারেন .


 @cl.on_chat_start async def on_chat_start(): .... .... model = Ollama(model="mistral") prompt = ChatPromptTemplate.from_messages( [ ( "system", "You are a knowledgeable historian who answers super concisely", ), ("human", "{question}"), ] ) chain = prompt | model cl.user_session.set("chain", chain)


এখন, আপনার কাছে একটি চ্যাটবট UI থাকতে এবং ব্যবহারকারীর ইনপুট গ্রহণ করার জন্য সমস্ত অংশ রয়েছে। ব্যবহারকারীর দেওয়া প্রম্পট দিয়ে আপনি কী করবেন? ব্যবহারকারীর দেওয়া বার্তার সাথে কিছু করার জন্য আপনি Chainlit থেকে @cl.on_message হ্যান্ডলার ব্যবহার করবেন।


 @cl.on_message async def on_message(message: cl.Message): chain = cl.user_session.get("chain") msg = cl.Message(content="") async for chunk in chain.astream( {"question": message.content}, ): await msg.stream_token(chunk) await msg.send()


chain.astream ডক্সের পরামর্শ অনুসারে "প্রতিক্রিয়া অ্যাসিঙ্কের অংশগুলি স্ট্রিম ব্যাক করুন" যা আমরা আমাদের বটের জন্য চাই।


যে সত্যিই এটা. কয়েকটি আমদানি, কয়েকটি ফাংশন, কিছুটা চিনি এবং আপনার একটি কার্যকরী চ্যাটবট রয়েছে।

একটি ভাল ঐতিহাসিক প্রতিক্রিয়া


একজন চতুর ইতিহাসবিদ যিনি (বোধগম্য) গণিতে ভালো নন ;)


সম্পূর্ণ কোডের জন্য, আপনি আমার GitHub দেখতে পারেন।


যদি এই বিষয়বস্তুটি আপনার কাছে আকর্ষণীয় হয় তবে 👏 বোতামটি টিপুন বা এখানে আমার নিউজলেটার সাবস্ক্রাইব করুন → https://a1engineering.beehiiv.com/subscribe । এটি আমাকে প্রতিক্রিয়া দেয় যে আমার কিছু কম বা বেশি করা দরকার! ধন্যবাদ ❤️


এছাড়াও এখানে প্রকাশিত