paint-brush
ল্যান্সডিবি: ডেটা জটিলতার বিরুদ্ধে দ্বন্দ্বে আপনার বিশ্বস্ত স্টাইডদ্বারা@minio
25,852 পড়া
25,852 পড়া

ল্যান্সডিবি: ডেটা জটিলতার বিরুদ্ধে দ্বন্দ্বে আপনার বিশ্বস্ত স্টাইড

দ্বারা MinIO8m2024/02/01
Read on Terminal Reader
Read this story w/o Javascript

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

MinIO এবং LanceDB ব্যবহার করে পারফরম্যান্ট, স্কেলেবল এবং ভবিষ্যত-প্রুফ ML/AI আর্কিটেকচার তৈরি করার জন্য এই টিউটোরিয়ালে দেওয়া ফাউন্ডেশনে তৈরি করার অনেক উপায় রয়েছে।

People Mentioned

Mention Thumbnail
featured image - ল্যান্সডিবি: ডেটা জটিলতার বিরুদ্ধে দ্বন্দ্বে আপনার বিশ্বস্ত স্টাইড
MinIO HackerNoon profile picture
0-item
1-item

ল্যান্সের উপর নির্মিত, একটি ওপেন-সোর্স কলামার ডেটা ফর্ম্যাট, ল্যান্সডিবি-তে কিছু আকর্ষণীয় বৈশিষ্ট্য রয়েছে যা এটিকে AI/ML-এর জন্য আকর্ষণীয় করে তোলে। উদাহরণস্বরূপ, LanceDB বিভিন্ন ধরনের ডেটা পরিচালনা করার ক্ষমতা সহ স্পষ্ট এবং অন্তর্নিহিত ভেক্টরাইজেশন সমর্থন করে। LanceDB নেতৃস্থানীয় ML ফ্রেমওয়ার্কের সাথে একীভূত হয় যেমন পাইটর্চ এবং টেনসরফ্লো . কুলার এখনও LanceDB-এর দ্রুত প্রতিবেশী অনুসন্ধান যা আনুমানিক নিকটতম প্রতিবেশী অ্যালগরিদম ব্যবহার করে অনুরূপ ভেক্টরগুলির দক্ষ পুনরুদ্ধার সক্ষম করে। এই সবগুলি একত্রিত করে একটি ভেক্টর ডাটাবেস তৈরি করে যা দ্রুত, সহজে ব্যবহার করা যায় এবং এত হালকা ওজনের যে কোনও জায়গায় স্থাপন করা যেতে পারে।


LanceDB S3-সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজে ডেটা অনুসন্ধান করতে সক্ষম। এই সমন্বয় উচ্চ-কর্মক্ষমতা, মাপযোগ্য, এবং ক্লাউড-নেটিভ ML ডেটা স্টোরেজ এবং পুনরুদ্ধার সিস্টেম তৈরির জন্য সর্বোত্তম। MinIO সমীকরণে বিভিন্ন হার্ডওয়্যার, অবস্থান এবং ক্লাউড পরিবেশ জুড়ে কর্মক্ষমতা এবং অতুলনীয় নমনীয়তা নিয়ে আসে, এটি এই ধরনের স্থাপনার জন্য প্রাকৃতিক পছন্দ করে তোলে।


এই টিউটোরিয়ালটি শেষ করার পরে, আপনি যেকোন ডেটা চ্যালেঞ্জের সাথে লড়াই করতে LanceDB এবং MinIO ব্যবহার করতে প্রস্তুত থাকবেন।

ল্যান্স কি?

দ্য ল্যান্স ফাইল ফরম্যাট হল একটি কলামার ডেটা ফরম্যাট যা এমএল ওয়ার্কফ্লো এবং ডেটাসেটের জন্য অপ্টিমাইজ করা হয়েছে। এটিকে সহজ এবং দ্রুত সংস্করণ, কোয়েরি এবং প্রশিক্ষণের জন্য ব্যবহার করার জন্য ডিজাইন করা হয়েছে এবং ছবি, ভিডিও, 3D পয়েন্ট ক্লাউড, অডিও এবং ট্যাবুলার ডেটা সহ বিভিন্ন ধরনের ডেটার জন্য উপযুক্ত। উপরন্তু, এটি উচ্চ-কর্মক্ষমতা র্যান্ডম অ্যাক্সেস সমর্থন করে: সঙ্গেল্যান্স রিপোর্টিং বেঞ্চমার্ক প্রশ্নে Parquet থেকে 100 গুণ দ্রুত। ল্যান্সের গতি আংশিকভাবে মরিচা-এ বাস্তবায়িত হওয়ার ফলাফল, এবং এর ক্লাউড-নেটিভ ডিজাইন যা জিরো-কপি সংস্করণ এবং অপ্টিমাইজ করা ভেক্টর অপারেশনের মতো বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে।


