HeadlinesBriefing favicon HeadlinesBriefing.com

মডেল থেকে সার্ভিস: FastAPI দিয়ে কার্যকর ML

Towards Data Science •
×

কয়েক মাস আগে, আমি নিজেকে চ্যালেঞ্জ করার চেষ্টা করেছিলাম যাতে আমি ডেটা অ্যানালিটিক্স ব্যাকগ্রাউন্ড থেকে ডেটা ইঞ্জিনিয়ারিং এ রূপান্তরের যাত্রা শুরু করতে পারি। এখন পর্যন্ত আমি মোট দুটি প্রভাবশালী বাস্তব-বিশ্ব প্রকল্প তৈরি করেছি যা আমাকে সত্যিই কিছু কার্যকর শিখিয়েছে। আমি একটি Git Hub ET L পাইপলাইন তৈরি করেছি যা Git Hub রিপোজিটরি এক্সট্র্যাক্ট করে এবং সেগুলিকে SQLite ডেটাবেসে লোড করে — এটি Git Hub Actions ব্যবহার করে একটি সময়সূচীতে চলত। আমি একটি RSS পাইপলাইনও তৈরি করেছি যা RSS ফিড থেকে নিবন্ধ এক্সট্র্যাক্ট করে এবং সেগুলিকে Kestra ডেটাবেসে সংরক্ষণ করে — Kestra দ্বারা ঘণ্টায় সময়সূচীতে চলার জন্য অর্কেস্ট্রেটেড। এখন যেহেতু আমি ET L কে কিছুটা বুঝতে পেরেছি, আমি কিছু নতুন চেষ্টা করতে চেয়েছিলাম। আমি নতুন কিছু তৈরি করার সময় অতীতে যা শিখেছি তা সব অনুশীলন চালিয়ে যেতে চেয়েছিলাম। আমি সবসময় মেশিন লার্নিং ক্ষেত্রে মুগ্ধ ছিলাম, কিন্তু আমি কখনও এতে প্রবেশ করার সাহস পাইনি কারণ আমি ভেবেছিলাম এতে জটিল গণিত ছিল। আর নয়। সম্প্রতি, আমি একটি কাল্পনিক টেলিকম কোম্পানির জন্য একটি চার্ন প্রেডিকশন মডেল তৈরি করেছি যাকে আমি Northline Mobile বলছি (পি.এস. আমি একটি কাল্পনিক কোম্পানি ব্যবহার করছি কারণ আমি বাস্তব-বিশ্বের পরিস্থিতিতে সবচেয়ে ভালো বুঝতে পারি)। আমি এটিকে 7043 গ্রাহকের ডেটা সরবরাহ করেছি, এটিকে বলেছি তারা 1-বছরের চুক্তি বা মাসিক পরিকল্পনার জন্য সাইন আপ করেছে কিনা, গ্রাহকের দৈর্ঘ্য, মাসিক চার্জ, অ্যাড-অন ইত্যাদি। উপরন্তু, আমি এটিকে বলেছি যে শেষ পর্যন্ত কে Northline Mobile ছেড়েছে। আমি এমন গ্রাহকদের সাথে মডেলটি ক্রস-ভ্যালিডেট করেছি যাদের এটি এখনও দেখেনি। এটি 81% নির্ভুলতা অর্জন করেছে। এটি আমাকে একটি মডেল তৈরির সবকিছু শিখিয়েছে। স্পষ্টতই আমি সমস্ত জটিল কোড বুঝিনি, কারণ আমি জটিল কোডের পরিবর্তে সহজ ড্র্যাগ এবং ড্রপ ইন্টারফেস পছন্দ করি। কিন্তু আমি একটি মডেল তৈরির প্রয়োজনীয় বিল্ডিং ব্লকগুলি বুঝেছি; আমি নিচে একটি সরলীকৃত আর্কিটেকচারের সাথে আরও ব্যাখ্যা করব। তাই মেশিন লার্নিং দৃষ্টিকোণ থেকে এই মডেলটি তৈরি করা একটি জয়ের মতো মনে হয়েছিল; আমার মডেল কাজ করেছিল। কিন্তু এখনও একটি সমস্যা ছিল: এটি এখনও সত্যিই কার্যকর ছিল না। ধরে নিই যে একজন Northline কর্মচারী যার একটি প্রেডিকশন প্রয়োজন সে আমার কাছে আসে, আমাকে Jupyter খুলতে হবে, সঠিক নোটবুক লোড করতে হবে, সেলগুলি সঠিক ক্রমে চালাতে হবে এবং predict_churn() এ ম্যানুয়াল কল করতে হবে। হ্যাঁ, মডেলটি বিদ্যমান, কিন্তু আমিই একমাত্র ব্যক্তি যিনি জানেন কীভাবে এটি ব্যবহার করতে হয়। Northline-এ অন্য কেউই সহজভাবে একজন গ্রাহকের তথ্য মডেলে পাঠাতে এবং একটি প্রেডিকশন পুনরুদ্ধার করতে পারে না এবং এটি অন্য কোনো অ্যাপ্লিকেশনের সাথেও কথা বলতে পারে না। এই নিবন্ধটি এটি কভার করবে। আমি সম্প্রতি শিখেছি যে একটি মডেল থাকা এবং একটি সার্ভিস থাকার মধ্যে একটি পার্থক্য রয়েছে। যদি একটি মডেল শুধুমাত্র একটি নোটবুকে বসে থাকে তবে কেবল এটি তৈরি করা ব্যক্তি এটি ব্যবহার করতে পারে। কিন্তু এটিকে একটি সার্ভিস করে তোলার ফলে প্রত্যেকে এটি ব্যবহার করতে পারে, অন্যান্য টিম, অ্যাপ, ড্যাশবোর্ড এবং সিস্টেমগুলির জন্য যাদের জানার বা চিন্তা করার প্রয়োজন নেই যে প্রেডিকশন কীভাবে তৈরি করা হয়। দেখা যাচ্ছে মেশিন লার্নিং মডেল তৈরি করা সবচেয়ে সহজ অংশ ছিল, কিন্তু এটি কার্যকর করা অন্য একটি গুরুত্বপূর্ণ উপাদান যা অন্বেষণ করার মতো। API-এর আগে 'সম্পন্ন' এর অর্থ কী ছিলএখানে মডেল তৈরি করা কেমন ছিল তার একটি আনুমানিক চিত্র: এটি এই পর্যন্ত। খুব ফ্যান্সি কিছু নয়। এর শেষে, আমার কাছে একটি প্রশিক্ষিত চার্ন ক্লাসিফায়ার ছিল, একটি প্রিপ্রসেসিং পাইপলাইন যা কাঁচা ডেটা পরিষ্কার এবং এনকোড করেছিল, এবং মূল্যায়ন সংখ্যা যা আমি স্বাচ্ছন্দ্য বোধ করেছি (এই সংখ্যাগুলি সম্পর্কে শীঘ্রই আরও, তারা নিখুঁত নয় এবং আমি দাবি করব না যে তারা নিখুঁত)। কিন্তু যেমন আমি বলেছি। ধরে নিই যে Northline-এর রিটেনশন টিম একটি ড্যাশবোর্ড তৈরি করে, এবং তারা চায় যে এটি ঝুঁকিপূর্ণ গ্রাহকদের স্বয়ংক্রিয়ভাবে চিহ্নিত করুক। তাদের ড্যাশবোর্ড যৌক্তিকভাবে আমার Jupyter নোটবুক খুলতে এবং আমার সেলগুলি চালাতে পারে না। এর সম্পূর্ণ ভিন্ন কিছু প্রয়োজন। এমন কিছু: এটিই সেই পরিবর্তন যা এই নিবন্ধটি কভার করে। একটি দ্রুত দাবি, যদিও: এটি একটি Fast API টিউটোরিয়াল নয়। Fast API হল সেই টুল যা আমি মডেলটিকে ... হিসাবে উন্মুক্ত করতে ব্যবহার করেছি