লেখক:
(1) Sasun Hambardzumyan, Activeloop, Mountain View, CA, USA;
(2) অভিনব তুলি, অ্যাক্টিভলুপ, মাউন্টেন ভিউ, CA, USA;
(3) Levon Ghukasyan, Activeloop, Mountain View, CA, USA;
(4) ফারিজ রহমান, অ্যাক্টিভলুপ, মাউন্টেন ভিউ, CA, USA;।
(5) Hrant Topchyan, Activeloop, Mountain View, CA, USA;
(6) ডেভিড ইসায়ান, অ্যাক্টিভলুপ, মাউন্টেন ভিউ, CA, USA;
(7) Mark McQuade, Activeloop, Mountain View, CA, USA;
(8) Mikayel Harutyunyan, Activeloop, Mountain View, CA, USA;
(9) Tatevik Hakobyan, Activeloop, Mountain View, CA, USA;
(10) Ivo Stranic, Activeloop, Mountain View, CA, USA;
(11) Davit Buniatyan, Activeloop, Mountain View, CA, USA.
চিত্র 1-এ যেমন দেখানো হয়েছে, ডিপ লেক অবজেক্ট স্টোরেজ যেমন S3-এ কাঁচা ডেটা এবং ভিউ সঞ্চয় করে এবং সম্পূর্ণ বংশের সাথে ডেটাসেটগুলিকে বাস্তবায়িত করে। স্ট্রিমিং, টেনসর কোয়েরি ল্যাঙ্গুয়েজ কোয়েরি, এবং ভিজ্যুয়ালাইজেশন ইঞ্জিন ডিপ লার্নিং কম্পিউটের সাথে বা ব্রাউজারে এক্সটার্নাল ম্যানেজড বা সেন্ট্রালাইজড সার্ভিসের প্রয়োজন ছাড়াই এক্সিকিউট করে।
4.1.1 নির্যাস। কখনও কখনও মেটাডেটা ইতিমধ্যেই একটি রিলেশনাল ডাটাবেসে থাকতে পারে। আমরা অতিরিক্তভাবে Airbyte ব্যবহার করে একটি ETL গন্তব্য সংযোগকারী তৈরি করেছি[3] [22]। ফ্রেমওয়ার্ক SQL/NoSQL ডাটাবেস, ডেটা লেক, বা ডেটা গুদামগুলি সহ যেকোন সমর্থিত ডেটা উত্সে প্লাগ করার এবং ডিপ লেকে ডেটা সিঙ্ক্রোনাইজ করার অনুমতি দেয়। সংযোগকারী প্রোটোকল ডেটাকে কলামার বিন্যাসে রূপান্তরিত করে।
4.1.2 রূপান্তর। ডেটা প্রসেসিং ওয়ার্কফ্লোকে উল্লেখযোগ্যভাবে ত্বরান্বিত করতে এবং ব্যবহারকারীদের খণ্ড বিন্যাস সম্পর্কে উদ্বেগ থেকে মুক্ত করতে, ডিপ লেক সমান্তরালভাবে পাইথন রূপান্তর চালানোর একটি বিকল্প সরবরাহ করে। রূপান্তরটি একটি ডেটাসেটে নেয়, প্রথম মাত্রা জুড়ে নমুনা অনুসারে পুনরাবৃত্তি হয় এবং একটি নতুন ডেটাসেট আউটপুট করে। একটি ব্যবহারকারীর সংজ্ঞায়িত পাইথন ফাংশন দুটি প্রয়োজনীয় আর্গুমেন্টের প্রত্যাশা করে 𝑘𝑒।𝑐𝑜𝑚𝑝𝑢𝑡𝑒। একটি একক 𝑠𝑎𝑚𝑝𝑙𝑒_𝑖𝑛 গতিশীলভাবে একাধিক 𝑠𝑎𝑚𝑝𝑙𝑒_𝑜𝑢𝑡𝑠 তৈরি করতে পারে। এটি এক-থেকে-এক এবং এক-থেকে-অনেক রূপান্তর উভয়ই সক্ষম করে। রূপান্তরটি একটি নতুন ডেটাসেট তৈরি না করেও জায়গায় প্রয়োগ করা যেতে পারে।
পর্দার আড়ালে, শিডিউলার ব্যাচ নমুনা-ভিত্তিক রূপান্তরগুলি কাছাকাছি অংশগুলিতে কাজ করে এবং একটি প্রক্রিয়া পুলে সেগুলি নির্ধারণ করে। ঐচ্ছিকভাবে, গণনাটি একটি রে ক্লাস্টারে অর্পণ করা যেতে পারে [53]। একটি ইনপুট ডেটাসেট সংজ্ঞায়িত করার পরিবর্তে, ব্যবহারকারী ইনজেশন ওয়ার্কফ্লো তৈরি করতে কাস্টম অবজেক্ট সহ একটি নির্বিচারে পুনরাবৃত্তিকারী প্রদান করতে পারে। ব্যবহারকারীরা একাধিক রূপান্তর একসাথে স্ট্যাক করতে পারে এবং জটিল পাইপলাইন সংজ্ঞায়িত করতে পারে।
ডিপ লেক পরীক্ষা-নিরীক্ষার পুনরুৎপাদনযোগ্যতা এবং সম্পূর্ণ ডেটা বংশের সাথে সম্মতির প্রয়োজনীয়তাকেও সম্বোধন করে। ডেটাসেটের বিভিন্ন সংস্করণ একই স্টোরেজে বিদ্যমান, সাব-ডিরেক্টরি দ্বারা পৃথক করা হয়েছে। প্রতিটি সাব-ডিরেক্টরি তার মেটাডেটা ফাইলগুলির সাথে একটি স্বাধীন ডেটাসেট হিসাবে কাজ করে। একটি অ-সংস্করণবিহীন ডেটাসেটের বিপরীতে, এই সাবডিরেক্টরিগুলিতে শুধুমাত্র নির্দিষ্ট সংস্করণে পরিবর্তিত খণ্ডগুলি থাকে, সাথে সমস্ত পরিবর্তিত অংশগুলির নাম ধারণ করে প্রতি টেনসরে একটি সংশ্লিষ্ট chunk_set থাকে৷ ডিরেক্টরির মূলে উপস্থিত একটি সংস্করণ নিয়ন্ত্রণ তথ্য ফাইল ব্রাঞ্চিং সংস্করণ-নিয়ন্ত্রণ গাছ হিসাবে এই সংস্করণগুলির মধ্যে সম্পর্ক ট্র্যাক করে। একটি নির্দিষ্ট সংস্করণে একটি টেনসরের যেকোনো অংশ অ্যাক্সেস করার সময়, সংস্করণ নিয়ন্ত্রণ গাছটি বর্তমান কমিট থেকে শুরু করে প্রথম কমিটের দিকে অগ্রসর হয়। ট্রাভার্সালের সময়, প্রতিটি সংস্করণের খণ্ড সেটটি প্রয়োজনীয় খণ্ডের অস্তিত্বের জন্য পরীক্ষা করা হয়। খণ্ডটি পাওয়া গেলে, ট্রাভার্সাল বন্ধ করা হয়, এবং ডেটা পুনরুদ্ধার করা হয়। সংস্করণ জুড়ে পার্থক্য ট্র্যাক রাখার জন্য, প্রতিটি সংস্করণের জন্য, প্রতি টেনসরে একটি কমিট ডিফ ফাইলও সংরক্ষণ করা হয়। এটি সংস্করণ এবং শাখা জুড়ে তুলনা করা দ্রুত করে তোলে। অধিকন্তু, নমুনার আইডিগুলি ডেটাসেট জনসংখ্যার সময় তৈরি এবং সংরক্ষণ করা হয়। মার্জ অপারেশনের সময় একই নমুনার ট্র্যাক রাখার জন্য এটি গুরুত্বপূর্ণ। ডিপ লেকের সংস্করণ নিয়ন্ত্রণ ইন্টারফেস হল পাইথন এপিআই, যা মেশিন লার্নিং ইঞ্জিনিয়ারদের তাদের ডেটাসেটগুলিকে তাদের ডেটা প্রসেসিং স্ক্রিপ্টের মধ্যে সংস্করণ করতে সক্ষম করে CLI থেকে বারবার স্যুইচ না করে। এটি নিম্নলিখিত কমান্ড সমর্থন করে:
• কমিট : ডেটাসেটের বর্তমান অবস্থার একটি অপরিবর্তনীয় স্ন্যাপশট তৈরি করে।
• চেকআউট : একটি বিদ্যমান শাখা/প্রতিশ্রুতিতে চেক আউট করে অথবা একটি বিদ্যমান না থাকলে একটি নতুন শাখা তৈরি করে।
• পার্থক্য : ডেটাসেটের 2টি সংস্করণের মধ্যে পার্থক্য তুলনা করে।
• মার্জ : ডেটাসেটের দুটি ভিন্ন সংস্করণকে একত্রিত করে, ব্যবহারকারীর দ্বারা সংজ্ঞায়িত নীতি অনুসারে দ্বন্দ্ব সমাধান করে।
ডেটা ভিজ্যুয়ালাইজেশন এমএল ওয়ার্কফ্লোগুলির একটি গুরুত্বপূর্ণ অংশ, বিশেষ করে যখন ডেটা বিশ্লেষণাত্মকভাবে পার্স করা কঠিন। দ্রুত এবং নির্বিঘ্ন ভিজ্যুয়ালাইজেশন দ্রুত ডেটা সংগ্রহ, টীকা, গুণমান পরিদর্শন এবং প্রশিক্ষণের পুনরাবৃত্তির অনুমতি দেয়। ডিপ লেক ভিজ্যুয়ালাইজার ইঞ্জিন উৎস থেকে সরাসরি বৃহৎ আকারের ডেটা ভিজ্যুয়ালাইজ করার জন্য একটি ওয়েব ইন্টারফেস প্রদান করে। এটি ভিজ্যুয়ালাইজেশনের জন্য সর্বোত্তম বিন্যাস নির্ধারণ করতে টেনসরগুলির htype বিবেচনা করে। প্রাথমিক টেনসর, যেমন ইমেজ, ভিডিও এবং অডিও প্রথমে প্রদর্শিত হয়, যখন সেকেন্ডারি ডেটা এবং টীকা যেমন টেক্সট, ক্লাস_লেবেল, বিবক্স এবং বাইনারি_মাস্ক ওভারলে করা হয়। ভিজ্যুয়ালাইজার মেটা টাইপ তথ্যও বিবেচনা করে, যেমন ডেটার একটি ক্রমিক ভিউ প্রদানের জন্য সিকোয়েন্স, যেখানে সিকোয়েন্স প্লে করা যেতে পারে এবং পুরো ডেটা আনয়ন না করেই সিকোয়েন্সের নির্দিষ্ট অবস্থানে যেতে পারে, যা ভিডিও বা অডিও ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক। . ভিজ্যুয়ালাইজার এমএল ওয়ার্কফ্লোতে গুরুত্বপূর্ণ প্রয়োজনীয়তাগুলিকে সম্বোধন করে, ব্যবহারকারীদের ডেটা বুঝতে এবং সমস্যা সমাধান করতে, এর বিবর্তন চিত্রিত করতে, গ্রাউন্ড ট্রুথের সাথে ভবিষ্যদ্বাণীগুলির তুলনা করতে বা ছবির একাধিক ক্রম (যেমন, ক্যামেরার চিত্র এবং বৈষম্য মানচিত্র) পাশাপাশি প্রদর্শন করতে সক্ষম করে৷
প্রশ্ন করা এবং ডেটাসেট ভারসাম্য করা গভীর শিক্ষার কর্মপ্রবাহ প্রশিক্ষণের একটি সাধারণ পদক্ষেপ। সাধারণত, এটি একটি ডেটালোডারের মধ্যে স্যাম্পলিং কৌশল ব্যবহার করে বা ডেটাসেট উপনির্বাচনের জন্য পৃথক প্রাক-প্রসেসিং পদক্ষেপ ব্যবহার করে অর্জন করা হয়। অন্যদিকে, ঐতিহ্যগত ডেটা লেকগুলি বাহ্যিক বিশ্লেষণাত্মক ক্যোয়ারী ইঞ্জিনগুলির সাথে সংযোগ স্থাপন করে [৬৬] এবং ডেটা ফ্রেমগুলিকে ডেটা বিজ্ঞানের কর্মপ্রবাহে প্রবাহিত করে। ফর্ম্যাট এবং নির্দিষ্ট ডেটাতে দ্রুত অ্যাক্সেসের মধ্যে ব্যবধান সমাধান করতে, আমরা C++ এ প্রয়োগ করা একটি এমবেডেড SQL-এর মতো ক্যোয়ারী ইঞ্জিন সরবরাহ করি যাকে টেনসর কোয়েরি ল্যাঙ্গুয়েজ (TQL) বলা হয়। একটি উদাহরণ ক্যোয়ারী চিত্র 5-এ দেখানো হয়েছে। টেনসর কোয়েরি ল্যাঙ্গুয়েজ ডিজাইন করার জন্য এসকিউএল পার্সারকে হাইরাইজ [৩৭] থেকে প্রসারিত করা হয়েছে, আমরা আমাদের প্ল্যানার এবং এক্সিকিউশন ইঞ্জিন প্রয়োগ করেছি যা ঐচ্ছিকভাবে এক্সটার্নাল টেনসর কম্পিউটেশন ফ্রেমওয়ার্কগুলিতে গণনা অর্পণ করতে পারে। ক্যোয়ারী প্ল্যান টেনসর অপারেশনের একটি কম্পিউটেশনাল গ্রাফ তৈরি করে। তারপর শিডিউলকারী, ক্যোয়ারী গ্রাফটি চালায়।
ক্যোয়ারীটি এক্সিকিউশন এক্সটার্নাল টেনসর কম্পিউটেশন ফ্রেমওয়ার্ক যেমন PyTorch [58] বা XLA [64]-এ অর্পণ করা যেতে পারে এবং অন্তর্নিহিত এক্সিলারেটেড হার্ডওয়্যারকে দক্ষতার সাথে ব্যবহার করতে পারে। স্ট্যান্ডার্ড SQL বৈশিষ্ট্য ছাড়াও, TQL সাংখ্যিক গণনাও প্রয়োগ করে। একটি নতুন কোয়েরি ভাষা বাস্তবায়নের জন্য দুটি প্রধান কারণ রয়েছে। প্রথমত, প্রথাগত এসকিউএল বহুমাত্রিক অ্যারে ক্রিয়াকলাপকে সমর্থন করে না যেমন চিত্র পিক্সেলের গড় গণনা করা বা একটি নির্দিষ্ট মাত্রায় অ্যারে প্রজেক্ট করা। TQL পাইথন/NumPy-শৈলীর সূচী যোগ করে, অ্যারেগুলির স্লাইসিং যোগ করে এবং অ্যারেগুলির সাথে কাজ করার জন্য সুবিধাজনক ফাংশনগুলির একটি বড় সেট প্রদান করে এর সমাধান করে, যার মধ্যে অনেকগুলি NumPy সমর্থিত সাধারণ ক্রিয়াকলাপ। দ্বিতীয়ত, TQL ডিপ লেকের অন্যান্য বৈশিষ্ট্য যেমন সংস্করণ নিয়ন্ত্রণ, স্ট্রিমিং ইঞ্জিন এবং ভিজ্যুয়ালাইজেশনের সাথে প্রশ্নের গভীর একীকরণ সক্ষম করে। উদাহরণস্বরূপ, TQL নির্দিষ্ট সংস্করণে বা সম্ভাব্যভাবে একটি ডেটাসেটের একাধিক সংস্করণে ডেটা অনুসন্ধান করার অনুমতি দেয়। TQL ক্যোয়ারী ফলাফলের ভিজ্যুয়ালাইজেশন বা ফিল্টার করা স্ট্রিমিংয়ের জন্য ডেটালোডারের সাথে বিরামবিহীন ইন্টিগ্রেশন কাস্টমাইজ করার জন্য নির্দিষ্ট নির্দেশাবলী সমর্থন করে। এমবেডেড ক্যোয়ারী ইঞ্জিনটি হয় ক্লায়েন্টের সাথে একটি রিমোট কম্পিউট ইন্সট্যান্স বা ওয়েব অ্যাসেম্বলিতে কম্পাইল করা ইন-ব্রাউজারে একটি মডেল প্রশিক্ষণের সময় চলে। TQL বহুমাত্রিক কলামের উপরে সংখ্যাসূচক গণনা সহ SQL প্রসারিত করে। এটি ডেটাসেটগুলির ভিউ তৈরি করে, যা ভিজ্যুয়ালাইজ করা যেতে পারে বা সরাসরি গভীর শিক্ষার কাঠামোতে প্রবাহিত হতে পারে। ক্যোয়ারী ভিউ, যাইহোক, বিরল হতে পারে, যা স্ট্রিমিং কর্মক্ষমতা প্রভাবিত করতে পারে।
গভীর শিক্ষার জন্য ব্যবহৃত বেশিরভাগ কাঁচা ডেটা স্থানীয়ভাবে বা ক্লাউডে কাঁচা ফাইল (জেপিইজি-র মতো ফর্ম্যাটে সংকুচিত) হিসাবে সংরক্ষণ করা হয়। ডেটাসেটগুলি তৈরি করার একটি সাধারণ উপায় হল একটি ডাটাবেসে এই কাঁচা ফাইলগুলির পয়েন্টারগুলি সংরক্ষণ করা, ডেটার প্রয়োজনীয় উপসেট পেতে এটিকে জিজ্ঞাসা করা, ফিল্টার করা ফাইলগুলিকে একটি মেশিনে আনয়ন করা এবং তারপরে ফাইলগুলির উপর পুনরাবৃত্তি করা মডেলকে প্রশিক্ষণ দেওয়া। উপরন্তু, তথ্য বংশ ম্যানুয়ালি একটি প্রোভেন্যান্স ফাইলের সাথে রক্ষণাবেক্ষণ করা প্রয়োজন। টেনসর স্টোরেজ ফরম্যাট লিঙ্কযুক্ত টেনসর ব্যবহার করে এই পদক্ষেপগুলিকে সরল করে - মূল ডেটাতে পয়েন্টার (এক বা একাধিক ক্লাউড প্রদানকারীর লিঙ্ক/ইউআরএল) সংরক্ষণ করে। একটি একক টেনসরের মধ্যে পয়েন্টারগুলি একাধিক স্টোরেজ প্রদানকারীর সাথে সংযুক্ত হতে পারে, এইভাবে ব্যবহারকারীরা একাধিক উত্সে উপস্থিত তাদের ডেটার একত্রিত দৃশ্য পেতে অনুমতি দেয়। কোয়েরি, সংস্করণ নিয়ন্ত্রণ এবং গভীর শিক্ষার ফ্রেমওয়ার্কগুলিতে স্ট্রিমিং সহ ডিপ লেকের সমস্ত বৈশিষ্ট্য লিঙ্কযুক্ত টেনসরগুলির সাথে ব্যবহার করা যেতে পারে। যাইহোক, ডেটা স্ট্রিমিং এর কর্মক্ষমতা ডিফল্ট টেনসরের মত সর্বোত্তম হবে না। প্রশ্নগুলির কারণে তৈরি স্পার্স ভিউগুলির সাথে অনুরূপ সমস্যা বিদ্যমান, যা খণ্ড লেআউটের কারণে অকার্যকরভাবে স্ট্রিম করা হবে। তদ্ব্যতীত, বস্তুগতকরণ ডেটাসেট ভিউকে একটি সর্বোত্তম লেআউটে রূপান্তরিত করে যাতে দ্রুত পুনরাবৃত্ত করার জন্য গভীর শিক্ষার কাঠামোতে প্রবাহিত হয়। বস্তুগতীকরণের মধ্যে রয়েছে লিঙ্ক বা ভিউ থেকে প্রকৃত ডেটা আনা এবং দক্ষতার সাথে এটিকে খণ্ডে বিন্যস্ত করা। মেশিন লার্নিং ওয়ার্কফ্লো শেষের দিকে এই ধাপটি সম্পাদন করা সর্বনিম্ন ডেটা ডুপ্লিকেশনের দিকে নিয়ে যায় যখন সর্বোত্তম স্ট্রিমিং কর্মক্ষমতা এবং ন্যূনতম ডেটা ডুপ্লিকেশন নিশ্চিত করে, সম্পূর্ণ ডেটা বংশের সাথে।
ডেটাসেটগুলি বড় হওয়ার সাথে সাথে দূরবর্তীভাবে বিতরণ করা স্টোরেজ থেকে নেটওয়ার্কে সংরক্ষণ এবং স্থানান্তর অনিবার্য হয়ে ওঠে। ডেটা স্ট্রিমিং সমস্ত ডেটা স্থানীয় মেশিনে অনুলিপি করার জন্য অপেক্ষা না করে প্রশিক্ষণ মডেলগুলিকে সক্ষম করে। স্ট্রিমিং ডেটালোডার প্রশিক্ষণ মডেলে ডেটা আনা, ডিকম্প্রেশন, ট্রান্সফর্মেশন প্রয়োগ, সমষ্টি এবং ডেটা হস্তান্তর নিশ্চিত করে। ডিপ লার্নিং ডেটালোডার সাধারণত সিঙ্ক্রোনাস গণনা এড়াতে সমান্তরাল চলমান প্রক্রিয়াগুলিতে আনয়ন এবং রূপান্তর অর্পণ করে। তারপর ডেটা আন্তঃপ্রক্রিয়া যোগাযোগ (IPC) এর মাধ্যমে প্রধান কর্মীর কাছে স্থানান্তরিত হয় যা মেমরি কপি ওভারহেড প্রবর্তন করে বা কিছু নির্ভরযোগ্যতা সমস্যা সহ শেয়ার করা মেমরি ব্যবহার করে। বিপরীতে, গ্লোবাল ইন্টারপ্রেটার লক এড়াতে ডিপ লেক ডেটালোডার অত্যন্ত সমান্তরাল ফেচিং এবং ইন-প্লেস ডিকম্প্রেসিং প্রতি প্রক্রিয়ায় C++ প্রতিনিধিত্ব করে। তারপরে, এটি ইন-মেমরি পয়েন্টারকে ব্যবহারকারী-সংজ্ঞায়িত রূপান্তর ফাংশনে পাস করে এবং গভীর শেখার নেটিভ মেমরি লেআউটে প্রশিক্ষণের লুপে উন্মুক্ত করার আগে কোলেট করে। রূপান্তর একই সাথে সমান্তরালভাবে সম্পাদন করে যখন এটি শুধুমাত্র নেটিভ লাইব্রেরি রুটিন কল ব্যবহার করে এবং সেই অনুযায়ী পাইথন গ্লোবাল ইন্টারপ্রেটার লক (GIL) প্রকাশ করে। ফলস্বরূপ, আমরা পাই:
• পারফরম্যান্স : গভীর শিক্ষার মডেলে যথেষ্ট দ্রুত ডেটা সরবরাহ করা যাতে হয় GPU সম্পূর্ণরূপে ব্যবহৃত হয় বা গণনার দ্বারা বাধাগ্রস্ত হয়।
• স্মার্ট শিডিউলার : কম-নিবিড়ের তুলনায় CPU-নিবিড় কাজের অগ্রাধিকারের মধ্যে গতিশীলভাবে পার্থক্য করা।
• দক্ষ সম্পদ বরাদ্দ : মেমরি অতিরিক্ত পূরণের কারণে প্রশিক্ষণ প্রক্রিয়া ভাঙা এড়াতে মেমরি খরচের পূর্বাভাস।
এই কাগজটি CC 4.0 লাইসেন্সের অধীনে arxiv-এ উপলব্ধ ।
[৩] সোর্স কোড উপলব্ধ: https://github.com/activeloopai/airbyte শাখায় @feature/connector/deeplake