এর একটি মুখ্য সুবিধা ভেক্টর অনুসন্ধান করার ক্ষমতা, ব্যবহারকারীদের খুঁজে পেতে অনুমতি দেয় নিকটতম প্রতিবেশী 1 মিলিসেকেন্ডের নিচে এবং ভেক্টর অনুসন্ধানের সাথে OLAP-queries একত্রিত করুন। ল্যান্স ফরম্যাটের জন্য অন্যান্য প্রোডাকশন অ্যাপ্লিকেশনের মধ্যে রয়েছে এমএল অ্যাপ্লিকেশনের জন্য এজ-ডিপ্লোয়েড লো-লেটেন্সি ভেক্টর ডেটাবেস, বড় আকারের স্টোরেজ, পুনরুদ্ধার, এবং সেলফ-ড্রাইভিং কার কোম্পানিতে মাল্টি-মডেল ডেটা প্রক্রিয়াকরণ এবং ই-তে বিলিয়ন-স্কেল+ ভেক্টর ব্যক্তিগতকৃত অনুসন্ধান - বাণিজ্য কোম্পানি। ল্যান্স ফাইল ফরম্যাটের আবেদনের অংশ হল জনপ্রিয় টুলস এবং প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণতা, যেমন পান্ডাস, ডাকডিবি , পোলার, এবং পিয়ারো . এমনকি আপনি LanceDB ব্যবহার না করলেও, আপনি এখনও আপনার ডেটা স্ট্যাকের ল্যান্স ফাইল ফর্ম্যাটটি ব্যবহার করতে পারেন।

এআই এবং মেশিন লার্নিং এর জন্য তৈরি

LanceDB-এর মতো ভেক্টর ডেটাবেসগুলি AI এবং মেশিন লার্নিং অ্যাপ্লিকেশনগুলির জন্য স্বতন্ত্র সুবিধাগুলি অফার করে, তাদের দক্ষতার জন্য ধন্যবাদ দ্বৈত সঞ্চয়স্থান এবং গণনা আর্কিটেকচার এবং ডেটার উচ্চ-মাত্রিক ভেক্টর উপস্থাপনা পুনরুদ্ধার। এখানে কিছু মূল ব্যবহারের ক্ষেত্রে রয়েছে:


প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP):


শব্দার্থিক অনুসন্ধান: শুধু কীওয়ার্ড নয়, অর্থের উপর ভিত্তি করে একটি প্রশ্নের অনুরূপ নথি বা প্যাসেজ খুঁজুন। এটি চ্যাটবট প্রতিক্রিয়া, ব্যক্তিগতকৃত বিষয়বস্তু সুপারিশ এবং জ্ঞান পুনরুদ্ধার সিস্টেমকে ক্ষমতা দেয়।


প্রশ্নের উত্তর: শব্দার্থগত মিলের উপর ভিত্তি করে প্রাসঙ্গিক পাঠ্য প্যাসেজ খুঁজে জটিল প্রশ্নগুলি বুঝুন এবং উত্তর দিন।


টপিক মডেলিং: ডকুমেন্ট ক্লাস্টারিং এবং প্রবণতা বিশ্লেষণের জন্য দরকারী বৃহৎ পাঠ্য সংগ্রহে সুপ্ত বিষয়গুলি আবিষ্কার করুন।


কম্পিউটার ভিশন:


ছবি এবং ভিডিও পুনরুদ্ধার: ভিজ্যুয়াল বিষয়বস্তুর উপর ভিত্তি করে অনুরূপ ছবি বা ভিডিও অনুসন্ধান করুন, বিষয়বস্তু-ভিত্তিক চিত্র পুনরুদ্ধার, পণ্য অনুসন্ধান এবং ভিডিও বিশ্লেষণের জন্য গুরুত্বপূর্ণ।


