শুরুর ঘটনা

‘টেন্সর-ফ্লো লাইট’, মোবাইল এবং এমবেডিং ডিভাইসে ডিপ লার্নিং ইনফারেন্স নিয়ে অ্যান্ড্রয়েড অ্যাপ (১)

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

এই ঝামেলার কথা মনে রেখেই এসেছে ‘টেন্সর-ফ্লো লাইট’। এটা ‘টেন্সর-ফ্লো এর ‘লাইট ওয়েট সলিউশন’ বিভিন্ন মোবাইল বা বাসার এমবেডেড ডিভাইসগুলোর জন্য। এগুলোর প্রসেসর ক্ষমতা অনেক কম, সে কারণে মেশিন লার্নিং এর আগে থেকে ট্রেনিং করানো ‘প্রি-ট্রেইনড’ মডেলকে চালানো সম্ভব হয়। যেহেতু মডেল আগে থেকেই ট্রেনিং করানো থাকে, সে কারণে সার্ভারে ডাটা পাঠিয়ে তার প্রেডিকশন করার দরকার পড়ছে না। আমাদের লোকাল ডিভাইসে ‘টেন্সর-ফ্লো এর আগের ট্রেনিং করানো মডেলের রানটাইম মানে একটা ‘ইনফারেন্স’ থাকবে যা শুধুমাত্র কাজ করবে যেই স্পেসিফিক কাজে তাকে ট্রেইন করা হয়েছিলো। এখানে যেকোনো মডেলকে ‘কনভার্ট’ করে নিতে হবে ‘টিএফ লাইট’ ফরম্যাটে যেটা যেকোনো মোবাইল ইন্টারপ্রেটারে চলবে। আমাদের ভবিষ্যৎ কাজের জন্য আমাদের ফ্যাশন এমনিস্ট মডেলটাকে কনভার্ট করে ডাউনলোড করে রেখেছিলাম ভবিষ্যৎ ব্যবহার করার জন্য। এরপর যে কোন মোবাইল অ্যাপে যোগ করে দিলেই কাজ হয়ে যাবে।

আমি গুগল কোডল্যাবস এর ভক্ত। codelabs.developers.google.com এই লিংকে এমন জিনিস নেই যা হাতেকলমে করা যায় না। আমাদের বইটা অ্যান্ড্রয়েড ফোকাসড না, সেকারণে অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরি করার জন্য যেটা না হলেই নয় সেটা নিয়ে আলাপ করবো এখানে। একটা ডিপ লার্নিং মডেল এন্ড টু এন্ড হিসেবে কিভাবে একটা অ্যান্ড্রয়েড এপ্লিকেশনে ব্যবহার করা যায় সেটা দেখাবো এখানে।

আমরা এ পর্যন্ত ‘এমনিস্ট’ (MNIST) ডাটাসেটের জন্য ফ্যাশন ‘এমনিস্ট’ ডেটাসেট ব্যবহার করেছি। শুরুতে আমি ফ্যাশন ‘এমনিস্ট’ দিয়ে একটা মোবাইল অ্যাপ তৈরি করলেও সেটাতে যত কোড দরকার হচ্ছে সেটা এই বইয়ের জন্য সমস্যা হয়ে দাঁড়াচ্ছে। সেদিক থেকে আমরা সাধারন ‘এমনিস্ট’ নিয়ে কাজ করলে সেটার জন্য কোডিং অনেকটাই কমে আসে। তবে আমরা যদি সাধারন ‘এমনিস্ট’ নিয়ে কাজ করতে পারি তাহলে সেটা থেকে ফ্যাশন ‘এমনিস্ট’ তৈরি করা কোন ব্যাপারই না। বরং সেটাই আপনাদের জন্য চ্যালেঞ্জ হিসেবে রইলো।

আরেকটা ব্যাপার হচ্ছে গুগলের কোডল্যাবস এ এতো চমৎকার করে এই উদাহরণটা তৈরি করেছে সেখানে আমি চাইছি পুরো জিনিসটা আপনারা একবার হাতে-কলমে করে দেখুন। শুরুতেই কোডল্যাবসের একটা ছোট উদাহরণ ফাইল ডাউনলোড করে নেবো যাতে আপনাদের এডিটিং করতে সুবিধা হয়। পুরোটাই যেহেতু কোড এ আছে সেজন্য আপনারা কয়েকটা লাইন পাল্টে দিলে একটা ওয়ার্কিং অ্যান্ড্রয়েড মোবাইল অ্যাপ তৈরি হয়ে যাবে। আমরা হাতে ডিজিট লিখে দিলে সেটা প্রেডিকশন রেজাল্ট সঙ্গে সঙ্গে দিয়ে দেবে আমাদের মোবাইলে। রেডি তো?

সাধারণ ‘এমনিস্ট’ নিয়ে কাজ করার আরেকটা মোটিভেশন আছে আমার। এই সাধারণ ‘এমনিস্ট’ ডাটাসেট কিভাবে ডিপ লার্নিং এর কাজ করবে সেটাও দেখিয়ে দেবো এখানে। হাজার হোক এখনো সাধারণ ‘এমনিস্ট’ ডাটাসেট ব্যবহার করছে হাজারো মানুষ। শুধুমাত্র শিখতে।

আজকের কাজে তিনটা স্টেপ।

১. ‘টেন্সরফ্লো’ দিয়ে একটা হাতে লেখা ডিজিট ক্লাসিফায়ার ‘এমনিস্ট’ ট্রেইন করব।

২. ‘টেন্সরফ্লো’ মডেলকে ‘টেন্সরফ্লো’ লাইট মডেল এ কনভার্ট করে নেব।

৩. ‘টেন্সরফ্লো’ লাইট মডেলকে শেষে একটা অ্যান্ড্রয়েড অ্যাপ এ ডেপ্লয় করব।

আমাদের কি কি লাগতে পারে?

১. ‘টেন্সরফ্লো’ ২.X। এটা গুগল কোলাবে পাওয়া যাবে।

২. নতুন ভার্সনের একটা অ্যান্ড্রয়েড স্টুডিও।

৩. হাতের কাছে একটা অ্যান্ড্রয়েড ডিভাইস অথবা অ্যান্ড্রয়েড স্টুডিও ‘ইমুলেটর’ যেটাতে অ্যান্ড্রয়েড অ্যাপ নেটিভলি চালানো যাবে।

৪. অ্যান্ড্রয়েড ডেভেলপমেন্ট এ কাজ করার জন্য ‘কোটলিন’ সম্বন্ধে কিছুটা ধারনা। এমুহুর্তে না থাকলেও চলবে।