هيلو سڀ! مان CROC ۾ CV ڊولپر آهيان. اسان 3 سالن کان CV جي ميدان ۾ منصوبن تي عمل ڪري رهيا آهيون. ان دوران، اسان ڪيتريون ئي شيون ڪيون، مثال طور: اسان ڊرائيورن جي نگراني ڪئي ته جيئن ڊرائيونگ دوران اهي نه پيئندا، تماڪ نه پيون، فون تي نه ڳالهائي، روڊ ڏانهن نه ڏسن، ۽ نه خوابن يا بادلن تي. ؛ اسان انهن ماڻهن کي رڪارڊ ڪيو جيڪي وقف ٿيل لينن ۾ ڊرائيو ڪندا آهن ۽ ڪيترن ئي پارڪنگ جا هنڌ کڻندا آهن؛ انهي ڳالهه کي يقيني بڻايو وڃي ته مزدور هيلمٽ، دستانا، وغيره. هڪ ملازم کي سڃاڻي ٿو جيڪو سهولت ۾ داخل ٿيڻ چاهي ٿو؛ اسان سڀ ڪجهه ڳڻيندا هئاسين.
مان هي سڀ ڇا لاءِ ڪري رهيو آهيان؟
پروجيڪٽ تي عمل ڪرڻ جي عمل ۾، اسان کي ڌڪ لڳندا آهن، تمام گهڻو ڌڪ، ڪجهه مسئلا جيڪي توهان يا ته واقف آهيو يا مستقبل ۾ واقف ٿي ويندا.
اچو ته صورتحال کي نقل ڪريون
اچو ته تصور ڪريو ته اسان کي هڪ نوجوان ڪمپني “N” ۾ نوڪري ملي آهي، جنهن جون سرگرميون ML سان لاڳاپيل آهن. اسان هڪ ML (DL، CV) پروجيڪٽ تي ڪم ڪريون ٿا، پوءِ ڪنهن سبب جي ڪري اسان ٻئي نوڪري ڏانهن رخ ڪريون ٿا، عام طور تي هڪ وقفو وٺون ٿا، ۽ پنهنجي يا ڪنهن ٻئي جي نيورون ڏانهن واپس وڃون ٿا.
سچائي جو لمحو اچي ٿو، توهان کي ڪنهن به طرح ياد رکڻ جي ضرورت آهي ته توهان ڪٿي روڪيو، توهان ڪهڙي هائپرپراميٽر جي ڪوشش ڪئي ۽، سڀ کان اهم، انهن جا نتيجا ڪهڙا آهن. اتي ڪيترائي اختيار ٿي سگھن ٿا جن سڀني لانچن تي معلومات محفوظ ڪئي: ھيڊ ۾، ترتيب، نوٽ پيڊ، ڪلائوڊ ۾ ڪم ڪندڙ ماحول ۾. مون کي هڪ اختيار ڏسڻ ۾ آيو جڏهن هائپرپراميٽرز کي ڪوڊ ۾ تبصري لائنن جي طور تي ذخيرو ڪيو ويو، عام طور تي، فينسي جي پرواز. ھاڻي تصور ڪريو ته توھان پنھنجي پروجيڪٽ ڏانھن واپس نه آيا آھيو، پر ھڪڙي شخص جي پروجيڪٽ ڏانھن جنھن ڪمپني ڇڏي آھي ۽ توھان کي وراثت ۾ ھڪڙو ڪوڊ ۽ ھڪڙو ماڊل مليو آھي جنھن کي model_1.pb سڏيو ويندو آھي. تصوير کي مڪمل ڪرڻ ۽ سڀني دردن کي پهچائڻ لاء، اچو ته تصور ڪريو ته توهان پڻ هڪ ابتدائي ماهر آهيو.
اڳتي وڃو. ڪوڊ کي هلائڻ لاءِ، اسان ۽ هر ڪو جيڪو ان سان گڏ ڪم ڪندو، ماحول ٺاهڻ جي ضرورت آهي. اهو اڪثر ٿئي ٿو ته ڪنهن سبب جي ڪري هن کي اسان جي ميراث طور نه ڇڏيو آهي. اهو پڻ هڪ غير معمولي ڪم بڻجي سگهي ٿو. توهان هن قدم تي وقت ضايع ڪرڻ نٿا چاهيو، ڇا توهان؟
اسان هڪ ماڊل ٽريننگ (مثال طور، هڪ ڪار detector). اسان ان نقطي تي پهتا آهيون جتي اهو تمام سٺو ٿي ويندو آهي - اهو نتيجو بچائڻ جو وقت آهي. اچو ته ان کي سڏين car_detection_v1.pb. ان کان پوء اسان هڪ ٻئي کي ٽرين ڪندا آهيون - car_detection_v2.pb. ڪجهه وقت کان پوء، اسان جا ساٿي يا اسان پاڻ کي وڌيڪ سيکاريندا آهيون، مختلف فن تعمير کي استعمال ڪندي. نتيجي طور، نمونن جو ھڪڙو گروپ ٺھيل آھي، جنھن بابت ڄاڻ ڏاڍي محنت سان گڏ ڪرڻ گھرجي (پر اسان اھو بعد ۾ ڪنداسين، ڇاڪاڻتہ ھاڻي اسان وٽ وڌيڪ ترجيحات آھن).
ٺيڪ آهي هاڻي سڀ ختم ٿي ويو آهي! اسان وٽ ھڪڙو نمونو آھي! ڇا اسان ايندڙ ماڊل جي تربيت شروع ڪري سگھون ٿا، نئين مسئلي کي حل ڪرڻ لاءِ فن تعمير کي ترقي ڪري سگھون ٿا، يا ڇا اسان چانهه پيئڻ لاءِ وڃي سگھون ٿا؟ ۽ ڪير مقرر ڪندو؟
مسئلن جي نشاندهي ڪرڻ
هڪ منصوبي يا پيداوار تي ڪم ڪرڻ ڪيترن ئي ماڻهن جو ڪم آهي. ۽ وقت سان گڏ، ماڻهو ڇڏيندا آهن ۽ ايندا آهن، اتي وڌيڪ منصوبا آهن، ۽ منصوبا پاڻ کي وڌيڪ پيچيده ٿي ويندا آهن. هڪ طريقو يا ٻيو، مٿي بيان ڪيل چڪر مان حالتون (۽ نه رڳو) ڪجهه خاص مجموعن ۾ iteration کان iteration تائين ٿينديون. هي سڀ نتيجا ضايع ٿيڻ وقت، مونجهارو، اعصاب، ممڪن طور تي گراهڪ جي عدم اطمينان، ۽ آخرڪار، گم ٿيل پئسا. جيتوڻيڪ اسان سڀ عام طور تي ساڳئي پراڻي ريڪ جي پيروي ڪندا آهيون، مون کي يقين آهي ته ڪو به انهن لمحن کي ٻيهر بار بار ڪرڻ نه چاهيندو آهي.
تنهن ڪري، اسان هڪ ترقي جي چڪر مان گذري چڪا آهيون ۽ اسان ڏسون ٿا ته اهڙا مسئلا آهن جن کي حل ڪرڻ جي ضرورت آهي. هن کي ڪرڻ لاء توهان کي ضرورت آهي:
آساني سان ڪم جا نتيجا ذخيرو؛
نون ملازمن کي شامل ڪرڻ جي عمل کي سادو بڻايو؛
ترقياتي ماحول کي ترتيب ڏيڻ جي عمل کي آسان بڻائي؛
ماڊل ورجننگ جي عمل کي ترتيب ڏيو؛
ماڊل جي تصديق ڪرڻ لاء هڪ آسان طريقو آهي؛
ھڪڙي نموني رياست جي انتظام جو اوزار ڳولھيو؛
پيداوار لاء ماڊل پهچائڻ جو هڪ طريقو ڳوليو.
ظاهري طور تي اهو ضروري آهي ته هڪ ڪم فلو سان گڏ اچي جيڪا توهان کي آساني سان ۽ آساني سان هن زندگي جي چڪر کي منظم ڪرڻ جي اجازت ڏئي ٿي؟ اهو مشق MLOps سڏيو ويندو آهي
MLOps، يا مشين لرننگ لاءِ DevOps، ڊيٽا سائنس ۽ آئي ٽي ٽيمن کي اجازت ڏئي ٿو ته تعاون ڪرڻ ۽ ماڊل ڊولپمينٽ جي رفتار کي وڌائڻ ۽ مشيني سکيا جي ماڊلز جي نگراني، تصديق، ۽ گورننس ذريعي.
توهان ڪري سگهو ٿا پڙهوگوگل وارن جو ڇا خيال آهي ان بابت؟ مضمون مان اهو واضح ٿئي ٿو ته MLOps هڪ وڏي شيء آهي.
وڌيڪ منهنجي مضمون ۾ آئون صرف پروسيس جو حصو بيان ڪندس. عمل درآمد لاء، مان استعمال ڪندس MLflow اوزار، ڇاڪاڻ ته ... هي هڪ اوپن سورس پروجيڪٽ آهي، ڳنڍڻ لاءِ ٿورڙي مقدار جو ڪوڊ گهربل آهي ۽ مشهور ايم ايل فريم ورڪ سان انضمام آهي. توھان انٽرنيٽ تي ٻين اوزارن جي ڳولا ڪري سگھو ٿا، جھڙوڪ Kubeflow، SageMaker، Trains، وغيره، ۽ شايد ھڪڙو ڳولھيو جيڪو توھان جي ضرورتن کي بھتر ڪري.
"بلڊنگ" MLOps استعمال ڪندي مثال طور استعمال ڪندي MLFlow اوزار
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
سروس ٻيهر شروع ڪريو
$ sudo systemctl restart sshd
هڪ جيئن پس منظر اسٽور اچو ته وٺو postgresql.
$ sudo apt update
$ sudo apt-get install -y postgresql postgresql-contrib postgresql-server-dev-all
$ sudo apt install gcc
$ pip install psycopg2
$ sudo -u postgres -i
# Create new user: mlflow_user
[postgres@user_name~]$ createuser --interactive -P
Enter name of role to add: mlflow_user
Enter password for new role: mlflow
Enter it again: mlflow
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
# Create database mlflow_bd owned by mlflow_user
$ createdb -O mlflow_user mlflow_db
سرور کي شروع ڪرڻ لاءِ، توھان کي ھيٺين پيٿون پيڪيجز کي انسٽال ڪرڻ جي ضرورت آھي (آءٌ ھڪ الڳ ورچوئل ماحول ٺاھڻ جي صلاح ڏيان ٿو):
ان لاءِ ته اسان جي تربيت جا نتيجا ضايع نه ٿين، ڊولپرز جي ايندڙ نسلن کي اهو سمجھڻ لاءِ ته ڇا ٿي رهيو آهي، ۽ پراڻن ڪامريڊن ۽ توهان لاءِ سکيا جي عمل کي آرام سان تجزيو ڪرڻ جي قابل ٿي وڃڻ لاءِ، اسان کي ٽريڪنگ شامل ڪرڻ جي ضرورت آهي. ٽريڪنگ جو مطلب آهي پيٽرول، ميٽرڪس، نمونن ۽ تربيت جي شروعات بابت ڪا به اضافي معلومات محفوظ ڪرڻ، اسان جي صورت ۾، سرور تي.
مثال طور، مون هڪ ننڍڙو ٺاهيو github تي منصوبو هر شي کي ورهائڻ لاءِ ڪيراس تي COCO ڊيٽا سيٽ. ٽريڪنگ شامل ڪرڻ لاءِ، مون ھڪڙي فائل ٺاھيو mlflow_training.py.
def run(self, epochs, lr, experiment_name):
# getting the id of the experiment, creating an experiment in its absence
remote_experiment_id = self.remote_server.get_experiment_id(name=experiment_name)
# creating a "run" and getting its id
remote_run_id = self.remote_server.get_run_id(remote_experiment_id)
# indicate that we want to save the results on a remote server
mlflow.set_tracking_uri(self.tracking_uri)
mlflow.set_experiment(experiment_name)
with mlflow.start_run(run_id=remote_run_id, nested=False):
mlflow.keras.autolog()
self.train_pipeline.train(lr=lr, epochs=epochs)
try:
self.log_tags_and_params(remote_run_id)
except mlflow.exceptions.RestException as e:
print(e)
هتي self.remote_server mlflow.tracking طريقن تي هڪ ننڍڙو ڍڪ آهي. mlflowClient (مون ان کي سهولت لاءِ ٺاهيو آهي)، جنهن جي مدد سان مان هڪ تجربو ٺاهيان ٿو ۽ ان کي سرور تي هلائي ٿو. اڳيون، مان اشارو ڪريان ٿو ته ڪٿي لانچ جا نتيجا ملائڻ گهرجن (mlflow.set_tracking_uri(self.tracking_uri)). مان خودڪار لاگنگ کي فعال ڪريان ٿو mlflow.keras.autolog(). في الحال MLflow ٽريڪنگ TensorFlow، Keras، Gluon XGBoost، LightGBM، Spark لاءِ خودڪار لاگنگ کي سپورٽ ڪري ٿي. جيڪڏهن توهان کي پنهنجو فريم ورڪ يا لائبريري نه ملي آهي، ته توهان هميشه واضح طور تي لاگ ان ڪري سگهو ٿا. اسان تربيت شروع ڪري رهيا آهيون. ريموٽ سرور تي ٽيگ ۽ ان پٽ پيٽرول رجسٽر ڪريو.
ڪجھ لائينون ۽ توھان، ٻين وانگر، سڀني لانچن بابت معلومات تائين رسائي حاصل ڪريو. عمده؟
3. اسان پروجيڪٽ ٺاھيو
هاڻي اچو ته منصوبي کي شروع ڪرڻ آسان بڻائي. هن کي ڪرڻ لاء، شامل ڪريو MLproject ۽ conda.yaml فائل پروجيڪٽ جي روٽ ۾.
ايم ايل پروجيڪٽ
هتي self.registry وري mlflow.tracking.MlflowClient تي هڪ ننڍڙو لفافي آهي، سهولت لاءِ. نقطو اهو آهي ته مان هڪ ريموٽ سرور تائين رسائي ڪريان ٿو ۽ اتي هڪ نموني ڳولي رهيو آهيان مخصوص نالي سان، ۽ جديد پيداوار وارو نسخو. اڳيون، مان آرٽيڪل کي مقامي طور تي ./model فولڊر ۾ ڊائون لوڊ ڪريان ٿو ۽ هن ڊاريڪٽري مان ماڊل ٺاهيو mlflow.keras.load_model(local_path). هاڻي اسان کي اسان جي ماڊل استعمال ڪري سگهو ٿا. CV (ML) ڊولپرز آساني سان ماڊل کي بهتر ڪري سگھن ٿا ۽ نوان ورزن شايع ڪري سگھن ٿا.
نتيجو
مون هڪ سسٽم پيش ڪيو جيڪو اجازت ڏئي ٿو:
مرڪزي طور تي ايم ايل ماڊلز، تربيتي پيش رفت ۽ نتيجن بابت معلومات کي ذخيرو ڪرڻ؛
جلدي ترقي جي ماحول کي ترتيب ڏيو؛
مانيٽر ۽ ماڊل تي ڪم جي ترقي جو تجزيو؛
اهو نسخو ڪرڻ آسان آهي ۽ ماڊل جي حالت کي منظم ڪرڻ؛
اهو نتيجو ماڊل کي ترتيب ڏيڻ آسان آهي.
هي مثال هڪ رانديڪو آهي ۽ توهان جي پنهنجي سسٽم جي تعمير لاء هڪ شروعاتي نقطي جي طور تي ڪم ڪري ٿو، جنهن ۾ شامل ٿي سگھي ٿو آٽوميشن جي نتيجن جي تشخيص ۽ ماڊل جي رجسٽريشن (پوائنٽ 5 ۽ 6، ترتيب سان) يا توهان ڊيٽا سيٽن جي ورزننگ شامل ڪندا، يا شايد ڪجهه ٻيو؟ اهو نقطو جيڪو مان ٺاهڻ جي ڪوشش ڪري رهيو هو اهو آهي ته توهان کي مجموعي طور تي MLOps جي ضرورت آهي، MLflow صرف هڪ وسيلو آهي ختم ٿيڻ جو.
لکو ته توهان کي ڪهڙيون مشڪلاتون پيش آيون جيڪي مون ظاهر نه ڪيون؟
توهان سسٽم ۾ ڇا شامل ڪندا ته اهو توهان جي ضرورتن کي پورو ڪرڻ لاء؟
مسئلن جي سڀني يا حصي کي حل ڪرڻ لاءِ توهان ڪهڙن اوزار ۽ طريقا استعمال ڪندا آهيو؟
اسان جي ڪمپني وقتي طور تي آئي ٽي ماهرن لاءِ مختلف واقعن جي ميزباني ڪندي آهي، مثال طور: 8 جولاءِ تي 19:00 ماسڪو وقت تي هڪ آن لائن فارميٽ ۾ هڪ CV ملاقات ٿيندي، جيڪڏهن توهان دلچسپي رکو ٿا، توهان حصو وٺي سگهو ٿا، رجسٽريشن هتي .