অবজেক্ট ডিটেকশন এবং শ্রেণীবিভাগ: দক্ষতার সাথে অনুরূপ প্রশিক্ষণ ডেটা পুনরুদ্ধার করে বস্তু সনাক্তকরণ এবং শ্রেণীবিভাগের মডেলগুলির নির্ভুলতা উন্নত করুন।


ভিডিও সুপারিশ : পূর্বে দেখা ভিডিওগুলির ভিজ্যুয়াল বিষয়বস্তুর উপর ভিত্তি করে অনুরূপ ভিডিওগুলির সুপারিশ করুন৷


বাজারে ভেক্টর ডাটাবেসের আধিক্যের মধ্যে, ল্যান্সডিবি AI এবং মেশিন লার্নিংয়ের জন্য বিশেষভাবে উপযুক্ত, কারণ এটি S3- সামঞ্জস্যপূর্ণ স্টোরেজের অনুসন্ধান সমর্থন করে। আপনার ডেটা সর্বত্র রয়েছে, আপনার ডাটাবেসও সর্বত্র হওয়া উচিত।

সাফল্যের জন্য আর্কিটেক্টিং

LanceDB এর সাথে MinIO ব্যবহার করা বিভিন্ন সুবিধা প্রদান করে, যার মধ্যে রয়েছে:


  • পরিমাপযোগ্যতা এবং কর্মক্ষমতা : MinIO এর ক্লাউড-নেটিভ ডিজাইন স্কেল এবং উচ্চ-পারফরম্যান্স স্টোরেজ এবং পুনরুদ্ধারের জন্য তৈরি করা হয়েছে। MinIO এর স্কেলেবিলিটি এবং পারফরম্যান্স ব্যবহার করে, LanceDB দক্ষতার সাথে প্রচুর পরিমাণে ডেটা পরিচালনা করতে পারে, এটিকে আধুনিক ML কাজের চাপের জন্য উপযুক্ত করে তোলে।


  • উচ্চ প্রাপ্যতা এবং দোষ সহনশীলতা : MinIO অত্যন্ত উপলব্ধ, অপরিবর্তনীয়, এবং অত্যন্ত টেকসই। এটি নিশ্চিত করে যে MinIO-তে সংরক্ষিত ডেটা হার্ডওয়্যার ব্যর্থতার বিরুদ্ধে সুরক্ষিত এবং উচ্চ প্রাপ্যতা এবং ত্রুটি সহনশীলতা প্রদান করে, যা LanceDB-এর মতো ডেটা-নিবিড় অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ।


  • সক্রিয়-সক্রিয় প্রতিলিপি : মাল্টি-সাইট, সক্রিয়-সক্রিয় প্রতিলিপি একাধিক MinIO স্থাপনার মধ্যে ডেটার কাছাকাছি-সিঙ্ক্রোনাস প্রতিলিপি সক্ষম করে। এই দৃঢ় প্রক্রিয়া উচ্চ স্থায়িত্ব এবং অপ্রয়োজনীয়তা নিশ্চিত করে, এটি মিশন-সমালোচনামূলক উত্পাদন পরিবেশে ডেটা রক্ষা করার জন্য আদর্শ করে তোলে।


MinIO এবং LanceDB-এর সংমিশ্রণ বৃহৎ-স্কেল ML ডেটাসেটগুলি পরিচালনা এবং বিশ্লেষণ করার জন্য একটি উচ্চ-কর্মক্ষমতা মাপযোগ্য ক্লাউড-নেটিভ সমাধান প্রদান করে।

প্রয়োজনীয়তা

এই টিউটোরিয়ালটি অনুসরণ করতে, আপনাকে ব্যবহার করতে হবে ডকার রচনা . আপনি ডকার ডেস্কটপ ব্যবহার করে ডকার ইঞ্জিন এবং ডকার কম্পোজ বাইনারিগুলি আলাদাভাবে বা একসাথে ইনস্টল করতে পারেন। সবচেয়ে সহজ বিকল্প হল ডকার ডেস্কটপ ইনস্টল করা।


