এই দস্তাবেজটি একটি দুই-অংশের সিরিজের মধ্যে প্রথম যা তত্ত্বাবধানে শেখার কাজগুলিতে ফোকাস সহ মেশিন লার্নিং (ML) এর জন্য ডেটা ইঞ্জিনিয়ারিং এবং বৈশিষ্ট্য প্রকৌশলের বিষয় অন্বেষণ করে। এই প্রথম অংশটি Google ক্লাউডে একটি ML পাইপলাইনে ডেটা প্রি-প্রসেস করার সেরা অনুশীলনগুলি নিয়ে আলোচনা করে৷ নথিটি টেনসরফ্লো এবং ওপেন সোর্স টেনসরফ্লো ট্রান্সফর্ম ( tf.Transform
) লাইব্রেরি ব্যবহার করে ডেটা প্রস্তুত করতে, মডেলকে প্রশিক্ষণ দিতে এবং ভবিষ্যদ্বাণীর জন্য মডেল পরিবেশন করার উপর ফোকাস করে। এই দস্তাবেজটি ML-এর জন্য ডেটা প্রি-প্রসেস করার চ্যালেঞ্জগুলিকে হাইলাইট করে এবং এটি Google ক্লাউডে কার্যকরভাবে ডেটা রূপান্তর সম্পাদন করার বিকল্প এবং পরিস্থিতি বর্ণনা করে।
এই দস্তাবেজটি অনুমান করে যে আপনি BigQuery , Dataflow , Vertex AI , এবং TensorFlow Keras API-এর সাথে পরিচিত৷
দ্বিতীয় নথি, Google ক্লাউডের সাথে ML-এর জন্য ডেটা প্রিপ্রসেসিং , কীভাবে একটি tf.Transform
পাইপলাইন বাস্তবায়ন করতে হয় তার জন্য ধাপে ধাপে টিউটোরিয়াল প্রদান করে।
ভূমিকা
ML আপনাকে স্বয়ংক্রিয়ভাবে ডেটাতে জটিল এবং সম্ভাব্য উপযোগী প্যাটার্ন খুঁজে পেতে সাহায্য করে। এই নিদর্শনগুলিকে একটি এমএল মডেলে ঘনীভূত করা হয় যা পরবর্তীতে নতুন ডেটা পয়েন্টগুলিতে ব্যবহার করা যেতে পারে—একটি প্রক্রিয়া যাকে বলা হয় ভবিষ্যদ্বাণী করা বা অনুমান করা ।
একটি এমএল মডেল তৈরি করা একটি মাল্টিস্টেপ প্রক্রিয়া। প্রতিটি পদক্ষেপ তার নিজস্ব প্রযুক্তিগত এবং ধারণাগত চ্যালেঞ্জ উপস্থাপন করে। এই দুই-অংশের সিরিজটি তত্ত্বাবধানে শেখার কাজগুলি এবং লক্ষ্য পরিবর্তনশীলের জন্য শক্তিশালী ভবিষ্যদ্বাণীমূলক সংকেত তৈরি করতে উত্স ডেটা নির্বাচন, রূপান্তর এবং বৃদ্ধি করার প্রক্রিয়ার উপর দৃষ্টি নিবদ্ধ করে। এই অপারেশনগুলি ডোমেন জ্ঞানকে ডেটা বিজ্ঞানের কৌশলগুলির সাথে একত্রিত করে। ক্রিয়াকলাপগুলি বৈশিষ্ট্য প্রকৌশলের সারাংশ।
বাস্তব-বিশ্বের এমএল মডেলের প্রশিক্ষণ ডেটাসেটের আকার সহজেই এক টেরাবাইটের (টিবি) সমান বা তার বেশি হতে পারে। অতএব, এই ডেটাসেটগুলিকে দক্ষতার সাথে এবং বিতরণ করার জন্য আপনার বড় আকারের ডেটা প্রক্রিয়াকরণ কাঠামোর প্রয়োজন। আপনি যখন ভবিষ্যদ্বাণী করার জন্য একটি ML মডেল ব্যবহার করেন, তখন আপনাকে একই রূপান্তরগুলি প্রয়োগ করতে হবে যা আপনি নতুন ডেটা পয়েন্টগুলিতে প্রশিক্ষণ ডেটার জন্য ব্যবহার করেছিলেন। একই রূপান্তরগুলি প্রয়োগ করে, আপনি মডেলটি যেভাবে প্রত্যাশা করে ML মডেলে লাইভ ডেটাসেট উপস্থাপন করেন৷
এই নথিটি বৈশিষ্ট্য প্রকৌশল ক্রিয়াকলাপের বিভিন্ন স্তরের গ্রানুলারিটির জন্য এই চ্যালেঞ্জগুলি নিয়ে আলোচনা করে: উদাহরণ-স্তর, পূর্ণ-পাস, এবং সময়-উইন্ডো সমষ্টি। এই দস্তাবেজটি Google ক্লাউডে ML-এর জন্য ডেটা রূপান্তর করার বিকল্পগুলি এবং পরিস্থিতিগুলিও বর্ণনা করে৷
এই দস্তাবেজটি TensorFlow Transform ( tf.Transform
), TensorFlow-এর একটি লাইব্রেরির একটি ওভারভিউও প্রদান করে যা আপনাকে ডেটা প্রিপ্রসেসিং পাইপলাইনের মাধ্যমে ইনস্ট্যান্স-লেভেল এবং পূর্ণ-পাস ডেটা ট্রান্সফর্মেশন উভয়ই সংজ্ঞায়িত করতে দেয়। এই পাইপলাইনগুলি Apache Beam এর সাথে কার্যকর করা হয়, এবং তারা এমন শিল্পকর্ম তৈরি করে যা আপনাকে ভবিষ্যদ্বাণী করার সময় একই রূপান্তর প্রয়োগ করতে দেয় যখন মডেলটি পরিবেশন করা হয়।
ML-এর জন্য ডেটা প্রিপ্রসেস করা হচ্ছে
এই বিভাগে ডেটা প্রিপ্রসেসিং অপারেশন এবং ডেটা প্রস্তুতির পর্যায়গুলি উপস্থাপন করা হয়েছে। এটি প্রিপ্রসেসিং ক্রিয়াকলাপগুলির প্রকার এবং তাদের গ্রানুলারিটি নিয়েও আলোচনা করে।
ফিচার ইঞ্জিনিয়ারিংয়ের তুলনায় ডেটা ইঞ্জিনিয়ারিং
এমএল-এর জন্য ডেটা প্রি-প্রসেসিং ডেটা ইঞ্জিনিয়ারিং এবং ফিচার ইঞ্জিনিয়ারিং উভয়ই জড়িত। ডেটা ইঞ্জিনিয়ারিং হল কাঁচা ডেটাকে প্রস্তুত ডেটাতে রূপান্তর করার প্রক্রিয়া। ফিচার ইঞ্জিনিয়ারিং তারপরে এমএল মডেলের দ্বারা প্রত্যাশিত বৈশিষ্ট্যগুলি তৈরি করতে প্রস্তুত ডেটা টিউন করে। এই পদগুলির নিম্নলিখিত অর্থ রয়েছে:
- কাঁচা ডেটা (বা শুধু ডেটা )
- ML-এর জন্য কোনো পূর্ব প্রস্তুতি ছাড়াই তার উৎস আকারে ডেটা। এই প্রসঙ্গে, ডেটা তার কাঁচা আকারে (একটি ডেটা লেকে) বা রূপান্তরিত আকারে (একটি ডেটা গুদামে) হতে পারে। একটি ডেটা গুদামে থাকা রূপান্তরিত ডেটা বিশ্লেষণের জন্য ব্যবহার করার জন্য তার আসল কাঁচা ফর্ম থেকে রূপান্তরিত হতে পারে। যাইহোক, এই প্রসঙ্গে, কাঁচা ডেটার মানে হল যে ডেটা আপনার ML টাস্কের জন্য বিশেষভাবে প্রস্তুত করা হয়নি। ডেটাকে কাঁচা ডেটা হিসাবেও বিবেচনা করা হয় যদি এটি স্ট্রিমিং সিস্টেম থেকে পাঠানো হয় যা শেষ পর্যন্ত ভবিষ্যদ্বাণীর জন্য এমএল মডেলগুলিকে কল করে।
- প্রস্তুত তথ্য
- ফর্মের ডেটাসেট আপনার ML টাস্কের জন্য প্রস্তুত: ডেটা উত্সগুলিকে পার্স করা হয়েছে, যোগ দেওয়া হয়েছে এবং একটি সারণী আকারে রাখা হয়েছে৷ প্রস্তুত করা ডেটা একত্রিত করা হয় এবং সঠিক গ্রানুলারিটিতে সংক্ষিপ্ত করা হয়—উদাহরণস্বরূপ, ডেটাসেটের প্রতিটি সারি একটি অনন্য গ্রাহকের প্রতিনিধিত্ব করে এবং প্রতিটি কলাম গ্রাহকের জন্য সারসংক্ষেপ তথ্য উপস্থাপন করে, যেমন গত ছয় সপ্তাহে মোট ব্যয় করা হয়েছে৷ একটি প্রস্তুত ডেটা টেবিলে, অপ্রাসঙ্গিক কলামগুলি বাদ দেওয়া হয়েছে, এবং অবৈধ রেকর্ডগুলি ফিল্টার করা হয়েছে৷ তত্ত্বাবধান করা শেখার কাজগুলির জন্য, লক্ষ্য বৈশিষ্ট্যটি উপস্থিত রয়েছে।
- প্রকৌশলী বৈশিষ্ট্য
- মডেলের দ্বারা প্রত্যাশিত টিউন করা বৈশিষ্ট্যগুলির সাথে ডেটাসেট—অর্থাৎ, তৈরি করা ডেটাসেটের কলামগুলিতে নির্দিষ্ট ML-নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করে এবং প্রশিক্ষণ এবং ভবিষ্যদ্বাণীর সময় আপনার মডেলের জন্য নতুন বৈশিষ্ট্য তৈরি করে তৈরি করা বৈশিষ্ট্যগুলি, যা পরে বর্ণিত হয়েছে। প্রিপ্রসেসিং অপারেশনে এই ক্রিয়াকলাপের উদাহরণগুলির মধ্যে রয়েছে সংখ্যাসূচক কলামগুলিকে 0 এবং 1 এর মধ্যে একটি মান, ক্লিপিং মান এবং এক-হট-এনকোডিং শ্রেণীগত বৈশিষ্ট্যগুলি।
নিম্নলিখিত চিত্র, চিত্র 1, প্রি-প্রসেসড ডেটা প্রস্তুত করার সাথে জড়িত পদক্ষেপগুলি দেখায়:
অনুশীলনে, একই উত্স থেকে ডেটা প্রায়শই প্রস্তুতির বিভিন্ন পর্যায়ে থাকে। উদাহরণস্বরূপ, আপনার ডেটা গুদামের একটি টেবিল থেকে একটি ক্ষেত্র সরাসরি একটি ইঞ্জিনিয়ারড বৈশিষ্ট্য হিসাবে ব্যবহার করা যেতে পারে। একই সময়ে, একই টেবিলের অন্য একটি ক্ষেত্রটি ইঞ্জিনিয়ারড বৈশিষ্ট্যে পরিণত হওয়ার আগে রূপান্তরের মধ্য দিয়ে যেতে হতে পারে। একইভাবে, ডেটা ইঞ্জিনিয়ারিং এবং ফিচার ইঞ্জিনিয়ারিং অপারেশনগুলি একই ডেটা প্রিপ্রসেসিং ধাপে একত্রিত হতে পারে।
প্রিপ্রসেসিং অপারেশন
ডেটা প্রিপ্রসেসিং এর মধ্যে বেশ কিছু ক্রিয়াকলাপ রয়েছে। প্রতিটি অপারেশন এমএলকে আরও ভাল ভবিষ্যদ্বাণীমূলক মডেল তৈরি করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। এই প্রিপ্রসেসিং অপারেশনগুলির বিশদ বিবরণ এই নথির সুযোগের বাইরে, তবে কিছু অপারেশন এই বিভাগে সংক্ষেপে বর্ণনা করা হয়েছে।
কাঠামোগত ডেটার জন্য, ডেটা প্রিপ্রসেসিং ক্রিয়াকলাপগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- ডেটা ক্লিনিং: কাঁচা ডেটা থেকে দূষিত বা অবৈধ মান রয়েছে এমন রেকর্ডগুলি অপসারণ বা সংশোধন করা এবং প্রচুর সংখ্যক কলাম অনুপস্থিত রেকর্ডগুলি সরানো।
- দৃষ্টান্ত নির্বাচন এবং বিভাজন: প্রশিক্ষণ, মূল্যায়ন (বৈধতা) এবং পরীক্ষার সেট তৈরি করতে ইনপুট ডেটাসেট থেকে ডেটা পয়েন্ট নির্বাচন করা। এই প্রক্রিয়ার মধ্যে রয়েছে পুনরাবৃত্তিযোগ্য র্যান্ডম স্যাম্পলিং, সংখ্যালঘু শ্রেণী ওভারস্যাম্পলিং, এবং স্তরিত বিভাজনের কৌশল।
- ফিচার টিউনিং: ML-এর জন্য একটি বৈশিষ্ট্যের গুণমান উন্নত করা, যার মধ্যে রয়েছে সাংখ্যিক মানগুলিকে স্কেলিং এবং স্বাভাবিককরণ, অনুপস্থিত মানগুলিকে অনুপস্থিত করা, আউটলায়ারগুলিকে ক্লিপ করা, এবং তির্যক বিতরণ রয়েছে এমন মানগুলিকে সামঞ্জস্য করা।
- বৈশিষ্ট্য রূপান্তর: একটি সংখ্যাসূচক বৈশিষ্ট্যকে একটি শ্রেণীবদ্ধ বৈশিষ্ট্যে রূপান্তর করা ( বাকেটাইজেশনের মাধ্যমে), এবং শ্রেণীগত বৈশিষ্ট্যগুলিকে একটি সংখ্যাসূচক উপস্থাপনায় রূপান্তর করা (ওয়ান-হট এনকোডিং, গণনা সহ শেখার , স্পার্স বৈশিষ্ট্য এম্বেডিং ইত্যাদির মাধ্যমে)। কিছু মডেল শুধুমাত্র সংখ্যাসূচক বা শ্রেণীবদ্ধ বৈশিষ্ট্যগুলির সাথে কাজ করে, অন্যরা মিশ্র ধরনের বৈশিষ্ট্যগুলি পরিচালনা করতে পারে। এমনকি যখন মডেল উভয় প্রকার পরিচালনা করে, তারা একই বৈশিষ্ট্যের বিভিন্ন উপস্থাপনা (সাংখ্যিক এবং স্পষ্ট) থেকে উপকৃত হতে পারে।
- বৈশিষ্ট্য নিষ্কাশন: নিম্ন-মাত্রা তৈরি করে বৈশিষ্ট্যের সংখ্যা হ্রাস করা, PCA , এম্বেডিং নিষ্কাশন এবং হ্যাশিংয়ের মতো কৌশলগুলি ব্যবহার করে আরও শক্তিশালী ডেটা উপস্থাপনা।
- বৈশিষ্ট্য নির্বাচন: মডেলের প্রশিক্ষণের জন্য ইনপুট বৈশিষ্ট্যগুলির একটি উপসেট নির্বাচন করা, এবং অপ্রাসঙ্গিক বা অপ্রয়োজনীয়গুলি উপেক্ষা করে, ফিল্টার বা মোড়ক পদ্ধতি ব্যবহার করে৷ বৈশিষ্ট্য নির্বাচন এছাড়াও বৈশিষ্ট্যগুলিকে বাদ দিতে পারে যদি বৈশিষ্ট্যগুলি প্রচুর সংখ্যক মান অনুপস্থিত থাকে।
- বৈশিষ্ট্য নির্মাণ: সাধারণ কৌশল ব্যবহার করে নতুন বৈশিষ্ট্য তৈরি করা, যেমন বহুপদী সম্প্রসারণ (অবিভিন্ন গাণিতিক ফাংশন ব্যবহার করে) বা বৈশিষ্ট্য ক্রসিং (ফিচার ইন্টারঅ্যাকশন ক্যাপচার করতে)। এমএল ব্যবহারের ক্ষেত্রের ডোমেন থেকে ব্যবসায়িক যুক্তি ব্যবহার করে বৈশিষ্ট্যগুলিও তৈরি করা যেতে পারে।
আপনি যখন অসংগঠিত ডেটা নিয়ে কাজ করেন (উদাহরণস্বরূপ, ছবি, অডিও, বা টেক্সট নথি), গভীর শিক্ষা ডোমেন-জ্ঞান-ভিত্তিক বৈশিষ্ট্য ইঞ্জিনিয়ারিংকে মডেল আর্কিটেকচারে ভাঁজ করে প্রতিস্থাপন করে। একটি convolutional স্তর একটি স্বয়ংক্রিয় বৈশিষ্ট্য প্রিপ্রসেসর. সঠিক মডেল আর্কিটেকচার নির্মাণের জন্য ডেটার কিছু অভিজ্ঞতামূলক জ্ঞান প্রয়োজন। উপরন্তু, কিছু পরিমাণ প্রিপ্রসেসিং প্রয়োজন, যেমন নিম্নলিখিত:
- টেক্সট নথির জন্য: স্টেমিং এবং লেমেমাটাইজেশন , TF-IDF গণনা, এবং n-গ্রাম নিষ্কাশন, এম্বেডিং লুকআপ।
- ছবির জন্য: ক্লিপিং, রিসাইজ, ক্রপিং, গাউসিয়ান ব্লার, এবং ক্যানারি ফিল্টার।
- সব ধরনের ডেটার জন্য (পাঠ্য এবং ছবি সহ): ট্রান্সফার লার্নিং , যা সম্পূর্ণ প্রশিক্ষিত মডেলের সব-কিন্তু-শেষ স্তরগুলিকে একটি বৈশিষ্ট্য প্রকৌশল পদক্ষেপ হিসাবে বিবেচনা করে।
প্রিপ্রসেসিং গ্রানুলারিটি
এই বিভাগে তথ্য রূপান্তরের প্রকারের গ্রানুলারিটি নিয়ে আলোচনা করা হয়েছে। প্রশিক্ষণ ডেটাতে প্রয়োগ করা রূপান্তরগুলি ব্যবহার করে ভবিষ্যদ্বাণীগুলির জন্য নতুন ডেটা পয়েন্ট তৈরি করার সময় কেন এই দৃষ্টিকোণটি গুরুত্বপূর্ণ তা দেখায়৷
অপারেশন গ্রানুলারিটির উপর ভিত্তি করে প্রিপ্রসেসিং এবং ট্রান্সফর্মেশন অপারেশনগুলিকে নিম্নরূপ শ্রেণীবদ্ধ করা যেতে পারে:
প্রশিক্ষণ এবং ভবিষ্যদ্বাণীর সময় উদাহরণ-স্তরের রূপান্তর । এগুলি হল সরল রূপান্তর, যেখানে রূপান্তরের জন্য একই উদাহরণ থেকে শুধুমাত্র মান প্রয়োজন। উদাহরণ স্বরূপ, ইনস্ট্যান্স-লেভেল ট্রান্সফরমেশনের মধ্যে একটি ফিচারের মানকে কিছু থ্রেশহোল্ডে ক্লিপ করা, অন্য একটি ফিচারকে বহুপদীভাবে প্রসারিত করা, দুটি বৈশিষ্ট্যকে গুণ করা, অথবা একটি বুলিয়ান পতাকা তৈরি করতে দুটি বৈশিষ্ট্যের তুলনা করা অন্তর্ভুক্ত থাকতে পারে।
এই রূপান্তরগুলি অবশ্যই প্রশিক্ষণ এবং ভবিষ্যদ্বাণীর সময় একইভাবে প্রয়োগ করা উচিত, কারণ মডেলটিকে রূপান্তরিত বৈশিষ্ট্যগুলিতে প্রশিক্ষণ দেওয়া হবে, কাঁচা ইনপুট মানগুলিতে নয়। যদি ডেটা একইভাবে রূপান্তরিত না হয়, তাহলে মডেলটি খারাপ আচরণ করে কারণ এটি এমন ডেটার সাথে উপস্থাপিত হয় যার মানগুলির একটি বিতরণ রয়েছে যার সাথে এটি প্রশিক্ষিত ছিল না। আরও তথ্যের জন্য, প্রি-প্রসেসিং চ্যালেঞ্জ বিভাগে প্রশিক্ষণ-সার্ভিং স্কু-এর আলোচনা দেখুন।
প্রশিক্ষণের সময় সম্পূর্ণ-পাস রূপান্তর, কিন্তু পূর্বাভাসের সময় উদাহরণ-স্তরের রূপান্তর। এই পরিস্থিতিতে, রূপান্তরগুলি রাষ্ট্রীয়, কারণ তারা রূপান্তর সম্পাদন করতে কিছু পূর্বনির্ধারিত পরিসংখ্যান ব্যবহার করে। প্রশিক্ষণ চলাকালীন, আপনি প্রশিক্ষণের ডেটা, মূল্যায়ন ডেটা এবং ভবিষ্যদ্বাণীর সময়ে নতুন ডেটা রূপান্তরের জন্য ন্যূনতম, সর্বোচ্চ, গড়, এবং বৈচিত্র্যের মতো পরিমাণগুলি গণনা করতে প্রশিক্ষণের সমস্ত ডেটা বিশ্লেষণ করেন।
উদাহরণস্বরূপ, প্রশিক্ষণের জন্য একটি সাংখ্যিক বৈশিষ্ট্যকে স্বাভাবিক করার জন্য, আপনি সমগ্র প্রশিক্ষণ ডেটা জুড়ে এর গড় (μ) এবং এর মান বিচ্যুতি (σ) গণনা করেন। এই গণনাকে একটি পূর্ণ-পাস (বা বিশ্লেষণ ) অপারেশন বলা হয়। আপনি যখন ভবিষ্যদ্বাণীর জন্য মডেলটি পরিবেশন করেন, তখন ট্রেনিং-সার্ভিং স্কু এড়াতে একটি নতুন ডেটা পয়েন্টের মান স্বাভাবিক করা হয়। অতএব, প্রশিক্ষণের সময় গণনা করা μ এবং σ মানগুলি বৈশিষ্ট্য মান সামঞ্জস্য করতে ব্যবহৃত হয়, যা নিম্নলিখিত সহজ উদাহরণ-স্তরের অপারেশন:
$$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$পূর্ণ-পাস রূপান্তর নিম্নলিখিত অন্তর্ভুক্ত:
- প্রশিক্ষণ ডেটাসেট থেকে গণনা করা সর্বনিম্ন এবং সর্বোচ্চ ব্যবহার করে MinMax স্কেলিং সংখ্যাসূচক বৈশিষ্ট্য।
- প্রশিক্ষণ ডেটাসেটে গণনা করা μ এবং σ ব্যবহার করে স্ট্যান্ডার্ড স্কেলিং (জেড-স্কোর স্বাভাবিককরণ) সংখ্যাসূচক বৈশিষ্ট্য।
- কোয়ান্টাইল ব্যবহার করে সংখ্যাসূচক বৈশিষ্ট্যগুলিকে বাকেটাইজ করা।
- মধ্যমা (সংখ্যাসূচক বৈশিষ্ট্য) বা মোড (শ্রেণীগত বৈশিষ্ট্য) ব্যবহার করে অনুপস্থিত মানগুলিকে ইম্পুট করা।
- একটি ইনপুট ক্যাটাগরিকাল বৈশিষ্ট্যের সমস্ত স্বতন্ত্র মান (শব্দভান্ডার) বের করে স্ট্রিং (নামমাত্র মান) পূর্ণসংখ্যা (সূচী) এ রূপান্তর করা।
- TF-IDF-এর জন্য গণনা করার জন্য সমস্ত নথিতে (উদাহরণ) একটি শব্দের (বৈশিষ্ট্যের মান) উপস্থিতি গণনা করা।
- একটি নিম্ন মাত্রিক স্থান (রৈখিকভাবে নির্ভরশীল বৈশিষ্ট্য সহ) তথ্য প্রজেক্ট করার জন্য ইনপুট বৈশিষ্ট্যগুলির PCA গণনা করা।
μ, σ, min এবং max এর মত পরিসংখ্যান গণনা করতে আপনার শুধুমাত্র প্রশিক্ষণের ডেটা ব্যবহার করা উচিত। আপনি যদি এই ক্রিয়াকলাপগুলির জন্য পরীক্ষা এবং মূল্যায়ন ডেটা যোগ করেন, আপনি মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য মূল্যায়ন এবং পরীক্ষার ডেটা থেকে তথ্য ফাঁস করছেন ৷ এটি করা পরীক্ষা এবং মূল্যায়ন ফলাফলের নির্ভরযোগ্যতা প্রভাবিত করে। আপনি সমস্ত ডেটাসেটে সামঞ্জস্যপূর্ণ রূপান্তর প্রয়োগ করেন তা নিশ্চিত করতে, আপনি পরীক্ষা এবং মূল্যায়ন ডেটা রূপান্তর করতে প্রশিক্ষণ ডেটা থেকে গণনা করা একই পরিসংখ্যান ব্যবহার করেন।
প্রশিক্ষণ এবং ভবিষ্যদ্বাণীর সময় ঐতিহাসিক সমষ্টি । এতে ভবিষ্যদ্বাণী টাস্কে ইনপুট সিগন্যাল হিসাবে ব্যবসার সমষ্টি, ডেরিভেশন এবং পতাকা তৈরি করা জড়িত—উদাহরণস্বরূপ, গ্রাহকদের প্রবণতা মডেল তৈরি করার জন্য রিসেন্সি, ফ্রিকোয়েন্সি এবং আর্থিক (RFM) মেট্রিক্স তৈরি করা। মডেল প্রশিক্ষণ, ব্যাচ স্কোরিং এবং অনলাইন ভবিষ্যদ্বাণী পরিবেশনের সময় ব্যবহার করার জন্য এই ধরনের বৈশিষ্ট্যগুলি পূর্বনির্ধারিত এবং একটি বৈশিষ্ট্য স্টোরে সংরক্ষণ করা যেতে পারে। আপনি প্রশিক্ষণ এবং ভবিষ্যদ্বাণী করার আগে এই সমষ্টিগুলিতে অতিরিক্ত বৈশিষ্ট্য ইঞ্জিনিয়ারিং (উদাহরণস্বরূপ, রূপান্তর এবং টিউনিং) সম্পাদন করতে পারেন।
প্রশিক্ষণের সময় ঐতিহাসিক একত্রীকরণ, কিন্তু ভবিষ্যদ্বাণীর সময় রিয়েল-টাইম সমষ্টি। এই পদ্ধতিতে সময়ের সাথে সাথে রিয়েল-টাইম মানগুলিকে সংক্ষিপ্ত করে একটি বৈশিষ্ট্য তৈরি করা জড়িত। এই পদ্ধতিতে, একত্রিত করা দৃষ্টান্তগুলিকে অস্থায়ী উইন্ডো ক্লজের মাধ্যমে সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ, আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন যদি আপনি এমন একটি মডেলকে প্রশিক্ষিত করতে চান যা গত 5 মিনিটে, শেষ 10 মিনিটে, শেষ 30 মিনিটে এবং অন্যান্য সময়ে রুটের ট্রাফিক মেট্রিক্সের উপর ভিত্তি করে ট্যাক্সি ট্রিপের সময় অনুমান করে। বিরতি আপনি গত 3 মিনিটে গণনা করা তাপমাত্রা এবং কম্পনের মানগুলির চলমান গড়ের উপর ভিত্তি করে একটি ইঞ্জিন অংশের ব্যর্থতার পূর্বাভাস দিতেও এই পদ্ধতিটি ব্যবহার করতে পারেন। যদিও এই সমষ্টিগুলি প্রশিক্ষণের জন্য অফলাইনে প্রস্তুত করা যেতে পারে, সেগুলি পরিবেশনের সময় ডেটা স্ট্রিম থেকে রিয়েল টাইমে গণনা করা হয়।
আরও স্পষ্টভাবে, আপনি যখন প্রশিক্ষণের ডেটা প্রস্তুত করেন, যদি সমষ্টিগত মান কাঁচা ডেটাতে না থাকে, তাহলে মানটি ডেটা ইঞ্জিনিয়ারিং পর্যায়ে তৈরি হয়। কাঁচা ডেটা সাধারণত
(entity, timestamp, value)
এর বিন্যাস সহ একটি ডাটাবেসে সংরক্ষণ করা হয়। পূর্ববর্তী উদাহরণে,entity
হল ট্যাক্সি রুটের রুট সেগমেন্ট শনাক্তকারী এবং ইঞ্জিন ব্যর্থতার জন্য ইঞ্জিন অংশ শনাক্তকারী। আপনি গণনা করার জন্য উইন্ডোিং অপারেশনগুলি ব্যবহার করতে পারেন(entity, time_index, aggregated_value_over_time_window)
এবং আপনার মডেল প্রশিক্ষণের জন্য একটি ইনপুট হিসাবে একত্রিত বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।যখন রিয়েল-টাইম (অনলাইন) ভবিষ্যদ্বাণীর মডেলটি পরিবেশিত হয়, তখন মডেলটি ইনপুট হিসাবে সমষ্টিগত মানগুলি থেকে প্রাপ্ত বৈশিষ্ট্যগুলি আশা করে৷ অতএব, আপনি আপনার সিস্টেমে প্রবাহিত রিয়েল-টাইম ডেটা পয়েন্ট থেকে একত্রিতকরণ গণনা করতে Apache Beam এর মতো একটি স্ট্রিম-প্রসেসিং প্রযুক্তি ব্যবহার করতে পারেন। নতুন ডেটা পয়েন্ট আসার সাথে সাথে স্ট্রিম-প্রসেসিং প্রযুক্তি টাইম উইন্ডোর উপর ভিত্তি করে রিয়েল-টাইম ডেটা একত্রিত করে। আপনি প্রশিক্ষণ এবং ভবিষ্যদ্বাণী করার আগে এই সমষ্টিগুলিতে অতিরিক্ত বৈশিষ্ট্য ইঞ্জিনিয়ারিং (উদাহরণস্বরূপ, রূপান্তর এবং টিউনিং) সম্পাদন করতে পারেন।
Google ক্লাউডে ML পাইপলাইন
এই বিভাগে পরিচালিত পরিষেবাগুলি ব্যবহার করে Google ক্লাউডে TensorFlow ML মডেলগুলিকে প্রশিক্ষণ এবং পরিবেশন করার জন্য একটি সাধারণ এন্ড-টু-এন্ড পাইপলাইনের মূল উপাদানগুলি নিয়ে আলোচনা করা হয়েছে৷ এটি এছাড়াও আলোচনা করে যেখানে আপনি ডেটা প্রিপ্রসেসিং ক্রিয়াকলাপগুলির বিভিন্ন বিভাগ বাস্তবায়ন করতে পারেন এবং এই ধরনের রূপান্তরগুলি বাস্তবায়ন করার সময় আপনি যে সাধারণ চ্যালেঞ্জগুলির মুখোমুখি হতে পারেন। How tf.Transform কাজ করে বিভাগটি দেখায় কিভাবে TensorFlow Transform লাইব্রেরি এই চ্যালেঞ্জ মোকাবেলায় সাহায্য করে।
উচ্চ-স্তরের স্থাপত্য
নিম্নলিখিত চিত্র, চিত্র 2, টেনসরফ্লো মডেলের প্রশিক্ষণ এবং পরিবেশনের জন্য একটি সাধারণ ML পাইপলাইনের একটি উচ্চ-স্তরের আর্কিটেকচার দেখায়। ডায়াগ্রামে A, B, এবং C লেবেলগুলি পাইপলাইনের বিভিন্ন স্থানকে নির্দেশ করে যেখানে ডেটা প্রিপ্রসেসিং হতে পারে। এই পদক্ষেপগুলি সম্পর্কে বিশদ বিবরণ নিম্নলিখিত বিভাগে দেওয়া হয়েছে।
পাইপলাইন নিম্নলিখিত ধাপগুলি নিয়ে গঠিত:
- কাঁচা ডেটা আমদানি করার পরে, ট্যাবুলার ডেটা BigQuery-এ সংরক্ষণ করা হয় এবং অন্যান্য ডেটা যেমন ছবি, অডিও এবং ভিডিও ক্লাউড স্টোরেজে সংরক্ষণ করা হয়। এই সিরিজের দ্বিতীয় অংশে উদাহরণ হিসেবে BigQuery-এ সংরক্ষিত ট্যাবুলার ডেটা ব্যবহার করা হয়েছে।
- ডেটা প্রকৌশল (প্রস্তুতি) এবং বৈশিষ্ট্য প্রকৌশল ডেটাফ্লো ব্যবহার করে স্কেলে নির্বাহ করা হয়। এই এক্সিকিউশনটি এমএল-প্রস্তুত প্রশিক্ষণ, মূল্যায়ন এবং পরীক্ষার সেট তৈরি করে যা ক্লাউড স্টোরেজে সংরক্ষণ করা হয়। আদর্শভাবে, এই ডেটাসেটগুলি TFRecord ফাইল হিসাবে সংরক্ষণ করা হয়, যা TensorFlow গণনার জন্য অপ্টিমাইজ করা ফর্ম্যাট।
- একটি টেনসরফ্লো মডেল প্রশিক্ষক প্যাকেজ ভার্টেক্স এআই ট্রেনিং-এ জমা দেওয়া হয়, যা মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য পূর্ববর্তী ধাপগুলি থেকে প্রি-প্রসেসড ডেটা ব্যবহার করে। এই ধাপের আউটপুট হল একটি প্রশিক্ষিত TensorFlow SavedModel যা ক্লাউড স্টোরেজে রপ্তানি করা হয়।
- প্রশিক্ষিত TensorFlow মডেলটি Vertex AI Prediction-এ একটি পরিষেবা হিসাবে স্থাপন করা হয়েছে যার একটি REST API রয়েছে যাতে এটি অনলাইন ভবিষ্যদ্বাণীর জন্য ব্যবহার করা যেতে পারে। একই মডেল ব্যাচ ভবিষ্যদ্বাণী কাজের জন্যও ব্যবহার করা যেতে পারে।
- মডেলটিকে একটি REST API হিসাবে মোতায়েন করার পরে, ক্লায়েন্ট অ্যাপস এবং অভ্যন্তরীণ সিস্টেমগুলি কিছু ডেটা পয়েন্ট সহ অনুরোধ পাঠিয়ে এবং ভবিষ্যদ্বাণী সহ মডেল থেকে প্রতিক্রিয়া প্রাপ্ত করার মাধ্যমে API চালু করতে পারে।
- এই পাইপলাইনটি অর্কেস্ট্রেটিং এবং স্বয়ংক্রিয় করার জন্য, আপনি ডেটা প্রস্তুতি, মডেল প্রশিক্ষণ এবং মডেল স্থাপনের পদক্ষেপগুলি আহ্বান করতে একটি শিডিউলার হিসাবে ভার্টেক্স এআই পাইপলাইন ব্যবহার করতে পারেন।
আপনি ভার্টেক্স এআই ফিচার স্টোর ব্যবহার করতে পারেন ভবিষ্যদ্বাণী করার জন্য ইনপুট বৈশিষ্ট্য সংরক্ষণ করতে। উদাহরণস্বরূপ, আপনি পর্যায়ক্রমে সর্বশেষ কাঁচা ডেটা থেকে প্রকৌশলী বৈশিষ্ট্যগুলি তৈরি করতে পারেন এবং সেগুলিকে Vertex AI বৈশিষ্ট্য স্টোরে সংরক্ষণ করতে পারেন৷ ক্লায়েন্ট অ্যাপগুলি Vertex AI ফিচার স্টোর থেকে প্রয়োজনীয় ইনপুট বৈশিষ্ট্যগুলি নিয়ে আসে এবং ভবিষ্যদ্বাণী পেতে মডেলে পাঠায়।
যেখানে প্রিপ্রসেসিং করতে হবে
চিত্র 2-এ, A, B, এবং C লেবেলগুলি দেখায় যে ডেটা প্রিপ্রসেসিং অপারেশনগুলি BigQuery, Dataflow বা TensorFlow-এ হতে পারে। নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে এই বিকল্পগুলির প্রতিটি কীভাবে কাজ করে৷
বিকল্প A: BigQuery
সাধারণত, নিম্নলিখিত ক্রিয়াকলাপগুলির জন্য BigQuery-এ যুক্তি প্রয়োগ করা হয়:
- স্যাম্পলিং: এলোমেলোভাবে ডেটা থেকে একটি উপসেট নির্বাচন করা।
- ফিল্টারিং: অপ্রাসঙ্গিক বা অবৈধ দৃষ্টান্তগুলি অপসারণ করা।
- বিভাজন: প্রশিক্ষণ, মূল্যায়ন এবং পরীক্ষার সেট তৈরি করতে ডেটা বিভক্ত করা।
BigQuery SQL স্ক্রিপ্টগুলি ডেটাফ্লো প্রিপ্রসেসিং পাইপলাইনের জন্য একটি উৎস ক্যোয়ারী হিসাবে ব্যবহার করা যেতে পারে, যা চিত্র 2-এ ডেটা প্রসেসিং ধাপ। উদাহরণস্বরূপ, যদি কানাডায় একটি সিস্টেম ব্যবহার করা হয়, এবং ডেটা গুদামে সারা বিশ্ব থেকে লেনদেন হয়, ফিল্টারিং BigQuery-এ শুধুমাত্র কানাডা প্রশিক্ষণের ডেটা পান। BigQuery-এ ফিচার ইঞ্জিনিয়ারিং সহজ এবং স্কেলযোগ্য এবং ইন্সট্যান্স-লেভেল এবং ঐতিহাসিক একত্রীকরণ বৈশিষ্ট্য রূপান্তর বাস্তবায়নে সহায়তা করে।
যাইহোক, আমরা সুপারিশ করি যে আপনি শুধুমাত্র যদি আপনি আপনার মডেল ব্যাচ ভবিষ্যদ্বাণী (স্কোরিং) এর জন্য ব্যবহার করেন, অথবা যদি বৈশিষ্ট্যগুলি BigQuery-এ প্রি-কম্পিউট করা থাকে, কিন্তু অনলাইন ভবিষ্যদ্বাণীর সময় ব্যবহার করার জন্য Vertex AI বৈশিষ্ট্য স্টোরে সংরক্ষণ করা হয় তবেই আপনি বৈশিষ্ট্য প্রকৌশলের জন্য BigQuery ব্যবহার করুন। আপনি যদি অনলাইন ভবিষ্যদ্বাণীর জন্য মডেলটি স্থাপন করার পরিকল্পনা করেন, এবং যদি আপনার কাছে একটি অনলাইন বৈশিষ্ট্য স্টোরে ইঞ্জিনিয়ারড বৈশিষ্ট্য না থাকে, তাহলে আপনাকে অন্য সিস্টেমগুলি তৈরি করা কাঁচা ডেটা পয়েন্টগুলিকে রূপান্তর করতে SQL প্রিপ্রসেসিং অপারেশনগুলিকে প্রতিলিপি করতে হবে৷ অন্য কথায়, আপনাকে দুইবার লজিক প্রয়োগ করতে হবে: এক বার SQL-এ BigQuery-এ প্রশিক্ষণ ডেটা প্রিপ্রসেস করার জন্য এবং দ্বিতীয়বার অ্যাপের লজিক যা ভবিষ্যদ্বাণীর জন্য অনলাইন ডেটা পয়েন্ট প্রিপ্রসেস করতে মডেলটি ব্যবহার করে।
উদাহরণস্বরূপ, যদি আপনার ক্লায়েন্ট অ্যাপটি জাভাতে লেখা থাকে, তাহলে আপনাকে জাভাতে যুক্তিটি পুনরায় প্রয়োগ করতে হবে। এটি বাস্তবায়নের অসঙ্গতির কারণে ত্রুটিগুলি প্রবর্তন করতে পারে, যেমনটি পরবর্তীতে এই নথিতে প্রিপ্রসেসিং চ্যালেঞ্জগুলির প্রশিক্ষণ-পরিষেবা স্ক্যু বিভাগে বর্ণিত হয়েছে। এটি দুটি ভিন্ন বাস্তবায়ন বজায় রাখার জন্য অতিরিক্ত ওভারহেড। যখনই আপনি প্রশিক্ষণের ডেটা প্রিপ্রসেস করার জন্য SQL এ লজিক পরিবর্তন করেন, আপনাকে সেই অনুযায়ী জাভা ইমপ্লিমেন্টেশন পরিবর্তন করতে হবে যাতে সার্ভিং টাইমে ডেটা প্রিপ্রসেস করা যায়।
আপনি যদি আপনার মডেলটি শুধুমাত্র ব্যাচের পূর্বাভাসের জন্য ব্যবহার করেন (উদাহরণস্বরূপ, Vertex AI ব্যাচের পূর্বাভাস ব্যবহার করে), এবং যদি আপনার স্কোরিংয়ের জন্য ডেটা BigQuery থেকে নেওয়া হয়, তাহলে আপনি BigQuery SQL স্ক্রিপ্টের অংশ হিসাবে এই প্রিপ্রসেসিং অপারেশনগুলি বাস্তবায়ন করতে পারেন। সেই ক্ষেত্রে, আপনি প্রশিক্ষণ এবং স্কোরিং ডেটা উভয়ই প্রস্তুত করতে একই প্রিপ্রসেসিং SQL স্ক্রিপ্ট ব্যবহার করতে পারেন।
সম্পূর্ণ-পাস স্টেটফুল রূপান্তরগুলি BigQuery-এ বাস্তবায়নের জন্য উপযুক্ত নয়। আপনি যদি পূর্ণ-পাস রূপান্তরের জন্য BigQuery ব্যবহার করেন, তাহলে রাষ্ট্রীয় রূপান্তরগুলির জন্য প্রয়োজনীয় পরিমাণগুলি সঞ্চয় করার জন্য আপনার সহায়ক টেবিলের প্রয়োজন, যেমন সংখ্যাগত বৈশিষ্ট্যগুলি মাপতে উপায় এবং বৈচিত্র। আরও, BigQuery-এ SQL ব্যবহার করে পূর্ণ-পাস রূপান্তরের বাস্তবায়ন SQL স্ক্রিপ্টে জটিলতা তৈরি করে এবং প্রশিক্ষণ এবং স্কোরিং SQL স্ক্রিপ্টের মধ্যে জটিল নির্ভরতা তৈরি করে।
বিকল্প B: ডেটাফ্লো
চিত্র 2-এ দেখানো হিসাবে, আপনি Apache Beam-এ গণনাগতভাবে ব্যয়বহুল প্রিপ্রসেসিং অপারেশনগুলি বাস্তবায়ন করতে পারেন এবং ডেটাফ্লো ব্যবহার করে স্কেলে চালাতে পারেন। ডেটাফ্লো ব্যাচ এবং স্ট্রিম ডেটা প্রক্রিয়াকরণের জন্য একটি সম্পূর্ণরূপে পরিচালিত অটোস্কেলিং পরিষেবা। আপনি যখন Dataflow ব্যবহার করেন, তখন আপনি BigQuery-এর বিপরীতে ডেটা প্রসেসিংয়ের জন্য বাহ্যিক বিশেষায়িত লাইব্রেরিও ব্যবহার করতে পারেন।
ডেটাফ্লো ইনস্ট্যান্স-লেভেল ট্রান্সফর্মেশন এবং ঐতিহাসিক এবং রিয়েল-টাইম অ্যাগ্রিগেশন ফিচার ট্রান্সফর্মেশন করতে পারে। বিশেষ করে, যদি আপনার ML মডেলগুলি total_number_of_clicks_last_90sec
এর মত একটি ইনপুট বৈশিষ্ট্য আশা করে, Apache Beam windowing ফাংশনগুলি রিয়েল-টাইম (স্ট্রিমিং) ইভেন্ট ডেটা (উদাহরণস্বরূপ, ইভেন্টে ক্লিক করুন) এর টাইম উইন্ডোর মানগুলিকে একত্রিত করার উপর ভিত্তি করে এই বৈশিষ্ট্যগুলি গণনা করতে পারে। রূপান্তরের গ্রানুলারিটির পূর্ববর্তী আলোচনায়, এটিকে "প্রশিক্ষণের সময় ঐতিহাসিক সমষ্টি, কিন্তু ভবিষ্যদ্বাণীর সময় বাস্তব-সময়ের সমষ্টি" হিসাবে উল্লেখ করা হয়েছিল।
নীচের চিত্র, চিত্র 3, কাছাকাছি রিয়েল-টাইম ভবিষ্যদ্বাণীগুলির জন্য স্ট্রিম ডেটা প্রক্রিয়াকরণে ডেটাফ্লো-এর ভূমিকা দেখায়৷
চিত্র 3-এ দেখানো হয়েছে, প্রক্রিয়াকরণের সময়, ডেটা পয়েন্ট নামক ইভেন্টগুলিকে Pub/Sub- এ প্রবেশ করানো হয়। ডেটাফ্লো এই ডেটা পয়েন্টগুলি ব্যবহার করে, সময়ের সাথে সমষ্টির উপর ভিত্তি করে বৈশিষ্ট্যগুলি গণনা করে এবং তারপরে ভবিষ্যদ্বাণীর জন্য স্থাপন করা এমএল মডেল এপিআইকে কল করে। পূর্বাভাস তারপর একটি বহির্গামী পাব/সাব সারিতে পাঠানো হয়. পাব/সাব থেকে, ভবিষ্যদ্বাণীগুলি নিরীক্ষণ বা নিয়ন্ত্রণের মতো ডাউনস্ট্রিম সিস্টেমগুলি দ্বারা গ্রাস করা যেতে পারে, বা সেগুলিকে পিছনে ঠেলে দেওয়া যেতে পারে (উদাহরণস্বরূপ, বিজ্ঞপ্তি হিসাবে) আসল অনুরোধকারী ক্লায়েন্টের কাছে। ভবিষ্যদ্বাণীগুলি রিয়েল-টাইম আনার জন্য ক্লাউড বিগটেবলের মতো একটি কম-বিলম্বিত ডেটা স্টোরেও সংরক্ষণ করা যেতে পারে। ক্লাউড বিগটেবল এই রিয়েল-টাইম অ্যাগ্রিগেশনগুলিকে জমা এবং সঞ্চয় করতেও ব্যবহার করা যেতে পারে যাতে ভবিষ্যদ্বাণীর জন্য প্রয়োজন হলে সেগুলি সন্ধান করা যায়।
একই Apache Beam বাস্তবায়ন ব্যাচ-প্রসেস প্রশিক্ষণ ডেটাতে ব্যবহার করা যেতে পারে যা BigQuery এর মতো অফলাইন ডেটাস্টোর থেকে আসে এবং অনলাইন ভবিষ্যদ্বাণী পরিবেশনের জন্য স্ট্রিম-প্রসেস রিয়েল-টাইম ডেটা।
অন্যান্য সাধারণ আর্কিটেকচারে, যেমন চিত্র 2-এ দেখানো আর্কিটেকচার, ক্লায়েন্ট অ্যাপ অনলাইন ভবিষ্যদ্বাণীর জন্য সরাসরি মোতায়েন মডেল API-কে কল করে। সেক্ষেত্রে, প্রশিক্ষণ ডেটা প্রস্তুত করার জন্য ডেটাফ্লোতে প্রিপ্রসেসিং অপারেশনগুলি প্রয়োগ করা হলে, অপারেশনগুলি ভবিষ্যদ্বাণী ডেটাতে প্রয়োগ করা হয় না যা সরাসরি মডেলে যায়। তাই, অনলাইন ভবিষ্যদ্বাণীর জন্য পরিবেশন করার সময় এই ধরনের রূপান্তরগুলি মডেলে একত্রিত করা উচিত।
প্রয়োজনীয় পরিসংখ্যান স্কেলে গণনা করে পূর্ণ-পাস রূপান্তর সম্পাদন করতে ডেটাফ্লো ব্যবহার করা যেতে পারে। যাইহোক, এই পরিসংখ্যানগুলি ভবিষ্যদ্বাণী ডেটা পয়েন্টগুলিকে রূপান্তর করার জন্য ভবিষ্যদ্বাণীর সময় ব্যবহার করার জন্য কোথাও সংরক্ষণ করা দরকার। TensorFlow Transform ( tf.Transform
) লাইব্রেরি ব্যবহার করে, আপনি এই পরিসংখ্যানগুলিকে অন্য কোথাও সংরক্ষণ করার পরিবর্তে মডেলটিতে সরাসরি এম্বেড করতে পারেন। এই পদ্ধতিটি tf.Transform কিভাবে কাজ করে তা পরে ব্যাখ্যা করা হয়েছে।
বিকল্প সি: টেনসরফ্লো
চিত্র 2-এ দেখানো হিসাবে, আপনি টেনসরফ্লো মডেলেই ডেটা প্রিপ্রসেসিং এবং রূপান্তর ক্রিয়াকলাপগুলি বাস্তবায়ন করতে পারেন। চিত্রে দেখানো হয়েছে, টেনসরফ্লো মডেলের প্রশিক্ষণের জন্য আপনি যে প্রিপ্রসেসিং প্রয়োগ করেন তা মডেলটির একটি অবিচ্ছেদ্য অংশ হয়ে ওঠে যখন মডেলটি রপ্তানি করা হয় এবং পূর্বাভাসের জন্য স্থাপন করা হয়। টেনসরফ্লো মডেলের রূপান্তরগুলি নিম্নলিখিত উপায়গুলির মধ্যে একটিতে সম্পন্ন করা যেতে পারে:
-
input_fn
ফাংশনে এবংserving_fn
ফাংশনে ইনস্ট্যান্স-লেভেল ট্রান্সফরমেশন লজিক প্রয়োগ করা।input_fn
ফাংশন একটি মডেল প্রশিক্ষণের জন্যtf.data.Dataset
API ব্যবহার করে একটি ডেটাসেট প্রস্তুত করে।serving_fn
ফাংশন ভবিষ্যদ্বাণীর জন্য ডেটা গ্রহণ করে এবং প্রস্তুত করে। - কেরাস প্রিপ্রসেসিং লেয়ার ব্যবহার করে বা কাস্টম লেয়ার তৈরি করে ট্রান্সফর্মেশন কোড সরাসরি আপনার টেনসরফ্লো মডেলে রাখুন।
serving_fn
ফাংশনে ট্রান্সফর্মেশন লজিক কোড অনলাইন ভবিষ্যদ্বাণীর জন্য আপনার SavedModel-এর পরিবেশন ইন্টারফেসকে সংজ্ঞায়িত করে। আপনি যদি serving_fn
ফাংশনের ট্রান্সফর্মেশন লজিক কোডে প্রশিক্ষণ ডেটা প্রস্তুত করার জন্য ব্যবহৃত একই রূপান্তরগুলি প্রয়োগ করেন, তাহলে এটি নিশ্চিত করে যে একই রূপান্তরগুলি নতুন পূর্বাভাস ডেটা পয়েন্টগুলিতে প্রয়োগ করা হয় যখন সেগুলি পরিবেশন করা হয়।
যাইহোক, যেহেতু টেনসরফ্লো মডেল প্রতিটি ডেটা পয়েন্ট স্বাধীনভাবে বা একটি ছোট ব্যাচে প্রক্রিয়া করে, আপনি সমস্ত ডেটা পয়েন্ট থেকে একত্রিতকরণ গণনা করতে পারবেন না। ফলস্বরূপ, আপনার টেনসরফ্লো মডেলে পূর্ণ-পাস রূপান্তরগুলি প্রয়োগ করা যাবে না।
প্রিপ্রসেসিং চ্যালেঞ্জ
ডেটা প্রিপ্রসেসিং বাস্তবায়নের প্রাথমিক চ্যালেঞ্জগুলি নিম্নরূপ:
প্রশিক্ষণ-পরিষেবা তির্যক . ট্রেনিং-সার্ভিং স্কু বলতে প্রশিক্ষণের সময় এবং পরিবেশন করার সময় কার্যকারিতা (ভবিষ্যদ্বাণীমূলক কর্মক্ষমতা) এর মধ্যে পার্থক্য বোঝায়। এই তির্যকটি প্রশিক্ষণে আপনি কীভাবে ডেটা পরিচালনা করেন এবং পরিবেশনকারী পাইপলাইনের মধ্যে পার্থক্যের কারণে হতে পারে। উদাহরণস্বরূপ, যদি আপনার মডেলটি লগারিদমিকভাবে রূপান্তরিত বৈশিষ্ট্যের উপর প্রশিক্ষণপ্রাপ্ত হয়, কিন্তু পরিবেশন করার সময় এটি কাঁচা বৈশিষ্ট্যের সাথে উপস্থাপিত হয়, তাহলে ভবিষ্যদ্বাণী আউটপুট সঠিক নাও হতে পারে।
যদি রূপান্তরগুলি নিজেই মডেলের অংশ হয়ে যায়, তাহলে উদাহরণ-স্তরের রূপান্তরগুলি পরিচালনা করা সহজ হতে পারে, যেমনটি পূর্বে বিকল্প C: TensorFlow- এ বর্ণিত হয়েছে। সেই ক্ষেত্রে, মডেল সার্ভিং ইন্টারফেস (
serving_fn
ফাংশন) কাঁচা ডেটা আশা করে, যখন মডেলটি আউটপুট গণনা করার আগে এই ডেটাটিকে অভ্যন্তরীণভাবে রূপান্তর করে। রূপান্তরগুলি কাঁচা প্রশিক্ষণ এবং ভবিষ্যদ্বাণী ডেটা পয়েন্টগুলিতে প্রয়োগ করাগুলির মতোই৷পূর্ণ-পাস রূপান্তর । আপনি আপনার টেনসরফ্লো মডেলে স্কেলিং এবং স্বাভাবিকীকরণ রূপান্তরের মতো ফুল-পাস রূপান্তরগুলি বাস্তবায়ন করতে পারবেন না। ফুল-পাস ট্রান্সফরমেশনে, কিছু পরিসংখ্যান (উদাহরণস্বরূপ, সাংখ্যিক বৈশিষ্ট্য স্কেল করার জন্য
max
এবংmin
মান) অবশ্যই প্রশিক্ষণের ডেটাতে আগে থেকে গণনা করা উচিত, যেমনটি বিকল্প B: ডেটাফ্লোতে বর্ণিত হয়েছে। নতুন কাঁচা ডেটা পয়েন্টগুলিকে ইনস্ট্যান্স-লেভেল ট্রান্সফর্মেশন হিসাবে রূপান্তর করার জন্য ভবিষ্যদ্বাণীর জন্য মডেল পরিবেশনের সময় ব্যবহার করার জন্য মানগুলিকে কোথাও সংরক্ষণ করতে হবে, যা প্রশিক্ষণ-সার্ভিং স্কু এড়িয়ে যায়। আপনার TensorFlow মডেলে পরিসংখ্যান সরাসরি এম্বেড করতে আপনি TensorFlow Transform (tf.Transform
) লাইব্রেরি ব্যবহার করতে পারেন। এই পদ্ধতিটি tf.Transform কিভাবে কাজ করে তা পরে ব্যাখ্যা করা হয়েছে।আরও ভাল প্রশিক্ষণ দক্ষতার জন্য সামনে ডেটা প্রস্তুত করা । মডেলের অংশ হিসাবে দৃষ্টান্ত-স্তরের রূপান্তরগুলি বাস্তবায়ন করা প্রশিক্ষণ প্রক্রিয়ার দক্ষতা হ্রাস করতে পারে। এই অবনতি ঘটে কারণ একই রূপান্তরগুলি প্রতিটি যুগে একই প্রশিক্ষণ ডেটাতে বারবার প্রয়োগ করা হয়। কল্পনা করুন যে আপনার কাছে 1,000টি বৈশিষ্ট্য সহ অশোধিত প্রশিক্ষণ ডেটা রয়েছে এবং আপনি 10,000টি বৈশিষ্ট্য তৈরি করতে উদাহরণ-স্তরের রূপান্তরের মিশ্রণ প্রয়োগ করেন৷ আপনি যদি এই রূপান্তরগুলিকে আপনার মডেলের অংশ হিসাবে প্রয়োগ করেন, এবং আপনি যদি মডেলটিকে কাঁচা প্রশিক্ষণের ডেটা খাওয়ান, এই 10,000টি অপারেশন প্রতিটি উদাহরণে N বার প্রয়োগ করা হয়, যেখানে N হল যুগের সংখ্যা। উপরন্তু, আপনি যদি এক্সিলারেটর (GPUs বা TPUs) ব্যবহার করেন, CPU সেই রূপান্তরগুলি সম্পাদন করার সময় তারা নিষ্ক্রিয় থাকে, যা আপনার ব্যয়বহুল অ্যাক্সিলারেটরগুলির একটি দক্ষ ব্যবহার নয়।
আদর্শভাবে, বিকল্প B: ডেটাফ্লো- এর অধীনে বর্ণিত কৌশলটি ব্যবহার করে প্রশিক্ষণের আগে প্রশিক্ষণের ডেটা রূপান্তরিত হয়, যেখানে প্রতিটি প্রশিক্ষণের উদাহরণে 10,000 রূপান্তর ক্রিয়াকলাপ শুধুমাত্র একবার প্রয়োগ করা হয়। রূপান্তরিত প্রশিক্ষণ ডেটা মডেলে উপস্থাপন করা হয়। আর কোন রূপান্তর প্রয়োগ করা হয় না, এবং ত্বরণকারীরা সব সময় ব্যস্ত থাকে। উপরন্তু, Dataflow ব্যবহার করা আপনাকে সম্পূর্ণরূপে পরিচালিত পরিষেবা ব্যবহার করে স্কেলে প্রচুর পরিমাণে ডেটা প্রিপ্রসেস করতে সাহায্য করে।
প্রশিক্ষণের তথ্য সামনের দিকে প্রস্তুত করা প্রশিক্ষণের দক্ষতা উন্নত করতে পারে। যাইহোক, মডেলের বাইরে রূপান্তর যুক্তি প্রয়োগ করা ( বিকল্প A: BigQuery বা বিকল্প B: Dataflow ) তে বর্ণিত পদ্ধতিগুলি প্রশিক্ষণ-সার্ভিং স্কুয়ের সমস্যার সমাধান করে না। আপনি প্রশিক্ষণ এবং ভবিষ্যদ্বাণী উভয়ের জন্য ব্যবহার করার জন্য ফিচার স্টোরে ইঞ্জিনিয়ারড বৈশিষ্ট্য সংরক্ষণ না করলে, ভবিষ্যদ্বাণীর জন্য আসা নতুন ডেটা পয়েন্টগুলিতে প্রয়োগ করার জন্য রূপান্তর যুক্তি অবশ্যই প্রয়োগ করা উচিত, কারণ মডেল ইন্টারফেস রূপান্তরিত ডেটা আশা করে। TensorFlow Transform (
tf.Transform
) লাইব্রেরি আপনাকে এই সমস্যাটির সমাধান করতে সাহায্য করতে পারে, যেমনটি নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।
কিভাবে tf.Transform কাজ করে
tf.Transform
লাইব্রেরি এমন রূপান্তরগুলির জন্য দরকারী যেগুলির জন্য একটি সম্পূর্ণ পাস প্রয়োজন৷ tf.Transform
লাইব্রেরির আউটপুট একটি TensorFlow গ্রাফ হিসাবে রপ্তানি করা হয় যা ইনস্ট্যান্স-লেভেল ট্রান্সফরমেশন লজিক এবং পূর্ণ-পাস ট্রান্সফরমেশন থেকে গণনা করা পরিসংখ্যানকে প্রতিনিধিত্ব করে, প্রশিক্ষণ এবং পরিবেশনের জন্য ব্যবহার করা হবে। প্রশিক্ষণ এবং পরিবেশন উভয়ের জন্য একই গ্রাফ ব্যবহার করা তির্যক প্রতিরোধ করতে পারে, কারণ উভয় পর্যায়ে একই রূপান্তর প্রয়োগ করা হয়। এছাড়াও, tf.Transform
লাইব্রেরি ডাটাফ্লোতে একটি ব্যাচ প্রসেসিং পাইপলাইনে স্কেলে চলতে পারে যাতে প্রশিক্ষণের ডেটা সামনের দিকে প্রস্তুত করা যায় এবং প্রশিক্ষণের দক্ষতা উন্নত করা যায়।
নিচের চিত্র, চিত্র 4, দেখায় কিভাবে tf.Transform
লাইব্রেরি প্রিপ্রসেস করে এবং প্রশিক্ষণ এবং ভবিষ্যদ্বাণীর জন্য ডেটা রূপান্তর করে। প্রক্রিয়াটি নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।
প্রশিক্ষণ এবং মূল্যায়ন তথ্য রূপান্তর
আপনি tf.Transform
Apache Beam API-এ বাস্তবায়িত রূপান্তর ব্যবহার করে কাঁচা প্রশিক্ষণ ডেটা প্রিপ্রসেস করেন এবং ডেটাফ্লোতে স্কেলে চালান। প্রিপ্রসেসিং নিম্নলিখিত পর্যায়ে ঘটে:
- বিশ্লেষণ পর্যায়: বিশ্লেষণ পর্বের সময়, রাষ্ট্রীয় রূপান্তরের জন্য প্রয়োজনীয় পরিসংখ্যান (যেমন মানে, বৈচিত্র্য এবং কোয়ান্টাইল) সম্পূর্ণ-পাস অপারেশন সহ প্রশিক্ষণের ডেটাতে গণনা করা হয়। এই পর্যায়টি
transform_fn
গ্রাফ সহ রূপান্তর শিল্পকর্মের একটি সেট তৈরি করে।transform_fn
গ্রাফ হল একটি টেনসরফ্লো গ্রাফ যাতে ইনস্ট্যান্স-লেভেল অপারেশন হিসাবে ট্রান্সফর্মেশন লজিক রয়েছে। এটি ধ্রুবক হিসাবে বিশ্লেষণ পর্বে গণনা করা পরিসংখ্যান অন্তর্ভুক্ত করে। - রূপান্তর পর্ব: রূপান্তর পর্বের সময়,
transform_fn
গ্রাফটি কাঁচা প্রশিক্ষণের ডেটাতে প্রয়োগ করা হয়, যেখানে গণনা করা পরিসংখ্যানগুলি একটি উদাহরণ-স্তরের ফ্যাশনে ডেটা রেকর্ডগুলি (উদাহরণস্বরূপ, সংখ্যাসূচক কলাম স্কেল করার জন্য) প্রক্রিয়া করতে ব্যবহৃত হয়।
এই ধরনের একটি দ্বি-পর্যায়ের পদ্ধতি পূর্ণ-পাস রূপান্তরগুলি সম্পাদন করার পূর্বপ্রসেসিং চ্যালেঞ্জকে সম্বোধন করে।
যখন মূল্যায়ন ডেটা প্রিপ্রসেস করা হয়, তখন শুধুমাত্র ইনস্ট্যান্স-লেভেল অপারেশন প্রয়োগ করা হয়, transform_fn
গ্রাফে যুক্তি ব্যবহার করে এবং প্রশিক্ষণের ডেটা বিশ্লেষণের পর্যায় থেকে গণনা করা পরিসংখ্যান। অন্য কথায়, আপনি নতুন পরিসংখ্যান, যেমন μ এবং σ, মূল্যায়ন ডেটাতে সাংখ্যিক বৈশিষ্ট্যগুলিকে স্বাভাবিক করার জন্য পূর্ণ-পাস ফ্যাশনে মূল্যায়ন ডেটা বিশ্লেষণ করেন না। পরিবর্তে, আপনি একটি উদাহরণ-স্তরের ফ্যাশনে মূল্যায়ন ডেটা রূপান্তর করতে প্রশিক্ষণের ডেটা থেকে গণনা করা পরিসংখ্যান ব্যবহার করেন।
রূপান্তরিত প্রশিক্ষণ এবং মূল্যায়ন ডেটা মডেলকে প্রশিক্ষণের জন্য ব্যবহার করার আগে ডেটাফ্লো ব্যবহার করে স্কেলে প্রস্তুত করা হয়। এই ব্যাচের ডেটা-প্রস্তুতি প্রক্রিয়াটি প্রশিক্ষণের দক্ষতা উন্নত করতে সামনের দিকে ডেটা প্রস্তুত করার প্রিপ্রসেসিং চ্যালেঞ্জ মোকাবেলা করে। চিত্র 4 -তে দেখানো হয়েছে, মডেল অভ্যন্তরীণ ইন্টারফেসটি রূপান্তরিত বৈশিষ্ট্যগুলির প্রত্যাশা করে।
রফতানি মডেলটিতে রূপান্তর সংযুক্ত করুন
যেমনটি উল্লেখ করা হয়েছে, tf.Transform
পাইপলাইন দ্বারা উত্পাদিত transform_fn
গ্রাফটি রফতানি টেনসরফ্লো গ্রাফ হিসাবে সংরক্ষণ করা হয়। রফতানি করা গ্রাফটি উদাহরণ-স্তরের ক্রিয়াকলাপ হিসাবে রূপান্তর যুক্তি এবং গ্রাফের ধ্রুবক হিসাবে পূর্ণ-পাস রূপান্তরগুলিতে গণনা করা সমস্ত পরিসংখ্যান নিয়ে গঠিত। যখন প্রশিক্ষিত মডেলটি পরিবেশন করার জন্য রফতানি করা হয়, তখন transform_fn
গ্রাফটি তার serving_fn
ফাংশনের অংশ হিসাবে সেভডমোডেলের সাথে সংযুক্ত থাকে।
এটি পূর্বাভাসের জন্য মডেলটি পরিবেশন করার সময়, মডেল পরিবেশনকারী ইন্টারফেসটি কাঁচা ফর্ম্যাটে ডেটা পয়েন্টগুলি প্রত্যাশা করে (এটি কোনও রূপান্তর করার আগে)। তবে মডেল অভ্যন্তরীণ ইন্টারফেসটি রূপান্তরিত ফর্ম্যাটে ডেটা প্রত্যাশা করে।
transform_fn
গ্রাফ, যা এখন মডেলের অংশ, আগত ডেটা পয়েন্টে সমস্ত প্রিপ্রোসেসিং লজিক প্রয়োগ করে। এটি পূর্বাভাসের সময় উদাহরণ-স্তরের অপারেশনে সঞ্চিত ধ্রুবকগুলি (যেমন μ এবং σ এর মতো সংখ্যার বৈশিষ্ট্যগুলি স্বাভাবিক করতে) ব্যবহার করে। অতএব, transform_fn
গ্রাফ কাঁচা ডেটা পয়েন্টকে রূপান্তরিত ফর্ম্যাটে রূপান্তর করে। চিত্র 4 -এ দেখানো হয়েছে, রূপান্তরিত ফর্ম্যাটটি মডেল অভ্যন্তরীণ ইন্টারফেসের দ্বারা প্রত্যাশিত যা চিত্র 4 -এ দেখানো হয়েছে।
এই প্রক্রিয়াটি প্রশিক্ষণ-সরবরাহকারী স্কিউয়ের প্রিপ্রোসেসিং চ্যালেঞ্জটি সমাধান করে, কারণ প্রশিক্ষণ এবং মূল্যায়ন ডেটা রূপান্তর করতে ব্যবহৃত একই যুক্তি (বাস্তবায়ন) পূর্বাভাস পরিবেশন করার সময় নতুন ডেটা পয়েন্টগুলিকে রূপান্তর করতে প্রয়োগ করা হয়।
প্রিপ্রোসেসিং বিকল্পের সংক্ষিপ্তসার
নিম্নলিখিত টেবিলটি এই নথিটি নিয়ে আলোচনা করা ডেটা প্রিপ্রোসেসিং বিকল্পগুলির সংক্ষিপ্তসার জানায়। টেবিলে, "এন/এ" এর অর্থ "প্রযোজ্য নয়"।
ডেটা প্রিপ্রোসেসিং বিকল্প | উদাহরণ-স্তর (রাষ্ট্রবিহীন রূপান্তর) | প্রশিক্ষণের সময় পূর্ণ-পাস এবং পরিবেশন করার সময় উদাহরণ-স্তরের (রাষ্ট্রীয় রূপান্তর) | প্রশিক্ষণ এবং পরিবেশনার সময় রিয়েল-টাইম (উইন্ডো) সমষ্টি (স্ট্রিমিং ট্রান্সফর্মেশনস) |
---|---|---|---|
বিগকুয়ারি (এসকিউএল) | ব্যাচ স্কোরিং: ঠিক আছে - প্রশিক্ষণ এবং ব্যাচের স্কোরিংয়ের সময় ডেটাগুলিতে একই রূপান্তর বাস্তবায়ন প্রয়োগ করা হয়। অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত নয় -আপনি প্রশিক্ষণের ডেটা প্রক্রিয়া করতে পারেন, তবে এটি প্রশিক্ষণ-সরবরাহকারী স্কিউয়ের ফলস্বরূপ কারণ আপনি বিভিন্ন সরঞ্জাম ব্যবহার করে ডেটা পরিবেশন করার প্রক্রিয়া করেন। | ব্যাচ স্কোরিং: প্রস্তাবিত নয় । অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত নয় । যদিও আপনি উদাহরণস্বরূপ-স্তরের ব্যাচ/অনলাইন ট্রান্সফর্মেশনগুলির জন্য বিগকোয়ারি ব্যবহার করে গণনা করা পরিসংখ্যান ব্যবহার করতে পারেন তবে এটি সহজ নয় কারণ আপনাকে প্রশিক্ষণের সময় জনবহুল হিসাবে একটি পরিসংখ্যান স্টোর বজায় রাখতে হবে এবং ভবিষ্যদ্বাণী চলাকালীন ব্যবহার করতে হবে। | ব্যাচের স্কোরিং: এন/এ- এর মতো অ্যাগ্রিগেটগুলি রিয়েল-টাইম ইভেন্টগুলির ভিত্তিতে গণনা করা হয়। অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত নয় -আপনি প্রশিক্ষণের ডেটা প্রক্রিয়া করতে পারেন, তবে এটি প্রশিক্ষণ-সরবরাহকারী স্কিউয়ের ফলস্বরূপ কারণ আপনি বিভিন্ন সরঞ্জাম ব্যবহার করে ডেটা পরিবেশন করার প্রক্রিয়া করেন। |
ডেটাফ্লো (অ্যাপাচি মরীচি) | ব্যাচ স্কোরিং: ঠিক আছে - প্রশিক্ষণ এবং ব্যাচের স্কোরিংয়ের সময় ডেটাগুলিতে একই রূপান্তর বাস্তবায়ন প্রয়োগ করা হয়। অনলাইন ভবিষ্যদ্বাণী: ঠিক আছে - পরিবেশন সময়ে ডেটা ডেটাফ্লো দ্বারা গ্রাস করার জন্য পাব/সাব থেকে আসে। অন্যথায়, প্রশিক্ষণ-পরিবেশন করা স্কিউ ফলাফল। | ব্যাচ স্কোরিং: প্রস্তাবিত নয় । অনলাইন পূর্বাভাস: প্রস্তাবিত নয় । যদিও আপনি উদাহরণস্বরূপ স্তরের ব্যাচ/অনলাইন ট্রান্সফর্মেশনগুলির জন্য ডেটাফ্লো ব্যবহার করে গণনা করা পরিসংখ্যান ব্যবহার করতে পারেন তবে এটি সহজ নয় কারণ আপনাকে প্রশিক্ষণের সময় জনবহুল হিসাবে একটি পরিসংখ্যান স্টোর বজায় রাখতে হবে এবং ভবিষ্যদ্বাণী চলাকালীন ব্যবহার করতে হবে। | ব্যাচের স্কোরিং: এন/এ- এর মতো অ্যাগ্রিগেটগুলি রিয়েল-টাইম ইভেন্টগুলির ভিত্তিতে গণনা করা হয়। অনলাইন পূর্বাভাস: ঠিক আছে - একই অ্যাপাচি মরীচি রূপান্তর প্রশিক্ষণ (ব্যাচ) এবং পরিবেশন (স্ট্রিম) এর সময় ডেটাগুলিতে প্রয়োগ করা হয়। |
ডেটাফ্লো (অ্যাপাচি বিম + টিএফটি) | ব্যাচ স্কোরিং: ঠিক আছে - প্রশিক্ষণ এবং ব্যাচের স্কোরিংয়ের সময় ডেটাগুলিতে একই রূপান্তর বাস্তবায়ন প্রয়োগ করা হয়। অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত -এটি প্রশিক্ষণ-সরবরাহকারী স্কিউ এড়ায় এবং সামনের দিকে প্রশিক্ষণের ডেটা প্রস্তুত করে। | ব্যাচ স্কোরিং: প্রস্তাবিত । অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত । উভয় ব্যবহার প্রস্তাবিত কারণ ট্রান্সফর্মেশন লজিক এবং প্রশিক্ষণের সময় গণিত পরিসংখ্যানগুলি একটি টেনসরফ্লো গ্রাফ হিসাবে সংরক্ষণ করা হয় যা পরিবেশন করার জন্য রফতানি মডেলের সাথে সংযুক্ত থাকে। | ব্যাচের স্কোরিং: এন/এ- এর মতো অ্যাগ্রিগেটগুলি রিয়েল-টাইম ইভেন্টগুলির ভিত্তিতে গণনা করা হয়। অনলাইন পূর্বাভাস: ঠিক আছে - একই অ্যাপাচি মরীচি রূপান্তর প্রশিক্ষণ (ব্যাচ) এবং পরিবেশন (স্ট্রিম) এর সময় ডেটাগুলিতে প্রয়োগ করা হয়। |
টেনসরফ্লো * | ব্যাচ স্কোরিং: প্রস্তাবিত নয় । অনলাইন ভবিষ্যদ্বাণী: প্রস্তাবিত নয় । উভয় ক্ষেত্রে প্রশিক্ষণের দক্ষতার জন্য, সামনের দিকে প্রশিক্ষণের ডেটা প্রস্তুত করা ভাল। | ব্যাচ স্কোরিং: সম্ভব নয় । অনলাইন ভবিষ্যদ্বাণী: সম্ভব নয় । | ব্যাচের স্কোরিং: এন/এ- এর মতো অ্যাগ্রিগেটগুলি রিয়েল-টাইম ইভেন্টগুলির ভিত্তিতে গণনা করা হয়। অনলাইন ভবিষ্যদ্বাণী: সম্ভব নয় । |
* টেনসরফ্লো সহ, ক্রসিং, এম্বেডিং এবং ওয়ান-হট এনকোডিংয়ের মতো রূপান্তরগুলি feature_columns
কলাম হিসাবে ঘোষণামূলকভাবে সম্পাদন করা উচিত।
এরপর কি
- একটি
tf.Transform
পাইপলাইন প্রয়োগ করতে এবং এটি ডেটাফ্লো ব্যবহার করে চালাতে, এই সিরিজের দ্বিতীয় অংশটি পড়ুন, টেনসরফ্লো ট্রান্সফর্ম ব্যবহার করে এমএল এর জন্য ডেটা প্রিপ্রোসেসিং । - গুগল ক্লাউডে টেনসরফ্লো সহ এমএল -তে কোর্সেরা বিশেষীকরণ নিন।
- এমএল এর বিধিগুলিতে এমএল ইঞ্জিনিয়ারিংয়ের জন্য সেরা অনুশীলনগুলি সম্পর্কে জানুন।
- আরও রেফারেন্স আর্কিটেকচার, ডায়াগ্রাম এবং সেরা অনুশীলনের জন্য, টিএফএক্স ক্লাউড সমাধানগুলি অন্বেষণ করুন।
এই দস্তাবেজটি একটি দ্বি-অংশের সিরিজের প্রথম যা তত্ত্বাবধানে শেখার কার্যগুলিতে ফোকাস সহ ডেটা ইঞ্জিনিয়ারিং এবং ফিচার ইঞ্জিনিয়ারিং ফর মেশিন লার্নিং (এমএল) এর বিষয়টিকে অন্বেষণ করে। এই প্রথম অংশটি গুগল ক্লাউডে এমএল পাইপলাইনে ডেটা প্রিপ্রোসেসিং ডেটাগুলির জন্য সেরা অনুশীলনগুলি নিয়ে আলোচনা করে। ডকুমেন্টটি ডেটা প্রস্তুত করতে, মডেলটিকে প্রশিক্ষণ দিতে এবং ভবিষ্যদ্বাণীটির জন্য মডেলটি পরিবেশন করতে টেনসরফ্লো এবং ওপেন সোর্স টেনসরফ্লো ট্রান্সফর্ম ( tf.Transform
) লাইব্রেরি ব্যবহার করার উপর দৃষ্টি নিবদ্ধ করে। এই দস্তাবেজটি এমএল -এর জন্য প্রাক -প্রসেসিং ডেটাগুলির চ্যালেঞ্জগুলি হাইলাইট করে এবং এটি কার্যকরভাবে গুগল ক্লাউডে ডেটা রূপান্তর সম্পাদনের জন্য বিকল্পগুলি এবং পরিস্থিতিগুলি বর্ণনা করে।
এই দস্তাবেজটি ধরে নিয়েছে যে আপনি বিগকিউরি , ডেটাফ্লো , ভার্টেক্স এআই এবং টেনসরফ্লো কেরাস এপিআইয়ের সাথে পরিচিত।
গুগল ক্লাউডের সাথে এমএল এর জন্য ডেটা প্রিপ্রোসেসিং দ্বিতীয় ডকুমেন্টটি কীভাবে একটি tf.Transform
পাইপলাইন প্রয়োগ করতে পারে তার জন্য একটি ধাপে ধাপে টিউটোরিয়াল সরবরাহ করে।
ভূমিকা
এমএল আপনাকে ডেটাগুলিতে স্বয়ংক্রিয়ভাবে জটিল এবং সম্ভাব্য দরকারী নিদর্শনগুলি খুঁজে পেতে সহায়তা করে। এই নিদর্শনগুলি একটি এমএল মডেলটিতে ঘনীভূত হয় যা তারপরে নতুন ডেটা পয়েন্টগুলিতে ব্যবহার করা যেতে পারে - এমন একটি প্রক্রিয়া যা ভবিষ্যদ্বাণী করা বা সম্পাদন করা অনুমানকে বলা হয়।
এমএল মডেল তৈরি করা একটি মাল্টিস্টেপ প্রক্রিয়া। প্রতিটি পদক্ষেপ তার নিজস্ব প্রযুক্তিগত এবং ধারণাগত চ্যালেঞ্জগুলি উপস্থাপন করে। এই দ্বি-অংশের সিরিজটি তত্ত্বাবধানে শেখার কাজগুলি এবং লক্ষ্য ভেরিয়েবলের শক্তিশালী ভবিষ্যদ্বাণীমূলক সংকেত তৈরি করতে উত্স ডেটা নির্বাচন, রূপান্তর এবং বাড়ানোর প্রক্রিয়াটিকে কেন্দ্র করে। এই ক্রিয়াকলাপগুলি ডেটা সায়েন্স কৌশলগুলির সাথে ডোমেন জ্ঞানকে একত্রিত করে। অপারেশনগুলি বৈশিষ্ট্য ইঞ্জিনিয়ারিংয়ের সারাংশ।
রিয়েল-ওয়ার্ল্ড এমএল মডেলগুলির জন্য প্রশিক্ষণের ডেটাসেটের আকার সহজেই এক টেরাবাইট (টিবি) এর চেয়ে সমান বা তার বেশি হতে পারে। অতএব, এই ডেটাসেটগুলি দক্ষতার সাথে এবং বিতরণ করে প্রক্রিয়া করার জন্য আপনার বড় আকারের ডেটা প্রসেসিং ফ্রেমওয়ার্কগুলির প্রয়োজন। আপনি যখন ভবিষ্যদ্বাণী করার জন্য এমএল মডেল ব্যবহার করেন, তখন আপনাকে নতুন ডেটা পয়েন্টগুলিতে প্রশিক্ষণের ডেটার জন্য ব্যবহার করা একই রূপান্তরগুলি প্রয়োগ করতে হবে। একই রূপান্তরগুলি প্রয়োগ করে, আপনি এমএল মডেলটিতে লাইভ ডেটাসেটটি যেভাবে প্রত্যাশা করেন সেভাবে উপস্থাপন করেন।
এই দস্তাবেজটি বৈশিষ্ট্য ইঞ্জিনিয়ারিং অপারেশনগুলির বিভিন্ন স্তরের গ্রানুলারিটির জন্য এই চ্যালেঞ্জগুলি নিয়ে আলোচনা করে: উদাহরণ-স্তর, পূর্ণ-পাস এবং সময়-উইন্ডো সমষ্টি। এই দস্তাবেজটি গুগল ক্লাউডে এমএল এর জন্য ডেটা ট্রান্সফর্মেশন সম্পাদনের জন্য বিকল্পগুলি এবং পরিস্থিতিগুলিও বর্ণনা করে।
এই দস্তাবেজটি টেনসরফ্লো ট্রান্সফর্ম ( tf.Transform
) এর একটি ওভারভিউও সরবরাহ করে, টেনসরফ্লোর জন্য একটি গ্রন্থাগার যা আপনাকে প্রিপ্রোসেসিং পাইপলাইনগুলির মাধ্যমে উভয় উদাহরণ-স্তর এবং পূর্ণ-পাস ডেটা রূপান্তর সংজ্ঞায়িত করতে দেয়। এই পাইপলাইনগুলি অ্যাপাচি মরীচি দিয়ে কার্যকর করা হয় এবং এগুলি এমন নিদর্শন তৈরি করে যা আপনাকে মডেলটি পরিবেশন করার সময় পূর্বাভাসের সময় একই রূপান্তরগুলি প্রয়োগ করতে দেয়।
এমএল জন্য প্রাক প্রসেসিং ডেটা
এই বিভাগটি ডেটা প্রিপ্রোসেসিং অপারেশন এবং ডেটা প্রস্তুতির পর্যায়ে প্রবর্তন করে। এটি প্রিপ্রোসেসিং অপারেশনগুলির ধরণগুলি এবং তাদের গ্রানুলারিটির বিষয়েও আলোচনা করে।
বৈশিষ্ট্য ইঞ্জিনিয়ারিংয়ের তুলনায় ডেটা ইঞ্জিনিয়ারিং
এমএল এর জন্য ডেটা প্রাক -প্রসেসিংয়ে ডেটা ইঞ্জিনিয়ারিং এবং বৈশিষ্ট্য ইঞ্জিনিয়ারিং উভয়ই জড়িত। ডেটা ইঞ্জিনিয়ারিং হ'ল কাঁচা ডেটা প্রস্তুত ডেটাতে রূপান্তর করার প্রক্রিয়া। বৈশিষ্ট্য ইঞ্জিনিয়ারিং তারপরে এমএল মডেল দ্বারা প্রত্যাশিত বৈশিষ্ট্যগুলি তৈরি করতে প্রস্তুত ডেটা সুর করে। এই পদগুলির নিম্নলিখিত অর্থ রয়েছে:
- কাঁচা ডেটা (বা কেবল ডেটা )
- এমএল এর পূর্বের প্রস্তুতি ছাড়াই এর উত্স ফর্মের ডেটা। এই প্রসঙ্গে, ডেটা তার কাঁচা আকারে (একটি ডেটা লেকে) বা রূপান্তরিত আকারে (ডেটা গুদামে) থাকতে পারে। ডেটা গুদামে থাকা রূপান্তরিত ডেটা বিশ্লেষণের জন্য ব্যবহার করার জন্য এটির মূল কাঁচা ফর্ম থেকে রূপান্তরিত হতে পারে। তবে, এই প্রসঙ্গে, কাঁচা ডেটা মানে ডেটা আপনার এমএল টাস্কের জন্য বিশেষভাবে প্রস্তুত করা হয়নি। স্ট্রিমিং সিস্টেমগুলি থেকে প্রেরণ করা হলে ডেটাও কাঁচা ডেটা হিসাবে বিবেচিত হয় যা শেষ পর্যন্ত ভবিষ্যদ্বাণীগুলির জন্য এমএল মডেলগুলিকে কল করে।
- প্রস্তুত ডেটা
- আপনার এমএল টাস্কের জন্য প্রস্তুত ফর্মের ডেটাসেট: ডেটা উত্সগুলি পার্স করা হয়েছে, যোগদান করা হয়েছে এবং একটি সারণী আকারে রাখা হয়েছে। প্রস্তুত ডেটা একত্রিত করা হয় এবং ডান গ্রানুলারিটিতে সংক্ষিপ্ত করা হয় - উদাহরণস্বরূপ, ডেটাসেটের প্রতিটি সারি একটি অনন্য গ্রাহকের প্রতিনিধিত্ব করে এবং প্রতিটি কলাম গ্রাহকের জন্য সংক্ষিপ্ত তথ্য উপস্থাপন করে, যেমন গত ছয় সপ্তাহের মধ্যে মোট ব্যয় করা হয়। একটি প্রস্তুত ডেটা টেবিলে, অপ্রাসঙ্গিক কলামগুলি ফেলে দেওয়া হয়েছে এবং অবৈধ রেকর্ডগুলি ফিল্টার করা হয়েছে। তত্ত্বাবধানে শেখার কাজের জন্য, লক্ষ্য বৈশিষ্ট্যটি উপস্থিত রয়েছে।
- ইঞ্জিনিয়ারড বৈশিষ্ট্য
- মডেল দ্বারা প্রত্যাশিত সুরযুক্ত বৈশিষ্ট্যগুলির সাথে ডেটাসেট-এটি হ'ল বৈশিষ্ট্যগুলি যা প্রস্তুত ডেটাসেটে কলামগুলিতে নির্দিষ্ট এমএল-নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করে তৈরি করা হয় এবং প্রশিক্ষণ এবং পূর্বাভাসের সময় আপনার মডেলের জন্য নতুন বৈশিষ্ট্য তৈরি করে তৈরি করা হয়, পরে বর্ণিত হিসাবে প্রিপ্রোসেসিং অপারেশনগুলিতে । এই ক্রিয়াকলাপগুলির উদাহরণগুলির মধ্যে 0 এবং 1 এর মধ্যে একটি মান, ক্লিপিং মান এবং এক-হট-এনকোডিং শ্রেণিবদ্ধ বৈশিষ্ট্যগুলির মধ্যে সংখ্যার কলামগুলি স্কেলিং করা অন্তর্ভুক্ত।
নিম্নলিখিত চিত্র, চিত্র 1, প্রাক -প্রসেসড ডেটা প্রস্তুত করার সাথে জড়িত পদক্ষেপগুলি দেখায়:
অনুশীলনে, একই উত্স থেকে প্রাপ্ত ডেটা প্রায়শই প্রস্তুতির বিভিন্ন পর্যায়ে থাকে। উদাহরণস্বরূপ, আপনার ডেটা গুদামের একটি টেবিল থেকে একটি ক্ষেত্র সরাসরি ইঞ্জিনিয়ারড বৈশিষ্ট্য হিসাবে ব্যবহৃত হতে পারে। একই সময়ে, একই টেবিলের অন্য একটি ক্ষেত্রটি ইঞ্জিনিয়ারড বৈশিষ্ট্য হওয়ার আগে রূপান্তরগুলির মধ্য দিয়ে যেতে হবে। একইভাবে, ডেটা ইঞ্জিনিয়ারিং এবং বৈশিষ্ট্য ইঞ্জিনিয়ারিং অপারেশনগুলি একই ডেটা প্রিপ্রোসেসিং পদক্ষেপে একত্রিত হতে পারে।
প্রাক প্রসেসিং অপারেশন
ডেটা প্রিপ্রোসেসিংয়ে বেশ কয়েকটি অপারেশন অন্তর্ভুক্ত রয়েছে। প্রতিটি অপারেশন এমএলকে আরও ভাল ভবিষ্যদ্বাণীমূলক মডেল তৈরিতে সহায়তা করার জন্য ডিজাইন করা হয়েছে। এই প্রিপ্রোসেসিং অপারেশনগুলির বিশদগুলি এই দস্তাবেজের আওতার বাইরে, তবে কিছু অপারেশনগুলি এই বিভাগে সংক্ষেপে বর্ণিত হয়েছে।
কাঠামোগত ডেটার জন্য, ডেটা প্রিপ্রোসেসিং অপারেশনগুলিতে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- ডেটা ক্লিনজিং: কাঁচা ডেটা থেকে দূষিত বা অবৈধ মান রয়েছে এমন রেকর্ডগুলি অপসারণ বা সংশোধন করা এবং প্রচুর সংখ্যক কলাম অনুপস্থিত রেকর্ডগুলি অপসারণ করা।
- উদাহরণ নির্বাচন এবং বিভাজন: প্রশিক্ষণ, মূল্যায়ন (বৈধতা) এবং পরীক্ষার সেট তৈরি করতে ইনপুট ডেটাসেট থেকে ডেটা পয়েন্ট নির্বাচন করা। এই প্রক্রিয়াটিতে পুনরাবৃত্তিযোগ্য এলোমেলো নমুনা, সংখ্যালঘু ক্লাস ওভারস্যাম্পলিং এবং স্তরিত পার্টিশনিংয়ের কৌশল অন্তর্ভুক্ত রয়েছে।
- বৈশিষ্ট্য টিউনিং: এমএল -এর জন্য কোনও বৈশিষ্ট্যের গুণমানের উন্নতি করা, যার মধ্যে সংখ্যার মানগুলি স্কেলিং করা এবং স্বাভাবিক করা, অনুপস্থিত মানগুলি প্ররোচিত করা, ক্লিপিং আউটলিয়ার্স এবং বিতরণগুলি স্কিউযুক্ত মানগুলি সামঞ্জস্য করা অন্তর্ভুক্ত রয়েছে।
- বৈশিষ্ট্য রূপান্তর: একটি সংখ্যাসূচক বৈশিষ্ট্যকে একটি শ্রেণিবদ্ধ বৈশিষ্ট্য ( বালতিকরণের মাধ্যমে) রূপান্তর করা এবং শ্রেণিবদ্ধ বৈশিষ্ট্যগুলিকে একটি সংখ্যাসূচক উপস্থাপনায় রূপান্তর করা (এক-হট এনকোডিংয়ের মাধ্যমে, গণনা সহ শেখা , স্পারস বৈশিষ্ট্য এম্বেডিংস ইত্যাদি)। কিছু মডেল কেবল সংখ্যাসূচক বা শ্রেণিবদ্ধ বৈশিষ্ট্যগুলির সাথে কাজ করে, অন্যরা মিশ্র ধরণের বৈশিষ্ট্যগুলি পরিচালনা করতে পারে। এমনকি মডেলগুলি উভয় প্রকারকেই পরিচালনা করার পরেও তারা একই বৈশিষ্ট্যের বিভিন্ন উপস্থাপনা (সংখ্যা এবং শ্রেণিবদ্ধ) থেকে উপকৃত হতে পারে।
- বৈশিষ্ট্য নিষ্কাশন: পিসিএ , এম্বেডিং এক্সট্রাকশন এবং হ্যাশিংয়ের মতো কৌশলগুলি ব্যবহার করে নিম্ন-মাত্রা, আরও শক্তিশালী ডেটা উপস্থাপনা তৈরি করে বৈশিষ্ট্যগুলির সংখ্যা হ্রাস করা।
- বৈশিষ্ট্য নির্বাচন: মডেল প্রশিক্ষণের জন্য ইনপুট বৈশিষ্ট্যগুলির একটি উপসেট নির্বাচন করা এবং ফিল্টার বা র্যাপার পদ্ধতিগুলি ব্যবহার করে অপ্রাসঙ্গিক বা অপ্রয়োজনীয় বিষয়গুলি উপেক্ষা করা। বৈশিষ্ট্যগুলি বৈশিষ্ট্যগুলি প্রচুর পরিমাণে মান অনুপস্থিত থাকলে কেবল বৈশিষ্ট্যগুলি বাদ দেওয়াও জড়িত থাকতে পারে।
- বৈশিষ্ট্য নির্মাণ: বহুবর্ষীয় সম্প্রসারণ (অবিচ্ছিন্ন গাণিতিক ফাংশন ব্যবহার করে) বা বৈশিষ্ট্য ক্রসিং (বৈশিষ্ট্য ইন্টারঅ্যাকশনগুলি ক্যাপচার করতে) এর মতো সাধারণ কৌশলগুলি ব্যবহার করে নতুন বৈশিষ্ট্য তৈরি করা। এমএল ব্যবহারের ক্ষেত্রে ডোমেন থেকে ব্যবসায়িক যুক্তি ব্যবহার করে বৈশিষ্ট্যগুলিও তৈরি করা যেতে পারে।
আপনি যখন কাঠামোগত ডেটা (উদাহরণস্বরূপ, চিত্র, অডিও বা পাঠ্য নথি) নিয়ে কাজ করেন, তখন ডিপ লার্নিং ডোমেন-জ্ঞান-ভিত্তিক বৈশিষ্ট্য ইঞ্জিনিয়ারিংকে মডেল আর্কিটেকচারে ভাঁজ করে প্রতিস্থাপন করে। একটি কনভোলিউশনাল স্তর একটি স্বয়ংক্রিয় বৈশিষ্ট্য প্রিপ্রোসেসর। সঠিক মডেল আর্কিটেকচার নির্মাণের জন্য ডেটা সম্পর্কে কিছু অভিজ্ঞতামূলক জ্ঞান প্রয়োজন। এছাড়াও, নিম্নলিখিতগুলির মতো কিছু পরিমাণ প্রিপ্রোসেসিং প্রয়োজন:
- পাঠ্য নথির জন্য: স্টেমিং এবং লেমমেটিজেশন , টিএফ-আইডিএফ গণনা এবং এন-গ্রাম এক্সট্রাকশন, এম্বেডিং লুকআপ।
- চিত্রগুলির জন্য: ক্লিপিং, রেসাইজিং, ক্রপিং, গাউসিয়ান অস্পষ্টতা এবং ক্যানারি ফিল্টার।
- সমস্ত ধরণের ডেটার জন্য (পাঠ্য এবং চিত্র সহ): ট্রান্সফার লার্নিং , যা সম্পূর্ণরূপে প্রশিক্ষিত মডেলের সমস্ত-তবে-শেষ স্তরগুলি বৈশিষ্ট্য ইঞ্জিনিয়ারিং পদক্ষেপ হিসাবে বিবেচনা করে।
প্রাকপ্রসেসিং গ্রানুলারিটি
এই বিভাগটি ডেটা রূপান্তরগুলির ধরণের গ্রানুলারিটি নিয়ে আলোচনা করে। প্রশিক্ষণ ডেটাতে প্রয়োগ করা রূপান্তরগুলি ব্যবহার করে ভবিষ্যদ্বাণীগুলির জন্য নতুন ডেটা পয়েন্ট প্রস্তুত করার সময় কেন এই দৃষ্টিভঙ্গি সমালোচনা করে তা দেখায়।
অপারেশন গ্রানুলারিটির উপর ভিত্তি করে প্রিপ্রোসেসিং এবং রূপান্তর ক্রিয়াকলাপগুলি নিম্নলিখিত হিসাবে শ্রেণিবদ্ধ করা যেতে পারে:
প্রশিক্ষণ এবং পূর্বাভাসের সময় উদাহরণ-স্তরের রূপান্তর । এগুলি সোজা রূপান্তর, যেখানে কেবল একই উদাহরণ থেকে মানগুলি পরিবর্তনের জন্য প্রয়োজন। উদাহরণস্বরূপ, উদাহরণ-স্তরের রূপান্তরগুলিতে কোনও বৈশিষ্ট্যের মানকে কিছু থ্রেশহোল্ডে ক্লিপিং করা, বহুবর্ষীয়ভাবে অন্য বৈশিষ্ট্যটি প্রসারিত করা, দুটি বৈশিষ্ট্যকে গুণিত করা বা বুলিয়ান পতাকা তৈরির জন্য দুটি বৈশিষ্ট্য তুলনা করা অন্তর্ভুক্ত থাকতে পারে।
এই রূপান্তরগুলি অবশ্যই প্রশিক্ষণ এবং পূর্বাভাসের সময় একইভাবে প্রয়োগ করতে হবে, কারণ মডেলটি কাঁচা ইনপুট মানগুলিতে নয়, রূপান্তরিত বৈশিষ্ট্যগুলিতে প্রশিক্ষণ দেওয়া হবে। যদি ডেটা অভিন্নভাবে রূপান্তরিত না হয়, তবে মডেলটি খারাপ আচরণ করে কারণ এটি এমন ডেটা সহ উপস্থাপন করা হয় যার মানগুলির বিতরণ রয়েছে যা এটি প্রশিক্ষিত হয়নি। আরও তথ্যের জন্য, প্রিপ্রোসেসিং চ্যালেঞ্জ বিভাগে প্রশিক্ষণ-সরবরাহকারী স্কিউয়ের আলোচনা দেখুন।
প্রশিক্ষণের সময় পূর্ণ-পাস রূপান্তর, তবে পূর্বাভাসের সময় উদাহরণ-স্তরের রূপান্তর। এই দৃশ্যে, রূপান্তরগুলি রাষ্ট্রীয়, কারণ তারা রূপান্তরটি সম্পাদন করতে কিছু পূর্বনির্ধারিত পরিসংখ্যান ব্যবহার করে। প্রশিক্ষণের সময়, আপনি প্রশিক্ষণের ডেটা, মূল্যায়ন ডেটা এবং পূর্বাভাসের সময়ে নতুন ডেটা রূপান্তর করার জন্য ন্যূনতম, সর্বাধিক, গড় এবং বৈকল্পিক হিসাবে পরিমাণ গণনা করতে প্রশিক্ষণের ডেটাগুলির পুরো বডিটি বিশ্লেষণ করেন।
উদাহরণস্বরূপ, প্রশিক্ষণের জন্য একটি সংখ্যাসূচক বৈশিষ্ট্যকে স্বাভাবিক করার জন্য, আপনি পুরো প্রশিক্ষণ ডেটা জুড়ে এর গড় (μ) এবং এর স্ট্যান্ডার্ড বিচ্যুতি (σ) গণনা করেন। এই গণনাটিকে একটি পূর্ণ-পাস (বা বিশ্লেষণ ) অপারেশন বলা হয়। আপনি যখন পূর্বাভাসের জন্য মডেলটি পরিবেশন করেন, প্রশিক্ষণ-সরবরাহকারী স্কিউ এড়াতে একটি নতুন ডেটা পয়েন্টের মান স্বাভাবিক করা হয়। সুতরাং, প্রশিক্ষণের সময় গণনা করা হয় μ এবং σ মানগুলি বৈশিষ্ট্য মানটি সামঞ্জস্য করতে ব্যবহৃত হয়, যা নিম্নলিখিত সাধারণ উদাহরণ-স্তরের অপারেশন:
$$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$পূর্ণ-পাস রূপান্তরগুলি নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:
- মিনম্যাক্স স্কেলিং সংখ্যাসূচক বৈশিষ্ট্যগুলি ন্যূনতম এবং প্রশিক্ষণ ডেটাসেট থেকে সর্বাধিক গণনা করা ব্যবহার করে।
- স্ট্যান্ডার্ড স্কেলিং (জেড-স্কোর নরমালাইজেশন) প্রশিক্ষণ ডেটাসেটে গণনা করা μ এবং σ ব্যবহার করে সংখ্যাসূচক বৈশিষ্ট্য।
- কোয়ান্টাইল ব্যবহার করে সংখ্যাসূচক বৈশিষ্ট্যগুলি বালিটাইজ করা।
- মিডিয়ান (সংখ্যাসূচক বৈশিষ্ট্য) বা মোড (শ্রেণিবদ্ধ বৈশিষ্ট্য) ব্যবহার করে অনুপস্থিত মানগুলি বোঝানো।
- একটি ইনপুট শ্রেণিবদ্ধ বৈশিষ্ট্যের সমস্ত স্বতন্ত্র মান (শব্দভাণ্ডার) উত্তোলন করে স্ট্রিংগুলি (নামমাত্র মান) রূপান্তর (সূচক) এ রূপান্তর করা।
- টিএফ-আইডিএফের জন্য গণনা করার জন্য সমস্ত নথিতে (বৈশিষ্ট্য) একটি শব্দ (বৈশিষ্ট্য মান) এর উপস্থিতি গণনা করা।
- ইনপুট বৈশিষ্ট্যগুলির পিসিএ গণনা করা ডেটাটিকে নিম্ন মাত্রিক স্থানে (রৈখিক নির্ভর বৈশিষ্ট্য সহ) প্রজেক্ট করতে।
Μ, σ, মিনিট এবং ম্যাক্সের মতো পরিসংখ্যান গণনা করতে আপনার কেবল প্রশিক্ষণের ডেটা ব্যবহার করা উচিত। আপনি যদি এই ক্রিয়াকলাপগুলির জন্য পরীক্ষা এবং মূল্যায়ন ডেটা যুক্ত করেন তবে আপনি মডেলটি প্রশিক্ষণের জন্য মূল্যায়ন এবং পরীক্ষার ডেটা থেকে তথ্য ফাঁস করছেন । এটি করা পরীক্ষা এবং মূল্যায়ন ফলাফলের নির্ভরযোগ্যতা প্রভাবিত করে। আপনি সমস্ত ডেটাসেটে ধারাবাহিক রূপান্তর প্রয়োগ করেছেন তা নিশ্চিত করার জন্য, আপনি পরীক্ষা এবং মূল্যায়ন ডেটা রূপান্তর করতে প্রশিক্ষণ ডেটা থেকে গণনা করা একই পরিসংখ্যান ব্যবহার করেন।
প্রশিক্ষণ এবং পূর্বাভাসের সময় historical তিহাসিক সমষ্টি । এর মধ্যে পূর্বাভাস টাস্কের ইনপুট সংকেত হিসাবে ব্যবসায়িক সমষ্টি, ডেরাইভেশন এবং পতাকা তৈরি করা জড়িত - উদাহরণস্বরূপ, গ্রাহকদের প্রপেনসিটি মডেলগুলি তৈরির জন্য রিসেন্সি, ফ্রিকোয়েন্সি এবং আর্থিক (আরএফএম) মেট্রিক তৈরি করা। এই ধরণের বৈশিষ্ট্যগুলি মডেল প্রশিক্ষণ, ব্যাচ স্কোরিং এবং অনলাইন পূর্বাভাস পরিবেশন করার সময় ব্যবহার করার জন্য কোনও বৈশিষ্ট্য স্টোরে প্রাকপম্পিউটেড এবং সংরক্ষণ করা যেতে পারে। প্রশিক্ষণ এবং ভবিষ্যদ্বাণী করার আগে আপনি এই সমষ্টিগুলিতে অতিরিক্ত বৈশিষ্ট্য ইঞ্জিনিয়ারিং (উদাহরণস্বরূপ, রূপান্তর এবং টিউনিং) সম্পাদন করতে পারেন।
প্রশিক্ষণের সময় historical তিহাসিক সমষ্টি, তবে পূর্বাভাসের সময় রিয়েল-টাইম সমষ্টি। এই পদ্ধতির মধ্যে সময়ের সাথে সাথে রিয়েল-টাইম মানগুলির সংক্ষিপ্তসার করে একটি বৈশিষ্ট্য তৈরি করা জড়িত। এই পদ্ধতির মধ্যে, একত্রিত হওয়ার উদাহরণগুলি টেম্পোরাল উইন্ডো ধারাগুলির মাধ্যমে সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ, আপনি যদি এমন কোনও মডেলকে প্রশিক্ষণ দিতে চান তবে আপনি এই পদ্ধতির ব্যবহার করতে পারেন যা গত 10 মিনিটের মধ্যে, শেষ 30 মিনিটে এবং অন্যটিতে গত 5 মিনিটে রুটের জন্য ট্র্যাফিক মেট্রিকের উপর ভিত্তি করে ট্যাক্সি ভ্রমণের সময়টি অনুমান করে বিরতি আপনি গত 3 মিনিটের মধ্যে গণনা করা তাপমাত্রা এবং কম্পনের মানগুলির চলমান গড়ের উপর ভিত্তি করে ইঞ্জিন অংশের ব্যর্থতার পূর্বাভাস দিতে এই পদ্ধতিরও ব্যবহার করতে পারেন। যদিও এই সমষ্টিগুলি প্রশিক্ষণের জন্য অফলাইনে প্রস্তুত করা যেতে পারে তবে এগুলি পরিবেশন করার সময় ডেটা স্ট্রিম থেকে রিয়েল টাইমে গণনা করা হয়।
আরও স্পষ্টভাবে, আপনি যখন প্রশিক্ষণ ডেটা প্রস্তুত করেন, যদি একত্রিত মানটি কাঁচা ডেটাতে না থাকে তবে ডেটা ইঞ্জিনিয়ারিং পর্বের সময় মানটি তৈরি করা হয়। কাঁচা ডেটা সাধারণত
(entity, timestamp, value)
এর ফর্ম্যাট সহ একটি ডাটাবেসে সংরক্ষণ করা হয়। পূর্ববর্তী উদাহরণগুলিতে,entity
হ'ল ট্যাক্সি রুটের জন্য রুট বিভাগের সনাক্তকারী এবং ইঞ্জিন ব্যর্থতার জন্য ইঞ্জিন অংশ সনাক্তকারী। আপনি গণনা করতে উইন্ডোয়িং অপারেশনগুলি ব্যবহার করতে পারেন(entity, time_index, aggregated_value_over_time_window)
এবং আপনার মডেল প্রশিক্ষণের জন্য ইনপুট হিসাবে সমষ্টি বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।যখন রিয়েল-টাইম (অনলাইন) পূর্বাভাসের মডেলটি পরিবেশন করা হয়, তখন মডেলটি ইনপুট হিসাবে একত্রিত মানগুলি থেকে প্রাপ্ত বৈশিষ্ট্যগুলি প্রত্যাশা করে। অতএব, আপনি আপনার সিস্টেমে প্রবাহিত রিয়েল-টাইম ডেটা পয়েন্টগুলি থেকে সমষ্টিগুলি গণনা করতে অ্যাপাচি বিমের মতো একটি স্ট্রিম-প্রসেসিং প্রযুক্তি ব্যবহার করতে পারেন। স্ট্রিম-প্রসেসিং প্রযুক্তি নতুন ডেটা পয়েন্টগুলি আসার সাথে সাথে উইন্ডোজের উপর ভিত্তি করে রিয়েল-টাইম ডেটা সমষ্টি করে। প্রশিক্ষণ এবং ভবিষ্যদ্বাণী করার আগে আপনি এই সমষ্টিগুলিতে অতিরিক্ত বৈশিষ্ট্য ইঞ্জিনিয়ারিং (উদাহরণস্বরূপ, রূপান্তর এবং টিউনিং) সম্পাদন করতে পারেন।
গুগল ক্লাউডে এমএল পাইপলাইন
এই বিভাগটি পরিচালিত পরিষেবাদি ব্যবহার করে গুগল ক্লাউডে টেনসরফ্লো এমএল মডেলগুলি প্রশিক্ষণ এবং পরিবেশন করতে একটি সাধারণ শেষ থেকে শেষ পাইপলাইনের মূল উপাদানগুলি নিয়ে আলোচনা করে। আপনি এই জাতীয় রূপান্তরগুলি বাস্তবায়ন করার সময় আপনি যে ডেটা প্রিপ্রোসেসিং অপারেশনগুলির বিভিন্ন বিভাগ প্রয়োগ করতে পারেন এবং সাধারণ চ্যালেঞ্জগুলির মুখোমুখি হতে পারেন তা নিয়েও এটি আলোচনা করে। টিএফ.ট্রান্সফর্ম ওয়ার্কস বিভাগটি কীভাবে টেনসরফ্লো ট্রান্সফর্ম লাইব্রেরি এই চ্যালেঞ্জগুলি মোকাবেলায় সহায়তা করে তা দেখায়।
উচ্চ-স্তরের স্থাপত্য
নিম্নলিখিত চিত্র, চিত্র 2, টেনসরফ্লো মডেলগুলি প্রশিক্ষণ এবং পরিবেশন করার জন্য একটি সাধারণ এমএল পাইপলাইনের একটি উচ্চ-স্তরের আর্কিটেকচার দেখায়। ডায়াগ্রামে এ, বি এবং সি লেবেলগুলি পাইপলাইনের বিভিন্ন স্থানগুলিকে উল্লেখ করে যেখানে ডেটা প্রিপ্রোসেসিং হতে পারে। এই পদক্ষেপগুলি সম্পর্কে বিশদগুলি নিম্নলিখিত বিভাগে সরবরাহ করা হয়েছে।
পাইপলাইনটি নিম্নলিখিত পদক্ষেপগুলি নিয়ে গঠিত:
- কাঁচা ডেটা আমদানি করার পরে, ট্যাবুলার ডেটা বিগকোয়ারিতে সংরক্ষণ করা হয় এবং অন্যান্য ডেটা যেমন চিত্র, অডিও এবং ভিডিও ক্লাউড স্টোরেজে সংরক্ষণ করা হয়। এই সিরিজের দ্বিতীয় অংশটি উদাহরণ হিসাবে বিগকোয়ারিতে সঞ্চিত সারণী ডেটা ব্যবহার করে।
- ডেটা ইঞ্জিনিয়ারিং (প্রস্তুতি) এবং বৈশিষ্ট্য ইঞ্জিনিয়ারিং ডেটাফ্লো ব্যবহার করে স্কেল এ কার্যকর করা হয়। এই সম্পাদন এমএল-রেডি প্রশিক্ষণ, মূল্যায়ন এবং ক্লাউড স্টোরেজে সঞ্চিত পরীক্ষার সেটগুলি উত্পাদন করে। আদর্শভাবে, এই ডেটাসেটগুলি টিফ্রেকর্ড ফাইল হিসাবে সংরক্ষণ করা হয়, যা টেনসরফ্লো গণনার জন্য অনুকূলিত ফর্ম্যাট।
- একটি টেনসরফ্লো মডেল ট্রেনার প্যাকেজটি ভার্টেক্স এআই প্রশিক্ষণে জমা দেওয়া হয়, যা মডেলটিকে প্রশিক্ষণের জন্য পূর্ববর্তী পদক্ষেপগুলি থেকে প্রিপ্রোসেসড ডেটা ব্যবহার করে। এই পদক্ষেপের আউটপুট হ'ল একটি প্রশিক্ষিত টেনসরফ্লো সেভডমোডেল যা ক্লাউড স্টোরেজে রফতানি করা হয়।
- প্রশিক্ষিত টেনসরফ্লো মডেলটি এমন একটি পরিষেবা হিসাবে ভার্টেক্স এআই পূর্বাভাসে মোতায়েন করা হয়েছে যাতে এটি একটি আরইএসটি এপিআই রয়েছে যাতে এটি অনলাইন পূর্বাভাসের জন্য ব্যবহার করা যায়। একই মডেলটি ব্যাচের পূর্বাভাস কাজের জন্যও ব্যবহার করা যেতে পারে।
- মডেলটি আরইএসটি এপিআই হিসাবে মোতায়েন করার পরে, ক্লায়েন্ট অ্যাপ্লিকেশন এবং অভ্যন্তরীণ সিস্টেমগুলি কিছু ডেটা পয়েন্ট সহ অনুরোধগুলি প্রেরণ করে এবং ভবিষ্যদ্বাণীগুলির সাথে মডেল থেকে প্রতিক্রিয়া গ্রহণ করে এপিআইকে অনুরোধ করতে পারে।
- এই পাইপলাইনটি অর্কেস্ট্রেটিং এবং স্বয়ংক্রিয় করার জন্য, আপনি ডেটা প্রস্তুতি, মডেল প্রশিক্ষণ এবং মডেল স্থাপনার পদক্ষেপগুলি অনুরোধ করতে শিডিয়ুলার হিসাবে ভার্টেক্স এআই পাইপলাইনগুলি ব্যবহার করতে পারেন।
ভবিষ্যদ্বাণী করতে ইনপুট বৈশিষ্ট্যগুলি সঞ্চয় করতে আপনি ভার্টেক্স এআই বৈশিষ্ট্য স্টোরও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি পর্যায়ক্রমে সর্বশেষতম কাঁচা ডেটা থেকে ইঞ্জিনিয়ারড বৈশিষ্ট্যগুলি তৈরি করতে পারেন এবং এগুলি ভার্টেক্স এআই বৈশিষ্ট্য স্টোরে সঞ্চয় করতে পারেন। ক্লায়েন্ট অ্যাপ্লিকেশনগুলি ভার্টেক্স এআই বৈশিষ্ট্য স্টোর থেকে প্রয়োজনীয় ইনপুট বৈশিষ্ট্যগুলি আনুন এবং ভবিষ্যদ্বাণীগুলি পেতে তাদের মডেলটিতে প্রেরণ করুন।
যেখানে প্রিপ্রোসেসিং করবেন
চিত্র 2 -এ, এ, বি এবং সি লেবেলগুলি দেখায় যে ডেটা প্রিপ্রোসেসিং অপারেশনগুলি বিগকোয়ারি, ডেটাফ্লো বা টেনসরফ্লোতে স্থান নিতে পারে। নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে এই বিকল্পগুলির প্রতিটি কীভাবে কাজ করে।
বিকল্প এ: বিগকুয়ারি
সাধারণত, লজিক নিম্নলিখিত ক্রিয়াকলাপগুলির জন্য বিগকোয়ারিতে প্রয়োগ করা হয়:
- নমুনা: এলোমেলোভাবে ডেটা থেকে একটি সাবসেট নির্বাচন করা।
- ফিল্টারিং: অপ্রাসঙ্গিক বা অবৈধ উদাহরণগুলি অপসারণ করা।
- বিভাজন: প্রশিক্ষণ, মূল্যায়ন এবং পরীক্ষার সেট উত্পাদন করতে ডেটা বিভক্ত করা।
বিগকুয়ারি এসকিউএল স্ক্রিপ্টগুলি ডেটাফ্লো প্রিপ্রোসেসিং পাইপলাইনের জন্য উত্স ক্যোয়ারী হিসাবে ব্যবহার করা যেতে পারে, যা চিত্র 2 এর ডেটা প্রসেসিং পদক্ষেপ। কেবলমাত্র কানাডা-প্রশিক্ষণ ডেটা বিগকোয়ারিতে সেরা করা হয়। বিগকোয়ারিতে বৈশিষ্ট্য ইঞ্জিনিয়ারিং সহজ এবং স্কেলযোগ্য, এবং উদাহরণ-স্তর এবং historical তিহাসিক সমষ্টিগুলি বৈশিষ্ট্যযুক্ত রূপান্তরগুলি বাস্তবায়নে সমর্থন করে।
তবে, আমরা আপনাকে সুপারিশ করি যে আপনি যদি ব্যাচের ভবিষ্যদ্বাণী (স্কোরিং) এর জন্য আপনার মডেলটি ব্যবহার করেন বা বৈশিষ্ট্যগুলি বিগকোয়ারিতে পূর্বনির্ধারিত করা হয় তবে অনলাইন পূর্বাভাসের সময় ব্যবহার করার জন্য ভার্টেক্স এআই ফিচার স্টোরে সঞ্চিত থাকলে আপনি কেবল বৈশিষ্ট্য ইঞ্জিনিয়ারিংয়ের জন্য বিগকুইরি ব্যবহার করেন। আপনি যদি অনলাইন ভবিষ্যদ্বাণীগুলির জন্য মডেলটি মোতায়েন করার পরিকল্পনা করেন এবং যদি আপনার কোনও অনলাইন বৈশিষ্ট্য স্টোরে ইঞ্জিনিয়ারড বৈশিষ্ট্য না থাকে তবে অন্যান্য সিস্টেমগুলি উত্পন্ন কাঁচা ডেটা পয়েন্টগুলিকে রূপান্তর করতে আপনাকে এসকিউএল প্রিপ্রোসেসিং অপারেশনগুলির প্রতিলিপি তৈরি করতে হবে। অন্য কথায়, আপনাকে দ্বিগুণ যুক্তি প্রয়োগ করতে হবে: বিগকোয়ারিতে প্রিপ্রসেস প্রশিক্ষণ ডেটা থেকে এসকিউএল -এ একবার এবং অ্যাপ্লিকেশনটির যুক্তিতে দ্বিতীয়বারের মতো ভবিষ্যদ্বাণীটির জন্য অনলাইন ডেটা পয়েন্টগুলি প্রিপ্রোসেস করতে মডেলটি গ্রাস করে।
উদাহরণস্বরূপ, যদি আপনার ক্লায়েন্ট অ্যাপ্লিকেশনটি জাভাতে লেখা থাকে তবে আপনাকে জাভাতে যুক্তিটি পুনর্নির্মাণ করতে হবে। এই নথিতে পরবর্তীকালে প্রিপ্রোসেসিং চ্যালেঞ্জগুলির প্রশিক্ষণ-সরবরাহকারী স্কিউ বিভাগে বর্ণিত হিসাবে এটি বাস্তবায়নের তাত্পর্যগুলির কারণে ত্রুটিগুলি প্রবর্তন করতে পারে। এটি দুটি পৃথক বাস্তবায়ন বজায় রাখতে অতিরিক্ত ওভারহেডও। আপনি যখনই এসকিউএল -এর যুক্তিটি প্রশিক্ষণের ডেটা প্রিপ্রোসেসে পরিবর্তন করেন, আপনাকে পরিবেশন সময়ে প্রিপ্রোসেস ডেটা অনুযায়ী জাভা বাস্তবায়ন পরিবর্তন করতে হবে।
আপনি যদি কেবল ব্যাচের পূর্বাভাসের জন্য আপনার মডেলটি ব্যবহার করছেন (উদাহরণস্বরূপ, ভার্টেক্স এআই ব্যাচের পূর্বাভাস ব্যবহার করে) এবং যদি স্কোরিংয়ের জন্য আপনার ডেটা বিগকোয়ারি থেকে উত্সাহিত করা হয় তবে আপনি বিগকোয়ারি এসকিউএল স্ক্রিপ্টের অংশ হিসাবে এই প্রিপ্রোসেসিং অপারেশনগুলি প্রয়োগ করতে পারেন। সেক্ষেত্রে আপনি প্রশিক্ষণ এবং স্কোরিং ডেটা উভয়ই প্রস্তুত করতে একই প্রিপ্রোসেসিং এসকিউএল স্ক্রিপ্টটি ব্যবহার করতে পারেন।
পূর্ণ-পাস রাষ্ট্রীয় রূপান্তরগুলি বিগকোয়ারিতে বাস্তবায়নের জন্য উপযুক্ত নয়। আপনি যদি পূর্ণ-পাস ট্রান্সফর্মেশনগুলির জন্য বিগকিউরি ব্যবহার করেন তবে আপনার সংখ্যার বৈশিষ্ট্যগুলি স্কেল করার জন্য রাষ্ট্রীয় রূপান্তরগুলির দ্বারা প্রয়োজনীয় পরিমাণগুলি যেমন সঞ্চয় করতে সহায়ক টেবিলগুলি প্রয়োজন। আরও, বিগকোয়ারিতে এসকিউএল ব্যবহার করে পূর্ণ-পাস ট্রান্সফর্মেশনগুলির বাস্তবায়ন এসকিউএল স্ক্রিপ্টগুলিতে বর্ধিত জটিলতা তৈরি করে এবং প্রশিক্ষণ এবং স্কোরিং এসকিউএল স্ক্রিপ্টগুলির মধ্যে জটিল নির্ভরতা তৈরি করে।
বিকল্প বি: ডেটাফ্লো
চিত্র 2 -তে দেখানো হয়েছে, আপনি অ্যাপাচি বিমের গণনামূলক ব্যয়বহুল প্রাকপ্রসেসিং অপারেশনগুলি প্রয়োগ করতে পারেন এবং ডেটাফ্লো ব্যবহার করে এগুলি স্কেল চালাতে পারেন। ডেটাফ্লো ব্যাচ এবং স্ট্রিম ডেটা প্রসেসিংয়ের জন্য একটি সম্পূর্ণ পরিচালিত অটোস্কেলিং পরিষেবা। আপনি যখন ডেটাফ্লো ব্যবহার করেন, আপনি বিগকোয়ারির বিপরীতে ডেটা প্রসেসিংয়ের জন্য বাহ্যিক বিশেষায়িত গ্রন্থাগারগুলিও ব্যবহার করতে পারেন।
ডেটাফ্লো উদাহরণ-স্তরের রূপান্তরগুলি এবং historical তিহাসিক এবং রিয়েল-টাইম সমষ্টি বৈশিষ্ট্য রূপান্তর করতে পারে। বিশেষত, যদি আপনার এমএল মডেলগুলি total_number_of_clicks_last_90sec
মতো একটি ইনপুট বৈশিষ্ট্য আশা করে, অ্যাপাচি বিম উইন্ডোইং ফাংশনগুলি রিয়েল-টাইম (স্ট্রিমিং) ইভেন্টের ডেটা (উদাহরণস্বরূপ, ইভেন্টগুলি ক্লিক করুন) এর সময় উইন্ডোগুলির মানকে একত্রিত করার ভিত্তিতে এই বৈশিষ্ট্যগুলি গণনা করতে পারে। রূপান্তরগুলির গ্রানুলারিটির পূর্ববর্তী আলোচনায়, এটিকে "প্রশিক্ষণের সময় historical তিহাসিক সমষ্টি, তবে ভবিষ্যদ্বাণীকালে রিয়েল-টাইম সমষ্টি" হিসাবে উল্লেখ করা হয়েছিল।
নিম্নলিখিত চিত্র, চিত্র 3, নিকটবর্তী রিয়েল-টাইম পূর্বাভাসের জন্য স্ট্রিম ডেটার প্রক্রিয়াকরণে ডেটাফ্লোর ভূমিকা দেখায়।
চিত্র 3 -তে দেখানো হয়েছে, প্রক্রিয়াজাতকরণের সময়, ডেটা পয়েন্ট নামক ইভেন্টগুলি পাব/সাব এ অন্তর্ভুক্ত করা হয়। ডেটাফ্লো এই ডেটা পয়েন্টগুলি গ্রাস করে, সময়ের সাথে সমষ্টিগুলির উপর ভিত্তি করে বৈশিষ্ট্যগুলি গণনা করে এবং তারপরে পূর্বাভাসের জন্য মোতায়েন এমএল মডেল এপিআইকে কল করে। এরপরে ভবিষ্যদ্বাণীগুলি একটি আউটবাউন্ড পাব/সাব ক্যুতে প্রেরণ করা হয়। পাব/সাব থেকে, ভবিষ্যদ্বাণীগুলি পর্যবেক্ষণ বা নিয়ন্ত্রণের মতো ডাউন স্ট্রিম সিস্টেমগুলি দ্বারা গ্রাস করা যেতে পারে, বা এগুলি মূল অনুরোধকারী ক্লায়েন্টের কাছে (উদাহরণস্বরূপ, বিজ্ঞপ্তি হিসাবে) পিছনে ঠেলে দেওয়া যেতে পারে। ভবিষ্যদ্বাণীগুলি রিয়েল-টাইম আনার জন্য ক্লাউড বিগটেবলের মতো লো-ল্যাটেন্সি ডেটা স্টোরেও সংরক্ষণ করা যেতে পারে। ক্লাউড বিগটেবল এই রিয়েল-টাইম সমষ্টিগুলি সংগ্রহ এবং সংরক্ষণ করতেও ব্যবহার করা যেতে পারে যাতে পূর্বাভাসের জন্য যখন প্রয়োজন হয় তখন সেগুলি সন্ধান করা যায়।
একই অ্যাপাচি মরীচি বাস্তবায়ন ব্যাচ-প্রক্রিয়া প্রশিক্ষণের ডেটা ব্যবহার করতে পারে যা অনলাইনে ভবিষ্যদ্বাণীগুলি পরিবেশন করার জন্য বিগকোয়ারি এবং স্ট্রিম-প্রক্রিয়া রিয়েল-টাইম ডেটাগুলির মতো অফলাইন ডেটাস্টোর থেকে আসে।
চিত্র 2 -এ প্রদর্শিত আর্কিটেকচারের মতো অন্যান্য সাধারণ আর্কিটেকচারগুলিতে ক্লায়েন্ট অ্যাপ্লিকেশনটি সরাসরি অনলাইন পূর্বাভাসের জন্য মোতায়েন করা মডেল এপিআইকে কল করে। সেক্ষেত্রে, যদি প্রশিক্ষণ ডেটা প্রস্তুত করার জন্য প্রিপ্রোসেসিং অপারেশনগুলি ডেটাফোতে প্রয়োগ করা হয়, তবে অপারেশনগুলি সরাসরি মডেলটিতে যায় এমন পূর্বাভাস ডেটাতে প্রয়োগ করা হয় না। অতএব, অনলাইন পূর্বাভাসের জন্য পরিবেশন করার সময় এই জাতীয় রূপান্তরগুলি মডেলটিতে সংহত করা উচিত।
ডেটাফ্লো স্কেলটিতে প্রয়োজনীয় পরিসংখ্যান গণনা করে পূর্ণ-পাস রূপান্তর সম্পাদন করতে ব্যবহার করা যেতে পারে। যাইহোক, পূর্বাভাস ডেটা পয়েন্টগুলি রূপান্তর করতে পূর্বাভাসের সময় ব্যবহার করার জন্য এই পরিসংখ্যানগুলি কোথাও সংরক্ষণ করা দরকার। টেনসরফ্লো ট্রান্সফর্ম ( tf.Transform
) লাইব্রেরি ব্যবহার করে, আপনি এই পরিসংখ্যানগুলি সরাসরি অন্য কোথাও সংরক্ষণের পরিবর্তে মডেলটিতে এম্বেড করতে পারেন। এই পদ্ধতির পরে কীভাবে টিএফ. ট্রান্সফর্ম কাজ করে তা ব্যাখ্যা করা হয়েছে।
বিকল্প সি: টেনসরফ্লো
চিত্র 2 -তে দেখানো হয়েছে, আপনি নিজেই টেনসরফ্লো মডেলটিতে ডেটা প্রিপ্রোসেসিং এবং ট্রান্সফর্মেশন অপারেশনগুলি প্রয়োগ করতে পারেন। চিত্রটিতে দেখানো হয়েছে, আপনি যখন টেনসরফ্লো মডেল প্রশিক্ষণের জন্য প্রয়োগ করেন তা প্রিপ্রোসেসিং মডেলটির একটি অবিচ্ছেদ্য অঙ্গ হয়ে যায় যখন মডেলটি রফতানি করা হয় এবং ভবিষ্যদ্বাণীগুলির জন্য মোতায়েন করা হয়। টেনসরফ্লো মডেলের রূপান্তরগুলি নিম্নলিখিত একটি উপায়ে সম্পন্ন করা যেতে পারে:
-
input_fn
ফাংশনে এবংserving_fn
ফাংশনে সমস্ত উদাহরণ-স্তরের রূপান্তর যুক্তি প্রয়োগ করা।input_fn
ফাংশনটি একটি মডেল প্রশিক্ষণের জন্যtf.data.Dataset
এপিআই ব্যবহার করে একটি ডেটাসেট প্রস্তুত করে।serving_fn
ফাংশন ভবিষ্যদ্বাণীগুলির জন্য ডেটা গ্রহণ করে এবং প্রস্তুত করে। - কেরাস প্রিপ্রোসেসিং স্তরগুলি ব্যবহার করে বা কাস্টম স্তর তৈরি করে সরাসরি আপনার টেনসরফ্লো মডেলটিতে রূপান্তর কোডটি রেখে।
serving_fn
ফাংশনে ট্রান্সফর্মেশন লজিক কোডটি অনলাইন পূর্বাভাসের জন্য আপনার সেভডমোডেলের পরিবেশন ইন্টারফেসকে সংজ্ঞায়িত করে। আপনি যদি serving_fn
ফাংশনের ট্রান্সফর্মেশন লজিক কোডে প্রশিক্ষণ ডেটা প্রস্তুত করার জন্য ব্যবহৃত একই রূপান্তরগুলি প্রয়োগ করেন তবে এটি নিশ্চিত করে যে একই রূপান্তরগুলি যখন পরিবেশন করা হয় তখন নতুন পূর্বাভাস ডেটা পয়েন্টগুলিতে প্রয়োগ করা হয়।
তবে, যেহেতু টেনসরফ্লো মডেল প্রতিটি ডেটা পয়েন্টকে স্বাধীনভাবে বা একটি ছোট ব্যাচে প্রক্রিয়া করে, আপনি সমস্ত ডেটা পয়েন্ট থেকে সমষ্টিগুলি গণনা করতে পারবেন না। ফলস্বরূপ, আপনার টেনসরফ্লো মডেলটিতে পূর্ণ-পাস রূপান্তরগুলি প্রয়োগ করা যায় না।
প্রাক প্রসেসিং চ্যালেঞ্জ
নিম্নলিখিতগুলি ডেটা প্রিপ্রোসেসিং বাস্তবায়নের প্রাথমিক চ্যালেঞ্জগুলি রয়েছে:
প্রশিক্ষণ-সরবরাহকারী স্কিউ । প্রশিক্ষণ-পরিবেশনকারী স্কিউ প্রশিক্ষণের সময় এবং পরিবেশনার সময় কার্যকারিতা (ভবিষ্যদ্বাণীমূলক কর্মক্ষমতা) এর মধ্যে একটি পার্থক্যকে বোঝায়। আপনি প্রশিক্ষণ এবং পরিবেশনকারী পাইপলাইনগুলিতে কীভাবে ডেটা পরিচালনা করেন তার মধ্যে তাত্পর্যপূর্ণতার কারণে এই স্কিউ হতে পারে। উদাহরণস্বরূপ, যদি আপনার মডেলটি লগারিদমিকভাবে রূপান্তরিত বৈশিষ্ট্যে প্রশিক্ষিত হয় তবে এটি পরিবেশন করার সময় কাঁচা বৈশিষ্ট্যটি উপস্থাপন করা হয় তবে পূর্বাভাস আউটপুটটি সঠিক নাও হতে পারে।
যদি রূপান্তরগুলি নিজেই মডেলের অংশ হয়ে যায়, তবে বিকল্প সি: টেনসরফ্লোতে পূর্বে বর্ণিত হিসাবে উদাহরণ-স্তরের রূপান্তরগুলি পরিচালনা করা সোজা হতে পারে। সেক্ষেত্রে, মডেল পরিবেশনকারী ইন্টারফেস (
serving_fn
ফাংশন) কাঁচা ডেটা প্রত্যাশা করে, যখন মডেলটি অভ্যন্তরীণভাবে আউটপুট কম্পিউটিংয়ের আগে এই ডেটা রূপান্তর করে। রূপান্তরগুলি কাঁচা প্রশিক্ষণ এবং পূর্বাভাস ডেটা পয়েন্টগুলিতে প্রয়োগ করা হয়েছিল তার মতোই।পূর্ণ পাস রূপান্তর । আপনি আপনার টেনসরফ্লো মডেলটিতে স্কেলিং এবং নরমালাইজেশন ট্রান্সফর্মেশনগুলির মতো পূর্ণ-পাস রূপান্তরগুলি প্রয়োগ করতে পারবেন না। পূর্ণ-পাস রূপান্তরগুলিতে, কিছু পরিসংখ্যান (উদাহরণস্বরূপ, সংখ্যার বৈশিষ্ট্যগুলি স্কেল করার জন্য
max
এবংmin
মানগুলি) অবশ্যই প্রশিক্ষণের ডেটাতে অবশ্যই গণনা করা উচিত, বিকল্প বি: ডেটাফ্লোতে বর্ণিত হিসাবে। The values then have to be stored somewhere to be used during model serving for prediction to transform the new raw data points as instance-level transformations, which avoids training-serving skew. You can use the TensorFlow Transform (tf.Transform
) library to directly embed the statistics in your TensorFlow model. This approach is explained later in How tf.Transform works .Preparing the data up front for better training efficiency . Implementing instance-level transformations as part of the model can degrade the efficiency of the training process. This degradation occurs because the same transformations are repeatedly applied to the same training data on each epoch. Imagine that you have raw training data with 1,000 features, and you apply a mix of instance-level transformations to generate 10,000 features. If you implement these transformations as part of your model, and if you then feed the model the raw training data, these 10,000 operations are applied N times on each instance, where N is the number of epochs. In addition, if you're using accelerators (GPUs or TPUs), they sit idle while the CPU performs those transformations, which isn't an efficient use of your costly accelerators.
Ideally, the training data is transformed before training, using the technique described under Option B: Dataflow , where the 10,000 transformation operations are applied only once on each training instance. The transformed training data is then presented to the model. No further transformations are applied, and the accelerators are busy all of the time. In addition, using Dataflow helps you to preprocess large amounts of data at scale, using a fully managed service.
Preparing the training data up front can improve training efficiency. However, implementing the transformation logic outside of the model (the approaches described in Option A: BigQuery or Option B: Dataflow ) doesn't resolve the issue of training-serving skew. Unless you store the engineered feature in the feature store to be used for both training and prediction, the transformation logic must be implemented somewhere to be applied on new data points coming for prediction, because the model interface expects transformed data. The TensorFlow Transform (
tf.Transform
) library can help you to address this issue, as described in the following section.
How tf.Transform works
The tf.Transform
library is useful for transformations that require a full pass. The output of the tf.Transform
library is exported as a TensorFlow graph that represents the instance-level transformation logic and the statistics computed from full-pass transformations, to be used for training and serving. Using the same graph for both training and serving can prevent skew, because the same transformations are applied in both stages. In addition, the tf.Transform
library can run at scale in a batch processing pipeline on Dataflow to prepare the training data up front and improve training efficiency.
The following diagram, figure 4, shows how the tf.Transform
library preprocesses and transforms data for training and prediction. The process is described in the following sections.
Transform training and evaluation data
You preprocess the raw training data using the transformation implemented in the tf.Transform
Apache Beam APIs, and run it at scale on Dataflow. The preprocessing occurs in the following phases:
- Analyze phase: During the analyze phase, the required statistics (like means, variances, and quantiles) for stateful transformations are computed on the training data with full-pass operations. This phase produces a set of transformation artifacts, including the
transform_fn
graph. Thetransform_fn
graph is a TensorFlow graph that has the transformation logic as instance-level operations. It includes the statistics computed in the analyze phase as constants. - Transform phase: During the transform phase, the
transform_fn
graph is applied to the raw training data, where the computed statistics are used to process the data records (for example, to scale numerical columns) in an instance-level fashion.
A two-phase approach like this addresses the preprocessing challenge of performing full-pass transformations.
When the evaluation data is preprocessed, only instance-level operations are applied, using the logic in the transform_fn
graph and the statistics computed from the analyze phase in the training data. In other words, you don't analyze the evaluation data in a full-pass fashion to compute new statistics, such as μ and σ, to normalize numeric features in evaluation data. Instead, you use the computed statistics from the training data to transform the evaluation data in an instance-level fashion.
The transformed training and evaluation data are prepared at scale using Dataflow, before they are used to train the model. This batch data-preparation process addresses the preprocessing challenge of preparing the data up front to improve training efficiency. As shown in figure 4, the model internal interface expects transformed features.
Attach transformations to the exported model
As noted, the transform_fn
graph that's produced by the tf.Transform
pipeline is stored as an exported TensorFlow graph. The exported graph consists of the transformation logic as instance-level operations, and all of the statistics computed in the full-pass transformations as graph constants. When the trained model is exported for serving, the transform_fn
graph is attached to the SavedModel as part of its serving_fn
function.
While it's serving the model for prediction, the model serving interface expects data points in the raw format (that is, before any transformations). However, the model internal interface expects the data in the transformed format.
The transform_fn
graph, which is now part of the model, applies all the preprocessing logic on the incoming data point. It uses the stored constants (like μ and σ to normalize the numeric features) in the instance-level operation during prediction. Therefore, the transform_fn
graph converts the raw data point into the transformed format. The transformed format is what is expected by the model internal interface in order to produce prediction, as shown in figure 4.
This mechanism resolves the preprocessing challenge of the training-serving skew, because the same logic (implementation) that is used to transform the training and evaluation data is applied to transform the new data points during prediction serving.
Preprocessing options summary
The following table summarizes the data preprocessing options that this document discussed. In the table, "N/A" stands for "not applicable."
Data preprocessing option | Instance-level (stateless transformations) | Full-pass during training and instance-level during serving (stateful transformations) | Real-time (window) aggregations during training and serving (streaming transformations) |
---|---|---|---|
BigQuery (SQL) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. | Batch scoring: Not recommended . Online prediction: Not recommended . Although you can use statistics computed using BigQuery for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. |
Dataflow (Apache Beam) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: OK —if data at serving time comes from Pub/Sub to be consumed by Dataflow. Otherwise, results in training-serving skew. | Batch scoring: Not recommended . Online predictions: Not recommended . Although you can use statistics computed using Dataflow for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
Dataflow (Apache Beam + TFT) | Batch scoring: OK —the same transformation implementation is applied to data during training and batch scoring. Online prediction: Recommended —it avoids training-serving skew and prepares training data up front. | Batch scoring: Recommended . Online prediction: Recommended . Both uses are recommended because transformation logic and computed statistics during training are stored as a TensorFlow graph that's attached to the exported model for serving. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
TensorFlow * | Batch scoring: Not recommended . Online prediction: Not recommended . For training efficiency in both cases, it's better to prepare the training data up front. | Batch scoring: Not Possible . Online prediction: Not Possible . | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not Possible . |
* With TensorFlow, transformations like crossing, embedding, and one-hot encoding should be performed declaratively as feature_columns
columns.
এরপর কি
- To implement a
tf.Transform
pipeline and run it using Dataflow, read part two of this series, Data preprocessing for ML using TensorFlow Transform . - Take the Coursera specialization on ML with TensorFlow on Google Cloud .
- Learn about best practices for ML engineering in Rules of ML .
- For more reference architectures, diagrams, and best practices, explore the TFX Cloud Solutions .
This document is the first in a two-part series that explores the topic of data engineering and feature engineering for machine learning (ML), with a focus on supervised learning tasks. This first part discusses the best practices for preprocessing data in an ML pipeline on Google Cloud. The document focuses on using TensorFlow and the open source TensorFlow Transform ( tf.Transform
) library to prepare data, train the model, and serve the model for prediction. This document highlights the challenges of preprocessing data for ML, and it describes the options and scenarios for performing data transformation on Google Cloud effectively.
This document assumes that you're familiar with BigQuery , Dataflow , Vertex AI , and the TensorFlow Keras API.
The second document, Data preprocessing for ML with Google Cloud , provides a step-by-step tutorial for how to implement a tf.Transform
pipeline.
ভূমিকা
ML helps you automatically find complex and potentially useful patterns in data. These patterns are condensed in an ML model that can then be used on new data points—a process called making predictions or performing inference .
Building an ML model is a multistep process. Each step presents its own technical and conceptual challenges. This two-part series focuses on supervised learning tasks and the process of selecting, transforming, and augmenting the source data to create powerful predictive signals to the target variable. These operations combine domain knowledge with data science techniques. The operations are the essence of feature engineering .
The size of training datasets for real-world ML models can easily be equal to or greater than one terabyte (TB). Therefore, you need large-scale data processing frameworks in order to process these datasets efficiently and distributedly. When you use an ML model to make predictions, you have to apply the same transformations that you used for the training data on the new data points. By applying the same transformations, you present the live dataset to the ML model the way that the model expects.
This document discusses these challenges for different levels of granularity of feature engineering operations: instance-level, full-pass, and time-window aggregations. This document also describes the options and scenarios to perform data transformation for ML on Google Cloud.
This document also provides an overview of TensorFlow Transform ( tf.Transform
), a library for TensorFlow that lets you define both instance-level and full-pass data transformation through data preprocessing pipelines. These pipelines are executed with Apache Beam , and they create artifacts that let you apply the same transformations during prediction as when the model is served.
Preprocessing data for ML
This section introduces data preprocessing operations and stages of data readiness. It also discusses the types of the preprocessing operations and their granularity.
Data engineering compared to feature engineering
Preprocessing the data for ML involves both data engineering and feature engineering. Data engineering is the process of converting raw data into prepared data . Feature engineering then tunes the prepared data to create the features that are expected by the ML model. এই পদগুলির নিম্নলিখিত অর্থ রয়েছে:
- Raw data (or just data )
- The data in its source form, without any prior preparation for ML. In this context, the data might be in its raw form (in a data lake) or in a transformed form (in a data warehouse). Transformed data that's in a data warehouse might have been converted from its original raw form to be used for analytics. However, in this context, raw data means that the data hasn't been prepared specifically for your ML task. Data is also considered raw data if it's sent from streaming systems that eventually call ML models for predictions.
- Prepared data
- The dataset in the form ready for your ML task: data sources have been parsed, joined, and put into a tabular form. Prepared data is aggregated and summarized to the right granularity—for example, each row in the dataset represents a unique customer, and each column represents summary information for the customer, like the total spent in the last six weeks. In a prepared data table, irrelevant columns have been dropped, and invalid records have been filtered out. For supervised learning tasks, the target feature is present.
- Engineered features
- The dataset with the tuned features that are expected by the model—that is, features that are created by performing certain ML-specific operations on the columns in the prepared dataset, and creating new features for your model during training and prediction, as described later in Preprocessing operations . Examples of these operations include scaling numerical columns to a value between 0 and 1, clipping values, and one-hot-encoding categorical features.
The following diagram, figure 1, shows the steps that are involved in preparing preprocessed data:
In practice, data from the same source is often at different stages of readiness. For example, a field from a table in your data warehouse might be used directly as an engineered feature. At the same time, another field in the same table might need to go through transformations before it becomes an engineered feature. Similarly, data engineering and feature engineering operations might be combined in the same data preprocessing step.
Preprocessing operations
Data preprocessing includes several operations. Each operation is designed to help ML build better predictive models. The details of these preprocessing operations are outside the scope of this document, but some operations are briefly described in this section.
For structured data, data preprocessing operations include the following:
- Data cleansing: removing or correcting records that have corrupted or invalid values from raw data, and removing records that are missing a large number of columns.
- Instances selection and partitioning: selecting data points from the input dataset to create training, evaluation (validation), and test sets . This process includes techniques for repeatable random sampling, minority classes oversampling, and stratified partitioning.
- Feature tuning: improving the quality of a feature for ML, which includes scaling and normalizing numeric values, imputing missing values, clipping outliers, and adjusting values that have skewed distributions.
- Feature transformation: converting a numeric feature to a categorical feature (through bucketization ), and converting categorical features to a numeric representation (through one-hot encoding, learning with counts , sparse feature embeddings, etc.). Some models work only with numeric or categorical features, while others can handle mixed type features. Even when models handle both types, they can benefit from different representations (numeric and categorical) of the same feature.
- Feature extraction: reducing the number of features by creating lower-dimension, more powerful data representations using techniques such as PCA , embedding extraction, and hashing .
- Feature selection: selecting a subset of the input features for training the model, and ignoring the irrelevant or redundant ones, using filter or wrapper methods . Feature selection can also involve simply dropping features if the features are missing a large number of values.
- Feature construction: creating new features by using typical techniques, such as polynomial expansion (by using univariate mathematical functions) or feature crossing (to capture feature interactions). Features can also be constructed by using business logic from the domain of the ML use case.
When you work with unstructured data (for example, images, audio, or text documents), deep learning replaces domain-knowledge-based feature engineering by folding it into the model architecture. A convolutional layer is an automatic feature preprocessor. Constructing the right model architecture requires some empirical knowledge of the data. In addition, some amount of preprocessing is needed, such as the following:
- For text documents: stemming and lemmatization , TF-IDF calculation, and n-gram extraction, embedding lookup.
- For images: clipping, resizing, cropping, Gaussian blur, and canary filters.
- For all types of data (including text and images): transfer learning , which treats all-but-last layers of the fully trained model as a feature engineering step.
Preprocessing granularity
This section discusses the granularity of types of data transformations. It shows why this perspective is critical when preparing new data points for predictions using transformations that are applied on training data.
Preprocessing and transformation operations can be categorized as follows, based on operation granularity:
Instance-level transformations during training and prediction . These are straightforward transformations, where only values from the same instance are needed for the transformation. For example, instance-level transformations might include clipping the value of a feature to some threshold, polynomially expanding another feature, multiplying two features, or comparing two features to create a Boolean flag.
These transformations must be applied identically during training and prediction, because the model will be trained on the transformed features, not on the raw input values. If the data isn't transformed identically, then the model behaves poorly because it is presented with data that has a distribution of values that it wasn't trained with. For more information, see the discussion of training-serving skew in the Preprocessing challenges section.
Full-pass transformations during training, but instance-level transformations during prediction . In this scenario, transformations are stateful, because they use some precomputed statistics to perform the transformation. During training, you analyze the whole body of training data to compute quantities such as minimum, maximum, mean, and variance for transforming training data, evaluation data, and new data at prediction time.
For example, to normalize a numeric feature for training, you compute its mean (μ) and its standard deviation (σ) across the whole of the training data. This computation is called a full-pass (or analyze ) operation. When you serve the model for prediction, the value of a new data point is normalized to avoid training-serving skew. Therefore, μ and σ values that are computed during training are used to adjust the feature value, which is the following simple instance-level operation:
$$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$Full-pass transformations include the following:
- MinMax scaling numerical features using min and max computed from the training dataset.
- Standard scaling (z-score normalization) numerical features using μ and σ computed on the training dataset.
- Bucketizing numerical features using quantiles.
- Imputing missing values using the median (numerical features) or the mode (categorical features).
- Converting strings (nominal values) to integers (indexes) by extracting all the distinct values (vocabulary) of an input categorical feature.
- Counting the occurrence of a term (feature value) in all the documents (instances) to calculate for TF-IDF.
- Computing the PCA of the input features to project the data into a lower dimensional space (with linearly dependent features).
You should use only the training data to compute statistics like μ, σ, min , and max . If you add the test and evaluation data for these operations, you are leaking information from the evaluation and test data to train the model. Doing so affects the reliability of the test and evaluation results. To ensure that you apply a consistent transformation to all datasets, you use the same statistics computed from the training data to transform the test and evaluation data.
Historical aggregations during training and prediction . This involves creating business aggregations, derivations, and flags as input signals to the prediction task—for example, creating recency, frequency, and monetary (RFM) metrics for customers to build propensity models. These types of features can be precomputed and stored in a feature store to be used during model training, batch scoring, and online prediction serving. You can also perform additional feature engineering (for example, transformation and tuning) to these aggregations before training and prediction.
Historical aggregations during training, but real-time aggregations during prediction . This approach involves creating a feature by summarizing real-time values over time. In this approach, the instances to be aggregated are defined through temporal window clauses. For example, you can use this approach if you want to train a model that estimates the taxi trip time based on the traffic metrics for the route in the last 5 minutes, in the last 10 minutes, in the last 30 minutes, and at other বিরতি You can also use this approach to predict the failure of an engine part based on the moving average of temperature and vibration values computed over the last 3 minutes. Although these aggregations can be prepared offline for training, they are computed in real time from a data stream during serving.
More precisely, when you prepare training data, if the aggregated value isn't in the raw data, the value is created during the data engineering phase. The raw data is usually stored in a database with a format of
(entity, timestamp, value)
. In the previous examples,entity
is the route segment identifier for the taxi routes and the engine part identifier for the engine failure. You can use windowing operations to compute(entity, time_index, aggregated_value_over_time_window)
and use the aggregation features as an input for your model training.When the model for real-time (online) prediction is served, the model expects features derived from the aggregated values as an input. Therefore, you can use a stream-processing technology like Apache Beam to compute the aggregations from the real-time data points streamed into your system. Stream-processing technology aggregates real-time data based on time windows as new data points arrive. You can also perform additional feature engineering (for example, transformation and tuning) to these aggregations before training and prediction.
ML pipeline on Google Cloud
This section discusses the core components of a typical end-to-end pipeline to train and serve TensorFlow ML models on Google Cloud using managed services. It also discusses where you can implement different categories of the data preprocessing operations, and common challenges that you might face when you implement such transformations. The How tf.Transform works section shows how the TensorFlow Transform library helps to address these challenges.
উচ্চ-স্তরের স্থাপত্য
The following diagram, figure 2, shows a high-level architecture of a typical ML pipeline for training and serving TensorFlow models. The labels A, B, and C in the diagram refer to the different places in the pipeline where data preprocessing can take place. Details about these steps are provided in the following section.
The pipeline consists of the following steps:
- After raw data is imported, tabular data is stored in BigQuery, and other data like images, audio, and video, is stored in Cloud Storage. The second part of this series uses tabular data stored in BigQuery as an example.
- Data engineering (preparation) and feature engineering are executed at scale using Dataflow. This execution produces ML-ready training, evaluation, and test sets that are stored in Cloud Storage. Ideally, these datasets are stored as TFRecord files, which is the optimized format for TensorFlow computations.
- A TensorFlow model trainer package is submitted to Vertex AI Training, which uses the preprocessed data from the previous steps to train the model. The output of this step is a trained TensorFlow SavedModel that is exported to Cloud Storage.
- The trained TensorFlow model is deployed to Vertex AI Prediction as a service that has a REST API so that it can be used for online predictions. The same model can also be used for batch prediction jobs.
- After the model is deployed as a REST API, client apps and internal systems can invoke the API by sending requests with some data points, and receiving responses from the model with predictions.
- For orchestrating and automating this pipeline, you can use Vertex AI Pipelines as a scheduler to invoke the data preparation, model training, and model deployment steps.
You can also use Vertex AI Feature Store to store input features to make predictions. For example, you can periodically create engineered features from the latest raw data and store them in Vertex AI Feature Store. Client apps fetch the required input features from Vertex AI Feature Store and send them to the model to receive predictions.
Where to do preprocessing
In figure 2, the labels A, B, and C show that data preprocessing operations can take place in BigQuery, Dataflow, or TensorFlow. The following sections describe how each of these options work.
Option A: BigQuery
Typically, logic is implemented in BigQuery for the following operations:
- Sampling: randomly selecting a subset from the data.
- Filtering: removing irrelevant or invalid instances.
- Partitioning: splitting the data to produce training, evaluation, and test sets.
BigQuery SQL scripts can be used as a source query for the Dataflow preprocessing pipeline, which is the data processing step in figure 2. For example, if a system is used in Canada, and the data warehouse has transactions from around the world, filtering to get Canada-only training data is best done in BigQuery. Feature engineering in BigQuery is simple and scalable, and supports implementing instance-level and historical aggregations feature transformations.
However, we recommend that you use BigQuery for feature engineering only if you use your model for batch prediction (scoring), or if the features are precomputed in BigQuery, but stored in Vertex AI Feature Store to be used during online prediction. If you plan to deploy the model for online predictions, and if you don't have the engineered feature in an online feature store, you have to replicate the SQL preprocessing operations to transform the raw data points that other systems generate. In other words, you need to implement the logic twice: one time in SQL to preprocess training data in BigQuery, and a second time in the logic of the app that consumes the model to preprocess online data points for prediction.
For example, if your client app is written in Java, you need to reimplement the logic in Java. This can introduce errors due to implementation discrepancies, as described in the training-serving skew section of Preprocessing challenges later in this document. It's also extra overhead to maintain two different implementations. Whenever you change the logic in SQL to preprocess the training data, you need to change the Java implementation accordingly to preprocess data at serving time.
If you are using your model only for batch prediction (for example, using Vertex AI batch prediction ), and if your data for scoring is sourced from BigQuery, you can implement these preprocessing operations as part of the BigQuery SQL script. In that case, you can use the same preprocessing SQL script to prepare both training and scoring data.
Full-pass stateful transformations aren't suitable for implementation in BigQuery. If you use BigQuery for full-pass transformations, you need auxiliary tables to store quantities needed by stateful transformations, such as means and variances to scale numerical features. Further, implementation of full-pass transformations using SQL on BigQuery creates increased complexity in the SQL scripts, and creates intricate dependency between training and the scoring SQL scripts.
Option B: Dataflow
As shown in figure 2, you can implement computationally expensive preprocessing operations in Apache Beam, and run them at scale using Dataflow. Dataflow is a fully managed autoscaling service for batch and stream data processing. When you use Dataflow, you can also use external specialized libraries for data processing, unlike BigQuery.
Dataflow can perform instance-level transformations, and historical and real-time aggregation feature transformations. In particular, if your ML models expect an input feature like total_number_of_clicks_last_90sec
, Apache Beam windowing functions can compute these features based on aggregating the values of time windows of real-time (streaming) events data (for example, click events). In the earlier discussion of granularity of transformations , this was referred to as "Historical aggregations during training, but real-time aggregations during prediction."
The following diagram, figure 3, shows the role of Dataflow in processing stream data for near real-time predictions.
As shown in figure 3, during processing, events called data points are ingested into Pub/Sub . Dataflow consumes these data points, computes features based on aggregates over time, and then calls the deployed ML model API for predictions. Predictions are then sent to an outbound Pub/Sub queue. From Pub/Sub, predictions can be consumed by downstream systems like monitoring or control, or they can be pushed back (for example, as notifications) to the original requesting client. Predictions can also be stored in a low-latency data store like Cloud Bigtable for real-time fetching. Cloud Bigtable can also be used to accumulate and store these real-time aggregations so they can be looked up when needed for prediction.
The same Apache Beam implementation can be used to batch-process training data that comes from an offline datastore like BigQuery and stream-process real-time data for serving online predictions.
In other typical architectures, such as the architecture shown in figure 2, the client app directly calls the deployed model API for online predictions. In that case, if preprocessing operations are implemented in Dataflow to prepare the training data, the operations aren't applied to the prediction data that goes directly to the model. Therefore, transformations like these should be integrated in the model during serving for online predictions.
Dataflow can be used to perform full-pass transformation, by computing the required statistics at scale. However, these statistics need to be stored somewhere to be used during prediction to transform prediction data points. By using the TensorFlow Transform ( tf.Transform
) library, you can directly embed these statistics in the model instead of storing them elsewhere. This approach is explained later in How tf.Transform works .
Option C: TensorFlow
As shown in figure 2, you can implement data preprocessing and transformation operations in the TensorFlow model itself. As shown in the figure, the preprocessing that you implement for training the TensorFlow model becomes an integral part of the model when the model is exported and deployed for predictions. Transformations in the TensorFlow model can be accomplished in one of the following ways:
- Implementing all of the instance-level transformation logic in the
input_fn
function and in theserving_fn
function. Theinput_fn
function prepares a dataset using thetf.data.Dataset
API for training a model. Theserving_fn
function receives and prepares the data for predictions. - Putting the transformation code directly in your TensorFlow model by using Keras preprocessing layers or creating custom layers .
The transformation logic code in the serving_fn
function defines the serving interface of your SavedModel for online prediction. If you implement the same transformations that were used for preparing training data in the transformation logic code of the serving_fn
function, it ensures that the same transformations are applied to new prediction data points when they're served.
However, because the TensorFlow model processes each data point independently or in a small batch, you can't calculate aggregations from all data points. As a result, full-pass transformations can't be implemented in your TensorFlow model.
Preprocessing challenges
The following are the primary challenges of implementing data preprocessing:
Training-serving skew . Training-serving skew refers to a difference between effectiveness (predictive performance) during training and during serving. This skew can be caused by a discrepancy between how you handle data in the training and the serving pipelines. For example, if your model is trained on a logarithmically transformed feature, but it's presented with the raw feature during serving, the prediction output might not be accurate.
If the transformations become part of the model itself, it can be straightforward to handle instance-level transformations, as described earlier in Option C: TensorFlow . In that case, the model serving interface (the
serving_fn
function) expects raw data, while the model internally transforms this data before computing the output. The transformations are the same as those that were applied on the raw training and prediction data points.Full-pass transformations . You can't implement full-pass transformations such as scaling and normalization transformations in your TensorFlow model. In full-pass transformations, some statistics (for example,
max
andmin
values to scale numeric features) must be computed on the training data beforehand, as described in Option B: Dataflow . The values then have to be stored somewhere to be used during model serving for prediction to transform the new raw data points as instance-level transformations, which avoids training-serving skew. You can use the TensorFlow Transform (tf.Transform
) library to directly embed the statistics in your TensorFlow model. This approach is explained later in How tf.Transform works .Preparing the data up front for better training efficiency . Implementing instance-level transformations as part of the model can degrade the efficiency of the training process. This degradation occurs because the same transformations are repeatedly applied to the same training data on each epoch. Imagine that you have raw training data with 1,000 features, and you apply a mix of instance-level transformations to generate 10,000 features. If you implement these transformations as part of your model, and if you then feed the model the raw training data, these 10,000 operations are applied N times on each instance, where N is the number of epochs. In addition, if you're using accelerators (GPUs or TPUs), they sit idle while the CPU performs those transformations, which isn't an efficient use of your costly accelerators.
Ideally, the training data is transformed before training, using the technique described under Option B: Dataflow , where the 10,000 transformation operations are applied only once on each training instance. The transformed training data is then presented to the model. No further transformations are applied, and the accelerators are busy all of the time. In addition, using Dataflow helps you to preprocess large amounts of data at scale, using a fully managed service.
Preparing the training data up front can improve training efficiency. However, implementing the transformation logic outside of the model (the approaches described in Option A: BigQuery or Option B: Dataflow ) doesn't resolve the issue of training-serving skew. Unless you store the engineered feature in the feature store to be used for both training and prediction, the transformation logic must be implemented somewhere to be applied on new data points coming for prediction, because the model interface expects transformed data. The TensorFlow Transform (
tf.Transform
) library can help you to address this issue, as described in the following section.
How tf.Transform works
The tf.Transform
library is useful for transformations that require a full pass. The output of the tf.Transform
library is exported as a TensorFlow graph that represents the instance-level transformation logic and the statistics computed from full-pass transformations, to be used for training and serving. Using the same graph for both training and serving can prevent skew, because the same transformations are applied in both stages. In addition, the tf.Transform
library can run at scale in a batch processing pipeline on Dataflow to prepare the training data up front and improve training efficiency.
The following diagram, figure 4, shows how the tf.Transform
library preprocesses and transforms data for training and prediction. The process is described in the following sections.
Transform training and evaluation data
You preprocess the raw training data using the transformation implemented in the tf.Transform
Apache Beam APIs, and run it at scale on Dataflow. The preprocessing occurs in the following phases:
- Analyze phase: During the analyze phase, the required statistics (like means, variances, and quantiles) for stateful transformations are computed on the training data with full-pass operations. This phase produces a set of transformation artifacts, including the
transform_fn
graph. Thetransform_fn
graph is a TensorFlow graph that has the transformation logic as instance-level operations. It includes the statistics computed in the analyze phase as constants. - Transform phase: During the transform phase, the
transform_fn
graph is applied to the raw training data, where the computed statistics are used to process the data records (for example, to scale numerical columns) in an instance-level fashion.
A two-phase approach like this addresses the preprocessing challenge of performing full-pass transformations.
When the evaluation data is preprocessed, only instance-level operations are applied, using the logic in the transform_fn
graph and the statistics computed from the analyze phase in the training data. In other words, you don't analyze the evaluation data in a full-pass fashion to compute new statistics, such as μ and σ, to normalize numeric features in evaluation data. Instead, you use the computed statistics from the training data to transform the evaluation data in an instance-level fashion.
The transformed training and evaluation data are prepared at scale using Dataflow, before they are used to train the model. This batch data-preparation process addresses the preprocessing challenge of preparing the data up front to improve training efficiency. As shown in figure 4, the model internal interface expects transformed features.
Attach transformations to the exported model
As noted, the transform_fn
graph that's produced by the tf.Transform
pipeline is stored as an exported TensorFlow graph. The exported graph consists of the transformation logic as instance-level operations, and all of the statistics computed in the full-pass transformations as graph constants. When the trained model is exported for serving, the transform_fn
graph is attached to the SavedModel as part of its serving_fn
function.
While it's serving the model for prediction, the model serving interface expects data points in the raw format (that is, before any transformations). However, the model internal interface expects the data in the transformed format.
The transform_fn
graph, which is now part of the model, applies all the preprocessing logic on the incoming data point. It uses the stored constants (like μ and σ to normalize the numeric features) in the instance-level operation during prediction. Therefore, the transform_fn
graph converts the raw data point into the transformed format. The transformed format is what is expected by the model internal interface in order to produce prediction, as shown in figure 4.
This mechanism resolves the preprocessing challenge of the training-serving skew, because the same logic (implementation) that is used to transform the training and evaluation data is applied to transform the new data points during prediction serving.
Preprocessing options summary
The following table summarizes the data preprocessing options that this document discussed. In the table, "N/A" stands for "not applicable."
Data preprocessing option | Instance-level (stateless transformations) | Full-pass during training and instance-level during serving (stateful transformations) | Real-time (window) aggregations during training and serving (streaming transformations) |
---|---|---|---|
BigQuery (SQL) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. | Batch scoring: Not recommended . Online prediction: Not recommended . Although you can use statistics computed using BigQuery for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. |
Dataflow (Apache Beam) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: OK —if data at serving time comes from Pub/Sub to be consumed by Dataflow. Otherwise, results in training-serving skew. | Batch scoring: Not recommended . Online predictions: Not recommended . Although you can use statistics computed using Dataflow for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
Dataflow (Apache Beam + TFT) | Batch scoring: OK —the same transformation implementation is applied to data during training and batch scoring. Online prediction: Recommended —it avoids training-serving skew and prepares training data up front. | Batch scoring: Recommended . Online prediction: Recommended . Both uses are recommended because transformation logic and computed statistics during training are stored as a TensorFlow graph that's attached to the exported model for serving. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
TensorFlow * | Batch scoring: Not recommended . Online prediction: Not recommended . For training efficiency in both cases, it's better to prepare the training data up front. | Batch scoring: Not Possible . Online prediction: Not Possible . | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not Possible . |
* With TensorFlow, transformations like crossing, embedding, and one-hot encoding should be performed declaratively as feature_columns
columns.
এরপর কি
- To implement a
tf.Transform
pipeline and run it using Dataflow, read part two of this series, Data preprocessing for ML using TensorFlow Transform . - Take the Coursera specialization on ML with TensorFlow on Google Cloud .
- Learn about best practices for ML engineering in Rules of ML .
- For more reference architectures, diagrams, and best practices, explore the TFX Cloud Solutions .
This document is the first in a two-part series that explores the topic of data engineering and feature engineering for machine learning (ML), with a focus on supervised learning tasks. This first part discusses the best practices for preprocessing data in an ML pipeline on Google Cloud. The document focuses on using TensorFlow and the open source TensorFlow Transform ( tf.Transform
) library to prepare data, train the model, and serve the model for prediction. This document highlights the challenges of preprocessing data for ML, and it describes the options and scenarios for performing data transformation on Google Cloud effectively.
This document assumes that you're familiar with BigQuery , Dataflow , Vertex AI , and the TensorFlow Keras API.
The second document, Data preprocessing for ML with Google Cloud , provides a step-by-step tutorial for how to implement a tf.Transform
pipeline.
ভূমিকা
ML helps you automatically find complex and potentially useful patterns in data. These patterns are condensed in an ML model that can then be used on new data points—a process called making predictions or performing inference .
Building an ML model is a multistep process. Each step presents its own technical and conceptual challenges. This two-part series focuses on supervised learning tasks and the process of selecting, transforming, and augmenting the source data to create powerful predictive signals to the target variable. These operations combine domain knowledge with data science techniques. The operations are the essence of feature engineering .
The size of training datasets for real-world ML models can easily be equal to or greater than one terabyte (TB). Therefore, you need large-scale data processing frameworks in order to process these datasets efficiently and distributedly. When you use an ML model to make predictions, you have to apply the same transformations that you used for the training data on the new data points. By applying the same transformations, you present the live dataset to the ML model the way that the model expects.
This document discusses these challenges for different levels of granularity of feature engineering operations: instance-level, full-pass, and time-window aggregations. This document also describes the options and scenarios to perform data transformation for ML on Google Cloud.
This document also provides an overview of TensorFlow Transform ( tf.Transform
), a library for TensorFlow that lets you define both instance-level and full-pass data transformation through data preprocessing pipelines. These pipelines are executed with Apache Beam , and they create artifacts that let you apply the same transformations during prediction as when the model is served.
Preprocessing data for ML
This section introduces data preprocessing operations and stages of data readiness. It also discusses the types of the preprocessing operations and their granularity.
Data engineering compared to feature engineering
Preprocessing the data for ML involves both data engineering and feature engineering. Data engineering is the process of converting raw data into prepared data . Feature engineering then tunes the prepared data to create the features that are expected by the ML model. এই পদগুলির নিম্নলিখিত অর্থ রয়েছে:
- Raw data (or just data )
- The data in its source form, without any prior preparation for ML. In this context, the data might be in its raw form (in a data lake) or in a transformed form (in a data warehouse). Transformed data that's in a data warehouse might have been converted from its original raw form to be used for analytics. However, in this context, raw data means that the data hasn't been prepared specifically for your ML task. Data is also considered raw data if it's sent from streaming systems that eventually call ML models for predictions.
- Prepared data
- The dataset in the form ready for your ML task: data sources have been parsed, joined, and put into a tabular form. Prepared data is aggregated and summarized to the right granularity—for example, each row in the dataset represents a unique customer, and each column represents summary information for the customer, like the total spent in the last six weeks. In a prepared data table, irrelevant columns have been dropped, and invalid records have been filtered out. For supervised learning tasks, the target feature is present.
- Engineered features
- The dataset with the tuned features that are expected by the model—that is, features that are created by performing certain ML-specific operations on the columns in the prepared dataset, and creating new features for your model during training and prediction, as described later in Preprocessing operations . Examples of these operations include scaling numerical columns to a value between 0 and 1, clipping values, and one-hot-encoding categorical features.
The following diagram, figure 1, shows the steps that are involved in preparing preprocessed data:
In practice, data from the same source is often at different stages of readiness. For example, a field from a table in your data warehouse might be used directly as an engineered feature. At the same time, another field in the same table might need to go through transformations before it becomes an engineered feature. Similarly, data engineering and feature engineering operations might be combined in the same data preprocessing step.
Preprocessing operations
Data preprocessing includes several operations. Each operation is designed to help ML build better predictive models. The details of these preprocessing operations are outside the scope of this document, but some operations are briefly described in this section.
For structured data, data preprocessing operations include the following:
- Data cleansing: removing or correcting records that have corrupted or invalid values from raw data, and removing records that are missing a large number of columns.
- Instances selection and partitioning: selecting data points from the input dataset to create training, evaluation (validation), and test sets . This process includes techniques for repeatable random sampling, minority classes oversampling, and stratified partitioning.
- Feature tuning: improving the quality of a feature for ML, which includes scaling and normalizing numeric values, imputing missing values, clipping outliers, and adjusting values that have skewed distributions.
- Feature transformation: converting a numeric feature to a categorical feature (through bucketization ), and converting categorical features to a numeric representation (through one-hot encoding, learning with counts , sparse feature embeddings, etc.). Some models work only with numeric or categorical features, while others can handle mixed type features. Even when models handle both types, they can benefit from different representations (numeric and categorical) of the same feature.
- Feature extraction: reducing the number of features by creating lower-dimension, more powerful data representations using techniques such as PCA , embedding extraction, and hashing .
- Feature selection: selecting a subset of the input features for training the model, and ignoring the irrelevant or redundant ones, using filter or wrapper methods . Feature selection can also involve simply dropping features if the features are missing a large number of values.
- Feature construction: creating new features by using typical techniques, such as polynomial expansion (by using univariate mathematical functions) or feature crossing (to capture feature interactions). Features can also be constructed by using business logic from the domain of the ML use case.
When you work with unstructured data (for example, images, audio, or text documents), deep learning replaces domain-knowledge-based feature engineering by folding it into the model architecture. A convolutional layer is an automatic feature preprocessor. Constructing the right model architecture requires some empirical knowledge of the data. In addition, some amount of preprocessing is needed, such as the following:
- For text documents: stemming and lemmatization , TF-IDF calculation, and n-gram extraction, embedding lookup.
- For images: clipping, resizing, cropping, Gaussian blur, and canary filters.
- For all types of data (including text and images): transfer learning , which treats all-but-last layers of the fully trained model as a feature engineering step.
Preprocessing granularity
This section discusses the granularity of types of data transformations. It shows why this perspective is critical when preparing new data points for predictions using transformations that are applied on training data.
Preprocessing and transformation operations can be categorized as follows, based on operation granularity:
Instance-level transformations during training and prediction . These are straightforward transformations, where only values from the same instance are needed for the transformation. For example, instance-level transformations might include clipping the value of a feature to some threshold, polynomially expanding another feature, multiplying two features, or comparing two features to create a Boolean flag.
These transformations must be applied identically during training and prediction, because the model will be trained on the transformed features, not on the raw input values. If the data isn't transformed identically, then the model behaves poorly because it is presented with data that has a distribution of values that it wasn't trained with. For more information, see the discussion of training-serving skew in the Preprocessing challenges section.
Full-pass transformations during training, but instance-level transformations during prediction . In this scenario, transformations are stateful, because they use some precomputed statistics to perform the transformation. During training, you analyze the whole body of training data to compute quantities such as minimum, maximum, mean, and variance for transforming training data, evaluation data, and new data at prediction time.
For example, to normalize a numeric feature for training, you compute its mean (μ) and its standard deviation (σ) across the whole of the training data. This computation is called a full-pass (or analyze ) operation. When you serve the model for prediction, the value of a new data point is normalized to avoid training-serving skew. Therefore, μ and σ values that are computed during training are used to adjust the feature value, which is the following simple instance-level operation:
$$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$Full-pass transformations include the following:
- MinMax scaling numerical features using min and max computed from the training dataset.
- Standard scaling (z-score normalization) numerical features using μ and σ computed on the training dataset.
- Bucketizing numerical features using quantiles.
- Imputing missing values using the median (numerical features) or the mode (categorical features).
- Converting strings (nominal values) to integers (indexes) by extracting all the distinct values (vocabulary) of an input categorical feature.
- Counting the occurrence of a term (feature value) in all the documents (instances) to calculate for TF-IDF.
- Computing the PCA of the input features to project the data into a lower dimensional space (with linearly dependent features).
You should use only the training data to compute statistics like μ, σ, min , and max . If you add the test and evaluation data for these operations, you are leaking information from the evaluation and test data to train the model. Doing so affects the reliability of the test and evaluation results. To ensure that you apply a consistent transformation to all datasets, you use the same statistics computed from the training data to transform the test and evaluation data.
Historical aggregations during training and prediction . This involves creating business aggregations, derivations, and flags as input signals to the prediction task—for example, creating recency, frequency, and monetary (RFM) metrics for customers to build propensity models. These types of features can be precomputed and stored in a feature store to be used during model training, batch scoring, and online prediction serving. You can also perform additional feature engineering (for example, transformation and tuning) to these aggregations before training and prediction.
Historical aggregations during training, but real-time aggregations during prediction . This approach involves creating a feature by summarizing real-time values over time. In this approach, the instances to be aggregated are defined through temporal window clauses. For example, you can use this approach if you want to train a model that estimates the taxi trip time based on the traffic metrics for the route in the last 5 minutes, in the last 10 minutes, in the last 30 minutes, and at other বিরতি You can also use this approach to predict the failure of an engine part based on the moving average of temperature and vibration values computed over the last 3 minutes. Although these aggregations can be prepared offline for training, they are computed in real time from a data stream during serving.
More precisely, when you prepare training data, if the aggregated value isn't in the raw data, the value is created during the data engineering phase. The raw data is usually stored in a database with a format of
(entity, timestamp, value)
. In the previous examples,entity
is the route segment identifier for the taxi routes and the engine part identifier for the engine failure. You can use windowing operations to compute(entity, time_index, aggregated_value_over_time_window)
and use the aggregation features as an input for your model training.When the model for real-time (online) prediction is served, the model expects features derived from the aggregated values as an input. Therefore, you can use a stream-processing technology like Apache Beam to compute the aggregations from the real-time data points streamed into your system. Stream-processing technology aggregates real-time data based on time windows as new data points arrive. You can also perform additional feature engineering (for example, transformation and tuning) to these aggregations before training and prediction.
ML pipeline on Google Cloud
This section discusses the core components of a typical end-to-end pipeline to train and serve TensorFlow ML models on Google Cloud using managed services. It also discusses where you can implement different categories of the data preprocessing operations, and common challenges that you might face when you implement such transformations. The How tf.Transform works section shows how the TensorFlow Transform library helps to address these challenges.
উচ্চ-স্তরের স্থাপত্য
The following diagram, figure 2, shows a high-level architecture of a typical ML pipeline for training and serving TensorFlow models. The labels A, B, and C in the diagram refer to the different places in the pipeline where data preprocessing can take place. Details about these steps are provided in the following section.
The pipeline consists of the following steps:
- After raw data is imported, tabular data is stored in BigQuery, and other data like images, audio, and video, is stored in Cloud Storage. The second part of this series uses tabular data stored in BigQuery as an example.
- Data engineering (preparation) and feature engineering are executed at scale using Dataflow. This execution produces ML-ready training, evaluation, and test sets that are stored in Cloud Storage. Ideally, these datasets are stored as TFRecord files, which is the optimized format for TensorFlow computations.
- A TensorFlow model trainer package is submitted to Vertex AI Training, which uses the preprocessed data from the previous steps to train the model. The output of this step is a trained TensorFlow SavedModel that is exported to Cloud Storage.
- The trained TensorFlow model is deployed to Vertex AI Prediction as a service that has a REST API so that it can be used for online predictions. The same model can also be used for batch prediction jobs.
- After the model is deployed as a REST API, client apps and internal systems can invoke the API by sending requests with some data points, and receiving responses from the model with predictions.
- For orchestrating and automating this pipeline, you can use Vertex AI Pipelines as a scheduler to invoke the data preparation, model training, and model deployment steps.
You can also use Vertex AI Feature Store to store input features to make predictions. For example, you can periodically create engineered features from the latest raw data and store them in Vertex AI Feature Store. Client apps fetch the required input features from Vertex AI Feature Store and send them to the model to receive predictions.
Where to do preprocessing
In figure 2, the labels A, B, and C show that data preprocessing operations can take place in BigQuery, Dataflow, or TensorFlow. The following sections describe how each of these options work.
Option A: BigQuery
Typically, logic is implemented in BigQuery for the following operations:
- Sampling: randomly selecting a subset from the data.
- Filtering: removing irrelevant or invalid instances.
- Partitioning: splitting the data to produce training, evaluation, and test sets.
BigQuery SQL scripts can be used as a source query for the Dataflow preprocessing pipeline, which is the data processing step in figure 2. For example, if a system is used in Canada, and the data warehouse has transactions from around the world, filtering to get Canada-only training data is best done in BigQuery. Feature engineering in BigQuery is simple and scalable, and supports implementing instance-level and historical aggregations feature transformations.
However, we recommend that you use BigQuery for feature engineering only if you use your model for batch prediction (scoring), or if the features are precomputed in BigQuery, but stored in Vertex AI Feature Store to be used during online prediction. If you plan to deploy the model for online predictions, and if you don't have the engineered feature in an online feature store, you have to replicate the SQL preprocessing operations to transform the raw data points that other systems generate. In other words, you need to implement the logic twice: one time in SQL to preprocess training data in BigQuery, and a second time in the logic of the app that consumes the model to preprocess online data points for prediction.
For example, if your client app is written in Java, you need to reimplement the logic in Java. This can introduce errors due to implementation discrepancies, as described in the training-serving skew section of Preprocessing challenges later in this document. It's also extra overhead to maintain two different implementations. Whenever you change the logic in SQL to preprocess the training data, you need to change the Java implementation accordingly to preprocess data at serving time.
If you are using your model only for batch prediction (for example, using Vertex AI batch prediction ), and if your data for scoring is sourced from BigQuery, you can implement these preprocessing operations as part of the BigQuery SQL script. In that case, you can use the same preprocessing SQL script to prepare both training and scoring data.
Full-pass stateful transformations aren't suitable for implementation in BigQuery. If you use BigQuery for full-pass transformations, you need auxiliary tables to store quantities needed by stateful transformations, such as means and variances to scale numerical features. Further, implementation of full-pass transformations using SQL on BigQuery creates increased complexity in the SQL scripts, and creates intricate dependency between training and the scoring SQL scripts.
Option B: Dataflow
As shown in figure 2, you can implement computationally expensive preprocessing operations in Apache Beam, and run them at scale using Dataflow. Dataflow is a fully managed autoscaling service for batch and stream data processing. When you use Dataflow, you can also use external specialized libraries for data processing, unlike BigQuery.
Dataflow can perform instance-level transformations, and historical and real-time aggregation feature transformations. In particular, if your ML models expect an input feature like total_number_of_clicks_last_90sec
, Apache Beam windowing functions can compute these features based on aggregating the values of time windows of real-time (streaming) events data (for example, click events). In the earlier discussion of granularity of transformations , this was referred to as "Historical aggregations during training, but real-time aggregations during prediction."
The following diagram, figure 3, shows the role of Dataflow in processing stream data for near real-time predictions.
As shown in figure 3, during processing, events called data points are ingested into Pub/Sub . Dataflow consumes these data points, computes features based on aggregates over time, and then calls the deployed ML model API for predictions. Predictions are then sent to an outbound Pub/Sub queue. From Pub/Sub, predictions can be consumed by downstream systems like monitoring or control, or they can be pushed back (for example, as notifications) to the original requesting client. Predictions can also be stored in a low-latency data store like Cloud Bigtable for real-time fetching. Cloud Bigtable can also be used to accumulate and store these real-time aggregations so they can be looked up when needed for prediction.
The same Apache Beam implementation can be used to batch-process training data that comes from an offline datastore like BigQuery and stream-process real-time data for serving online predictions.
In other typical architectures, such as the architecture shown in figure 2, the client app directly calls the deployed model API for online predictions. In that case, if preprocessing operations are implemented in Dataflow to prepare the training data, the operations aren't applied to the prediction data that goes directly to the model. Therefore, transformations like these should be integrated in the model during serving for online predictions.
Dataflow can be used to perform full-pass transformation, by computing the required statistics at scale. However, these statistics need to be stored somewhere to be used during prediction to transform prediction data points. By using the TensorFlow Transform ( tf.Transform
) library, you can directly embed these statistics in the model instead of storing them elsewhere. This approach is explained later in How tf.Transform works .
Option C: TensorFlow
As shown in figure 2, you can implement data preprocessing and transformation operations in the TensorFlow model itself. As shown in the figure, the preprocessing that you implement for training the TensorFlow model becomes an integral part of the model when the model is exported and deployed for predictions. Transformations in the TensorFlow model can be accomplished in one of the following ways:
- Implementing all of the instance-level transformation logic in the
input_fn
function and in theserving_fn
function. Theinput_fn
function prepares a dataset using thetf.data.Dataset
API for training a model. Theserving_fn
function receives and prepares the data for predictions. - Putting the transformation code directly in your TensorFlow model by using Keras preprocessing layers or creating custom layers .
The transformation logic code in the serving_fn
function defines the serving interface of your SavedModel for online prediction. If you implement the same transformations that were used for preparing training data in the transformation logic code of the serving_fn
function, it ensures that the same transformations are applied to new prediction data points when they're served.
However, because the TensorFlow model processes each data point independently or in a small batch, you can't calculate aggregations from all data points. As a result, full-pass transformations can't be implemented in your TensorFlow model.
Preprocessing challenges
The following are the primary challenges of implementing data preprocessing:
Training-serving skew . Training-serving skew refers to a difference between effectiveness (predictive performance) during training and during serving. This skew can be caused by a discrepancy between how you handle data in the training and the serving pipelines. For example, if your model is trained on a logarithmically transformed feature, but it's presented with the raw feature during serving, the prediction output might not be accurate.
If the transformations become part of the model itself, it can be straightforward to handle instance-level transformations, as described earlier in Option C: TensorFlow . In that case, the model serving interface (the
serving_fn
function) expects raw data, while the model internally transforms this data before computing the output. The transformations are the same as those that were applied on the raw training and prediction data points.Full-pass transformations . You can't implement full-pass transformations such as scaling and normalization transformations in your TensorFlow model. In full-pass transformations, some statistics (for example,
max
andmin
values to scale numeric features) must be computed on the training data beforehand, as described in Option B: Dataflow . The values then have to be stored somewhere to be used during model serving for prediction to transform the new raw data points as instance-level transformations, which avoids training-serving skew. You can use the TensorFlow Transform (tf.Transform
) library to directly embed the statistics in your TensorFlow model. This approach is explained later in How tf.Transform works .Preparing the data up front for better training efficiency . Implementing instance-level transformations as part of the model can degrade the efficiency of the training process. This degradation occurs because the same transformations are repeatedly applied to the same training data on each epoch. Imagine that you have raw training data with 1,000 features, and you apply a mix of instance-level transformations to generate 10,000 features. If you implement these transformations as part of your model, and if you then feed the model the raw training data, these 10,000 operations are applied N times on each instance, where N is the number of epochs. In addition, if you're using accelerators (GPUs or TPUs), they sit idle while the CPU performs those transformations, which isn't an efficient use of your costly accelerators.
Ideally, the training data is transformed before training, using the technique described under Option B: Dataflow , where the 10,000 transformation operations are applied only once on each training instance. The transformed training data is then presented to the model. No further transformations are applied, and the accelerators are busy all of the time. In addition, using Dataflow helps you to preprocess large amounts of data at scale, using a fully managed service.
Preparing the training data up front can improve training efficiency. However, implementing the transformation logic outside of the model (the approaches described in Option A: BigQuery or Option B: Dataflow ) doesn't resolve the issue of training-serving skew. Unless you store the engineered feature in the feature store to be used for both training and prediction, the transformation logic must be implemented somewhere to be applied on new data points coming for prediction, because the model interface expects transformed data. The TensorFlow Transform (
tf.Transform
) library can help you to address this issue, as described in the following section.
How tf.Transform works
The tf.Transform
library is useful for transformations that require a full pass. The output of the tf.Transform
library is exported as a TensorFlow graph that represents the instance-level transformation logic and the statistics computed from full-pass transformations, to be used for training and serving. Using the same graph for both training and serving can prevent skew, because the same transformations are applied in both stages. In addition, the tf.Transform
library can run at scale in a batch processing pipeline on Dataflow to prepare the training data up front and improve training efficiency.
The following diagram, figure 4, shows how the tf.Transform
library preprocesses and transforms data for training and prediction. The process is described in the following sections.
Transform training and evaluation data
You preprocess the raw training data using the transformation implemented in the tf.Transform
Apache Beam APIs, and run it at scale on Dataflow. The preprocessing occurs in the following phases:
- Analyze phase: During the analyze phase, the required statistics (like means, variances, and quantiles) for stateful transformations are computed on the training data with full-pass operations. This phase produces a set of transformation artifacts, including the
transform_fn
graph. Thetransform_fn
graph is a TensorFlow graph that has the transformation logic as instance-level operations. It includes the statistics computed in the analyze phase as constants. - Transform phase: During the transform phase, the
transform_fn
graph is applied to the raw training data, where the computed statistics are used to process the data records (for example, to scale numerical columns) in an instance-level fashion.
A two-phase approach like this addresses the preprocessing challenge of performing full-pass transformations.
When the evaluation data is preprocessed, only instance-level operations are applied, using the logic in the transform_fn
graph and the statistics computed from the analyze phase in the training data. In other words, you don't analyze the evaluation data in a full-pass fashion to compute new statistics, such as μ and σ, to normalize numeric features in evaluation data. Instead, you use the computed statistics from the training data to transform the evaluation data in an instance-level fashion.
The transformed training and evaluation data are prepared at scale using Dataflow, before they are used to train the model. This batch data-preparation process addresses the preprocessing challenge of preparing the data up front to improve training efficiency. As shown in figure 4, the model internal interface expects transformed features.
Attach transformations to the exported model
As noted, the transform_fn
graph that's produced by the tf.Transform
pipeline is stored as an exported TensorFlow graph. The exported graph consists of the transformation logic as instance-level operations, and all of the statistics computed in the full-pass transformations as graph constants. When the trained model is exported for serving, the transform_fn
graph is attached to the SavedModel as part of its serving_fn
function.
While it's serving the model for prediction, the model serving interface expects data points in the raw format (that is, before any transformations). However, the model internal interface expects the data in the transformed format.
The transform_fn
graph, which is now part of the model, applies all the preprocessing logic on the incoming data point. It uses the stored constants (like μ and σ to normalize the numeric features) in the instance-level operation during prediction. Therefore, the transform_fn
graph converts the raw data point into the transformed format. The transformed format is what is expected by the model internal interface in order to produce prediction, as shown in figure 4.
This mechanism resolves the preprocessing challenge of the training-serving skew, because the same logic (implementation) that is used to transform the training and evaluation data is applied to transform the new data points during prediction serving.
Preprocessing options summary
The following table summarizes the data preprocessing options that this document discussed. In the table, "N/A" stands for "not applicable."
Data preprocessing option | Instance-level (stateless transformations) | Full-pass during training and instance-level during serving (stateful transformations) | Real-time (window) aggregations during training and serving (streaming transformations) |
---|---|---|---|
BigQuery (SQL) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. | Batch scoring: Not recommended . Online prediction: Not recommended . Although you can use statistics computed using BigQuery for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not recommended —you can process training data, but it results in training-serving skew because you process serving data using different tools. |
Dataflow (Apache Beam) | Batch scoring: OK —the same transformation implementation is applied on data during training and batch scoring. Online prediction: OK —if data at serving time comes from Pub/Sub to be consumed by Dataflow. Otherwise, results in training-serving skew. | Batch scoring: Not recommended . Online predictions: Not recommended . Although you can use statistics computed using Dataflow for instance-level batch/online transformations, it isn't easy because you must maintain a stats store to be populated during training and used during prediction. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
Dataflow (Apache Beam + TFT) | Batch scoring: OK —the same transformation implementation is applied to data during training and batch scoring. Online prediction: Recommended —it avoids training-serving skew and prepares training data up front. | Batch scoring: Recommended . Online prediction: Recommended . Both uses are recommended because transformation logic and computed statistics during training are stored as a TensorFlow graph that's attached to the exported model for serving. | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: OK —the same Apache Beam transformation is applied on data during training (batch) and serving (stream). |
TensorFlow * | Batch scoring: Not recommended . Online prediction: Not recommended . For training efficiency in both cases, it's better to prepare the training data up front. | Batch scoring: Not Possible . Online prediction: Not Possible . | Batch scoring: N/A —aggregates like these are computed based on real-time events. Online prediction: Not Possible . |
* With TensorFlow, transformations like crossing, embedding, and one-hot encoding should be performed declaratively as feature_columns
columns.
এরপর কি
- To implement a
tf.Transform
pipeline and run it using Dataflow, read part two of this series, Data preprocessing for ML using TensorFlow Transform . - Take the Coursera specialization on ML with TensorFlow on Google Cloud .
- Learn about best practices for ML engineering in Rules of ML .
- For more reference architectures, diagrams, and best practices, explore the TFX Cloud Solutions .