নিম্নলিখিত কমান্ডটি চালিয়ে ডকার কম্পোজ ইনস্টল করা আছে তা নিশ্চিত করুন:


 docker compose version


আপনাকে পাইথন ইনস্টল করতে হবে। আপনি পাইথন থেকে ডাউনলোড করতে পারেন এখানে . ইনস্টলেশনের সময়, আপনার সিস্টেমের PATH-এ Python যোগ করার বিকল্পটি পরীক্ষা করে দেখুন।


ঐচ্ছিকভাবে, আপনি একটি ভার্চুয়াল পরিবেশ তৈরি করতে বেছে নিতে পারেন। নির্ভরতা বিচ্ছিন্ন করার জন্য একটি ভার্চুয়াল পরিবেশ তৈরি করা ভাল অনুশীলন। এটি করতে, একটি টার্মিনাল খুলুন এবং চালান:


 python -m venv venv


ভার্চুয়াল পরিবেশ সক্রিয় করতে:


উইন্ডোজে:

 .\venv\Scripts\activate


macOS/Linux-এ:

 source venv/bin/activate

শুরু হচ্ছে

থেকে প্রজেক্ট ক্লোন করে শুরু করুন এখানে . একবার হয়ে গেলে, ফোল্ডারে নেভিগেট করুন যেখানে আপনি একটি টার্মিনাল উইন্ডোতে ফাইলগুলি ডাউনলোড করেছেন এবং চালান:


 docker-compose up minio


এটি MinIO কন্টেইনার শুরু করবে। আপনি 'এ নেভিগেট করতে পারেন http://172.20.0.2:9001 ' MinIO কনসোলটি একবার দেখতে।


MinIO কনসোল


ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে লগ ইন করুন minioadmin:minioadmin


এর পরে, lance নামে একটি MinIO বাকেট তৈরি করতে নিম্নলিখিত কমান্ডটি চালান।


 docker compose up mc 


MinIO বালতি


এই কমান্ড একটি সিরিজ সঞ্চালিত MinIO ক্লায়েন্ট (mc) একটি শেলের মধ্যে কমান্ড।


এখানে প্রতিটি কমান্ডের একটি ব্রেকডাউন রয়েছে:


যতক্ষণ না (/usr/bin/mc কনফিগারেশন হোস্ট যোগ করুন minio http://minio:9000 minioadmin minioadmin) ইকো করুন '...waiting...' && sleep 1; সম্পন্ন ;: সফল না হওয়া পর্যন্ত এই কমান্ডটি বারবার নির্দিষ্ট পরামিতি (এন্ডপয়েন্ট, অ্যাক্সেস কী এবং গোপন কী) সহ minio নামে একটি MinIO হোস্ট কনফিগার করার চেষ্টা করে। প্রতিটি প্রচেষ্টার সময়, এটি একটি অপেক্ষার বার্তা প্রতিধ্বনিত করে এবং 1 সেকেন্ডের জন্য বিরতি দেয়।


/usr/bin/mc rm -r --force minio/lance;: এই কমান্ডটি জোরপূর্বক MinIO-তে lance বাকেটের মধ্যে থাকা সমস্ত বিষয়বস্তু সরিয়ে দেয় (মুছে দেয়)।


/usr/bin/mc mb মিনিও/ল্যান্স; : এই কমান্ডটি MinIO-তে lance নামে একটি নতুন বালতি তৈরি করে।


/usr/bin/mc নীতি সেট পাবলিক মিনিও/ল্যান্স; : এই কমান্ডটি পাবলিকের জন্য lance বাকেটের নীতি নির্ধারণ করে, পাবলিক পড়ার অ্যাক্সেসের অনুমতি দেয়।


প্রস্থান 0; : এই কমান্ডটি নিশ্চিত করে যে স্ক্রিপ্টটি 0 এর একটি স্ট্যাটাস কোড সহ প্রস্থান করে, যা সফল সম্পাদনের ইঙ্গিত দেয়।

ল্যান্সডিবি

দুর্ভাগ্যবশত, LanceDB-এর নেটিভ S3 সমর্থন নেই, এবং ফলস্বরূপ, আপনার তৈরি MinIO কন্টেইনারে সংযোগ করতে আপনাকে boto3 এর মতো কিছু ব্যবহার করতে হবে। LanceDB পরিপক্ক হওয়ার সাথে সাথে আমরা নেটিভ S3 সমর্থনের জন্য অপেক্ষা করছি যা ব্যবহারকারীর অভিজ্ঞতাকে আরও ভাল করে তুলবে।


নীচের নমুনা স্ক্রিপ্ট আপনাকে শুরু করবে।


পিপ ব্যবহার করে প্রয়োজনীয় প্যাকেজ ইনস্টল করুন। নিম্নলিখিত বিষয়বস্তু সহ requirements.txt নামে একটি ফাইল তৈরি করুন:


 lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9


তারপর প্যাকেজগুলি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:


 pip install -r requirements.txt


যদি আপনার MinIO কন্টেইনার তৈরির পদ্ধতি উপরে উল্লিখিত একটি থেকে ভিন্ন হয় তাহলে আপনাকে আপনার শংসাপত্রগুলি পরিবর্তন করতে হবে।


নিচের স্ক্রিপ্টটি একটি ফাইলে সংরক্ষণ করুন, যেমন, lancedb_script.py


 import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()


এই স্ক্রিপ্টটি এলোমেলোভাবে উৎপন্ন ডেটা থেকে একটি ল্যান্স টেবিল তৈরি করবে এবং এটি আপনার MinIO বালতিতে যোগ করবে। আবার, যদি আপনি একটি বালতি তৈরি করতে পূর্ববর্তী বিভাগে পদ্ধতিটি ব্যবহার না করেন তবে স্ক্রিপ্ট চালানোর আগে আপনাকে এটি করতে হবে। আপনি আপনার MinIO বালতিটির নাম কী তা মেলাতে উপরের নমুনা স্ক্রিপ্টটি পরিবর্তন করতে ভুলবেন না।


অবশেষে, স্ক্রিপ্টটি টেবিলটি খোলে, এটিকে MinIO এর বাইরে না সরিয়ে, এবং একটি অনুসন্ধান করতে এবং ফলাফল মুদ্রণ করতে পান্ডাস ব্যবহার করে।


স্ক্রিপ্টের ফলাফল নীচের মত দেখতে হবে। মনে রাখবেন যে ডেটা নিজেই প্রতিবার এলোমেলোভাবে তৈরি হয়।


 vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407


আপনার নিজের প্রসারিত

পারফরম্যান্ট, স্কেলেবল এবং ভবিষ্যত-প্রুফ এমএল/এআই আর্কিটেকচার তৈরি করার জন্য এই টিউটোরিয়ালে দেওয়া এই ফাউন্ডেশনে তৈরি করার অনেক উপায় রয়েছে। আপনার অস্ত্রাগারে দুটি অত্যাধুনিক এবং ওপেন-সোর্স বিল্ডিং ব্লক রয়েছে - MinIO অবজেক্ট স্টোরেজ এবং LanceDB ভেক্টর ডেটাবেস - এটিকে ML/AI-তে আপনার বিজয়ী টিকিট বিবেচনা করুন টুর্নামেন্ট .


এখানে থামবেন না। LanceDB এর বিস্তৃত পরিসর অফার করে রেসিপি এবং সম্প্রতি ঘোষিত Udacity কোর্স সহ এই টিউটোরিয়ালে আপনি যা তৈরি করেছেন তা বিস্তৃত করার জন্য টিউটোরিয়াল ভেক্টর ডেটাবেস সহ জেনারেটিভ এআই সলিউশন তৈরি করা . বিশেষ আগ্রহের বিষয় এই আপনার নথির সাথে চ্যাট করার রেসিপি। আমরা সকলেই আপনার ডেটা থেকে সর্বাধিক পাওয়ার বাধাগুলি ভেঙে দেওয়ার জন্য।


অনুগ্রহ করে আমাদের দেখান আপনি কি নির্মাণ করছেন এবং আপনার মহৎ অনুসন্ধানের বিষয়ে নির্দেশিকা প্রয়োজন হলে আমাদেরকে [email protected]এ ইমেল করতে দ্বিধা করবেন না বা আমাদের রাউন্ড টেবিলে যোগ দিন স্ল্যাক