د صنعتي ماشین زده کړه: د ډیزاین 10 اصول

د صنعتي ماشین زده کړه: د ډیزاین 10 اصول

نن ورځ ، هره ورځ نوي خدمات ، غوښتنلیکونه او نور مهم برنامې رامینځته کیږي چې د نه منلو وړ شیانو رامینځته کول امکان لري: د سپیس ایکس راکټ کنټرول لپاره سافټویر څخه د سمارټ فون له لارې په راتلونکي خونه کې د کیتلي سره متقابل عمل.

او، کله ناکله، هر نوښتګر پروګرامر، که هغه په ​​زړه پوری پیل کونکی وي یا یو عادي بشپړ سټیک یا ډیټا ساینس پوه، ژر یا وروسته دا احساس ته راځي چې د پروګرام کولو او سافټویر جوړولو لپاره ځینې مقررات شتون لري چې ژوند خورا ساده کوي.

په دې مقاله کې، زه به په لنډه توګه د صنعتي ماشین زده کړې پروګرام کولو 10 اصول تشریح کړم ترڅو دا د 12 فاکتور اپلیکیشن میتودولوژي پراساس په اسانۍ سره په غوښتنلیک/خدمت کې مدغم شي. د هیروکو ټیم لخوا وړاندیز شوی. زما نوښت د دې تخنیک په اړه د پوهاوي لوړولو لپاره دی، کوم چې کولی شي د ډیرو پراختیا کونکو او ډیټا ساینس خلکو سره مرسته وکړي.

دا مقاله د صنعتي ماشین زده کړې په اړه د مقالو یو لړ لړۍ ده. په دوی کې به زه د دې په اړه نور هم وغږیږم چې څنګه واقعیا ماډل رامینځته کړئ او تولید ته یې پیل کړئ ، د دې لپاره API رامینځته کړئ ، په بیله بیا د مختلف ساحو او شرکتونو مثالونه چې د دوی په سیسټمونو کې ML جوړ کړي.

اصول 1: د کوډ اساس

ځینې ​​​​پروګرام کونکي په لومړي مرحلو کې ، د سستۍ څخه د دې معلومولو لپاره (یا د دوی د ځینې دلیلونو لپاره) ، د ګیټ په اړه هیر کړي. دوی یا په بشپړ ډول دا کلمه هیروي ، دا دا دی چې دوی په ډرایو کې یو بل ته فایلونه غورځوي / یوازې متن وغورځوي / د کبوتر لخوا لیږل کیږي ، یا دوی د خپل کاري جریان له لارې فکر نه کوي ، او هر یو یې خپلې څانګې ته ژمن کوي ​​، او بیا ماسټر

دا اصول وايي: یو کوډبیس او ډیری ځای پرځای کول.

Git دواړه په تولید او تحقیق او پراختیا (R&D) کې کارول کیدی شي ، په کوم کې چې دا دومره ځله نه کارول کیږي.

د مثال په توګه ، د R&D مرحله کې تاسو کولی شئ د مختلف ډیټا پروسس کولو میتودونو او ماډلونو سره ژمنې پریږدئ ، د دې لپاره چې بیا غوره غوره کړئ او په اسانۍ سره یې نور کار کولو ته دوام ورکړئ.

دوهم، په تولید کې دا یو نه بدلیدونکی شی دی - تاسو به په دوامداره توګه وګورئ چې ستاسو کوډ څنګه بدلیږي او پوه شئ چې کوم ماډل غوره پایلې تولیدوي، کوم کوډ په پای کې کار کړی او څه پیښ شوي چې د دې لامل شوی چې کار بند کړي یا د غلطو پایلو تولید پیل کړي. . دا هغه څه دي چې ژمنې یې کوي!

تاسو کولی شئ د خپلې پروژې یوه بسته هم جوړه کړئ، د مثال په توګه، په Gemfury کې یې ځای په ځای کړئ، او بیا په ساده ډول د نورو پروژو لپاره له هغې څخه فعالیتونه وارد کړئ، ترڅو دوی 1000 ځله بیا ولیکئ، مګر وروسته یې نور هم.

2 اصل: په واضح ډول د انحصار اعلان او جلا کول

هره پروژه مختلف کتابتونونه لري چې تاسو یې له بهر څخه واردوئ ترڅو چیرې یې پلي کړئ. که دا د Python کتابتونونه وي، یا د مختلفو موخو لپاره د نورو ژبو کتابتونونه، یا د سیسټم وسایل - ستاسو دنده دا ده:

  • په واضح ډول انحصار اعلان کړئ، دا هغه فایل دی چې ټول کتابتونونه، اوزار، او د دوی نسخې به ولري چې ستاسو په پروژه کې کارول کیږي او باید نصب شي (د مثال په توګه، په Python کې دا د Pipfile یا requirements.txt په کارولو سره ترسره کیدی شي. لینک چې ښه پوهیدو ته اجازه ورکوي: realpython.com/pipenv-guide)
  • انحصارونه جلا کړئ په ځانګړي توګه ستاسو د برنامې لپاره د پراختیا پرمهال. تاسو نه غواړئ په دوامداره توګه نسخې بدل کړئ او بیا نصب کړئ، د بیلګې په توګه، Tensorflow؟

پدې توګه ، پراختیا کونکي چې په راتلونکي کې به ستاسو ټیم سره یوځای شي د دې وړتیا ولري چې ژر تر ژره د کتابتونونو او د دوی نسخو سره آشنا شي چې ستاسو په پروژه کې کارول کیږي ، او تاسو به دا فرصت هم ولرئ چې پخپله د ځانګړي لپاره نصب شوي نسخې او کتابتونونه اداره کړئ. پروژه، کوم چې به تاسو سره د کتابتونونو یا د دوی نسخو د ناانډولۍ مخنیوي کې مرسته وکړي.

ستاسو غوښتنلیک باید د سیسټم وسیلو باندې تکیه ونکړي کوم چې ممکن په ځانګړي OS کې نصب شي. دا وسیلې باید د انحصاراتو په منشور کې هم اعلان شي. دا اړینه ده چې د داسې شرایطو څخه مخنیوی وشي چیرې چې د وسیلو نسخه (په بیله بیا د دوی شتون) د ځانګړي OS سیسټم وسیلو سره سمون نه لري.

په دې توګه، حتی که curl په نږدې ټولو کمپیوټرونو کې کارول کیدی شي، تاسو باید لاهم دا په انحصار کې اعلان کړئ، ځکه چې کله بل پلیټ فارم ته مهاجرت ممکن هلته نه وي یا نسخه به هغه نه وي چې تاسو ورته اړتیا لرئ.

د مثال په توګه، ستاسو د اړتیاو.txt کیدای شي داسې ښکاري:

# Model Building Requirements
numpy>=1.18.1,<1.19.0
pandas>=0.25.3,<0.26.0
scikit-learn>=0.22.1,<0.23.0
joblib>=0.14.1,<0.15.0

# testing requirements
pytest>=5.3.2,<6.0.0

# packaging
setuptools>=41.4.0,<42.0.0
wheel>=0.33.6,<0.34.0

# fetching datasets
kaggle>=1.5.6,<1.6.0

درېیم اصل: تشکیلات

ډیری د مختلف پرمختلونکو هلکانو کیسې اوریدلي چې په ناڅاپي ډول د AWS څخه د پاسورډونو او نورو کیليونو سره GitHub ته کوډ په عامه ذخیره کې اپلوډ کوي ، بله ورځ د $ 6000، یا حتی $ 50000 پور سره ویښ کیږي.

د صنعتي ماشین زده کړه: د ډیزاین 10 اصول

البته، دا قضیې خورا سخت دي، مګر خورا مهم دي. که تاسو خپل اسناد یا نور معلومات د کوډ دننه د ترتیب کولو لپاره اړین وساتئ، تاسو غلطي کوئ، او زه فکر کوم چې اړتیا نشته چې ولې تشریح کړئ.

د دې لپاره یو بدیل د چاپیریال متغیرونو کې د ترتیبونو ذخیره کول دي. تاسو کولی شئ د چاپیریال تغیراتو په اړه نور ولولئ دلته.

د ډیټا مثالونه چې عموما د چاپیریال متغیرونو کې زیرمه شوي دي:

  • د ډومین نومونه
  • API URLs/URIs
  • عامه او شخصي کیلي
  • اړیکې (میل، تلیفونونه، او نور)

پدې توګه تاسو اړتیا نلرئ په دوامداره توګه کوډ بدل کړئ که ستاسو د تشکیلاتو تغیرات بدل شي. دا به ستاسو سره د وخت، هڅو او پیسو خوندي کولو کې مرسته وکړي.

د مثال په توګه، که تاسو د ازموینې ترسره کولو لپاره Kaggle API کاروئ (د مثال په توګه، سافټویر ډاونلوډ کړئ او د هغې له لارې ماډل چل کړئ ترڅو ازموینه وکړي کله چې موډل ښه کار کوي)، نو د کاګل شخصي کیلي، لکه KAGGLE_USERNAME او KAGGLE_KEY، باید وي په چاپیریال متغیرونو کې ساتل کیږي.

4 اصل: د دریمې ډلې خدمتونه

دلته نظر دا دی چې برنامه په داسې ډول رامینځته کړئ چې د کوډ په شرایطو کې د ځایی او دریمې ډلې سرچینو ترمینځ هیڅ توپیر شتون نلري. د مثال په توګه، تاسو کولی شئ دواړه محلي MySQL او دریمې ډلې سره وصل کړئ. ورته د مختلف APIs لکه ګوګل نقشې یا ټویټر API لپاره ځي.

د دې لپاره چې د دریمې ډلې خدمت غیر فعال کړئ یا بل سره وصل کړئ ، تاسو اړتیا لرئ د چاپیریال متغیرونو کې په ترتیب کې کلیدونه بدل کړئ ، کوم چې ما په پورتنۍ پراګراف کې خبرې وکړې.

نو ، د مثال په توګه ، د دې پرځای چې هر ځل د کوډ دننه ډیټاسیټونو سره فایلونو ته لاره مشخصه کړئ ، دا غوره ده چې د pathlib کتابتون وکاروئ او په config.py کې ډیټاسیټونو ته لاره اعلان کړئ ، نو دا مهمه نده چې تاسو کوم خدمت وکاروئ (د دې لپاره د مثال په توګه، CircleCI)، برنامه وتوانېده چې په نوي خدمت کې د نوي فایل سیسټم جوړښت په پام کې نیولو سره ډیټاسیټونو ته لاره ومومي.

اصول 5. جوړول، خوشې کول، د چلولو وخت

د ډیټا ساینس کې ډیری خلک د دوی د سافټویر لیکلو مهارتونو ته وده ورکولو لپاره ګټور دي. که موږ غواړو چې زموږ برنامه په ندرت سره د امکان تر حده خرابه شي او د امکان تر حده پورې د ناکامۍ پرته کار وکړي ، نو موږ اړتیا لرو د نوي نسخې خوشې کولو پروسه په 3 مرحلو ویشو:

  1. مرحله مجلسونه. تاسو خپل کوډ کوډ د انفرادي سرچینو سره په یوه تش په نامه بسته کې بدل کړئ چې ټول اړین کوډ او ډاټا لري. دا کڅوړه د مجلس په نوم یادیږي.
  2. مرحله خوشې کول - دلته موږ خپل تشکیل له مجلس سره وصل کوو ، پرته لدې چې موږ نشو کولی خپل برنامه خوشې کړو. اوس دا په بشپړ ډول د لانچ لپاره چمتو دی.
  3. بل مرحله راځي تکمیل. دلته موږ زموږ له خوشې کیدو څخه د اړینو پروسو په چلولو سره غوښتنلیک خوشې کوو.

د ماډل یا بشپړ پایپ لاین نوي نسخې خوشې کولو لپاره دا ډول سیسټم تاسو ته اجازه درکوي د مدیرانو او پراختیا کونکو ترمینځ رولونه جلا کړئ ، تاسو ته اجازه درکوي نسخې تعقیب کړئ او د برنامې ناغوښتل بندیدو مخه ونیسئ.

د خوشې کولو دندې لپاره، ډیری مختلف خدمتونه رامینځته شوي چې تاسو کولی شئ د خپل ځان په .yml فایل کې د چلولو لپاره پروسې ولیکئ (د مثال په توګه، په CircleCI کې دا د پروسې ملاتړ کولو لپاره config.yml دی). Wheely د پروژو لپاره د کڅوړو په جوړولو کې خورا ښه دی.

تاسو کولی شئ د خپل ماشین زده کړې ماډل مختلف نسخو سره کڅوړې رامینځته کړئ ، او بیا یې بسته کړئ او اړین کڅوړې او د دوی نسخو ته مراجعه وکړئ ترڅو هغه افعال وکاروئ چې تاسو یې له هغه ځایه لیکلي. دا به تاسو سره ستاسو د ماډل لپاره API رامینځته کولو کې مرسته وکړي ، او ستاسو کڅوړه په Gemfury کې کوربه کیدی شي ، د مثال په توګه.

اصول 6. خپل ماډل د یو یا ډیرو پروسو په توګه پرمخ وړئ

سربیره پردې، پروسې باید شریک شوي معلومات ونه لري. دا دی، پروسې باید په جلا توګه شتون ولري، او هر ډول ډاټا باید په جلا توګه شتون ولري، د بیلګې په توګه، د دریمې ډلې خدماتو لکه MySQL یا نورو کې، د هغه څه پورې اړه لري چې تاسو ورته اړتیا لرئ.

دا په حقیقت کې د پروسې فایل سیسټم کې د معلوماتو ذخیره کولو ارزښت نلري ، که نه نو دا ممکن د راتلونکي خوشې کولو / تشکیلاتو بدلون یا د سیسټم لیږد په جریان کې د دې معلوماتو پاکولو لامل شي چې برنامه پرمخ ځي.

مګر یو استثنا شتون لري: د ماشین زده کړې پروژې لپاره، تاسو کولی شئ د کتابتونونو زیرمه ذخیره کړئ ترڅو هرکله چې تاسو نوې نسخه پیل کړئ نو بیا یې نصب نه کړئ، که چیرې اضافي کتابتونونه یا د دوی نسخو کې کوم بدلون نه وي راغلی. پدې توګه ، تاسو به هغه وخت کم کړئ چې دا په صنعت کې ستاسو ماډل پیل کولو لپاره اخلي.

د څو پروسو په توګه د ماډل چلولو لپاره، تاسو کولی شئ یو .yml فایل جوړ کړئ په کوم کې چې تاسو اړین پروسې او د دوی ترتیب مشخص کړئ.

7 اصول: د بیا کارولو وړتیا

هغه پروسې چې ستاسو د ماډل غوښتنلیک کې پرمخ ځي باید پیل او ودرول اسانه وي. په دې توګه، دا به تاسو ته اجازه درکړي چې ژر تر ژره د کوډ بدلونونه، د ترتیب کولو بدلونونه، په چټکه او انعطاف سره اندازه کړئ، او د کاري نسخې د احتمالي خرابیدو مخه ونیسئ.

دا د ماډل سره ستاسو پروسه باید:

  • د پیل وخت کم کړئ. په عین حال کې، د پیل وخت (له هغه شیبې څخه چې د پیل کولو قومانده خپره شوې وه هغه شیبې پورې چې پروسه په عمل کې راځي) باید د څو ثانیو څخه ډیر نه وي. د کتابتون کیشینګ، پورته تشریح شوی، د پیل کولو وخت کمولو لپاره یو تخنیک دی.
  • په سمه توګه پای ته ورسوئ. دا دی ، د خدماتو بندر کې اوریدل واقعیا ځنډول شوي ، او دې بندر ته سپارل شوي نوي غوښتنې به پروسس نشي. دلته تاسو اړتیا لرئ د DevOps انجینرانو سره ښه اړیکه تنظیم کړئ ، یا پوه شئ چې دا څنګه پخپله کار کوي (په غوره توګه ، البته ، وروستی ، مګر اړیکه باید تل وساتل شي ، په هره پروژه کې!)

8 اصول: پرله پسې ګمارنه / ادغام

ډیری شرکتونه د غوښتنلیک پراختیا او پلي کولو ټیمونو ترمینځ جلا کول کاروي (د غوښتنلیک پای کاروونکو ته چمتو کول). دا کولی شي د سافټویر پراختیا او د هغې په ښه کولو کې پرمختګ ورو کړي. دا د DevOps کلتور هم خرابوي ، چیرې چې پراختیا او ادغام په نږدې ډول ویل کیږي ، ګډ دي.

له همدې امله، دا اصول وايي چې ستاسو د پراختیا چاپیریال باید ستاسو د تولید چاپیریال سره څومره ممکنه وي.

دا به اجازه ورکړي:

  1. د خوشې کولو وخت په لسګونو ځله کم کړئ
  2. د کوډ نه مطابقت له امله د غلطیو شمیر کم کړئ.
  3. دا په کارمندانو باندې د کار بار هم کموي، ځکه چې پراختیا کونکي او هغه خلک چې غوښتنلیک پلي کوي اوس یو ټیم دی.

هغه وسیلې چې تاسو ته د دې سره کار کولو اجازه درکوي د CircleCI، Travis CI، GitLab CI او نور دي.

تاسو کولی شئ په چټکۍ سره موډل کې اضافه کړئ، تازه یې کړئ او سمدلاسه یې پیل کړئ، پداسې حال کې چې دا به اسانه وي، د ناکامۍ په صورت کې، په چټکۍ سره د کار نسخه ته بیرته راستانه شي، ترڅو وروستی کاروونکي حتی پام ونه کړي. دا په ځانګړې توګه په اسانۍ او چټکۍ سره ترسره کیدی شي که تاسو ښه ازموینې ولرئ.

توپیرونه کم کړئ!!!

اصول 9. ستاسو لاګ

لاګز (یا "لاګز") پیښې دي، معمولا د متن په بڼه ثبت شوي، چې په غوښتنلیک کې واقع کیږي (د پیښې جریان). یو ساده مثال: "2020-02-02 - د سیسټم کچه - د پروسې نوم." دوی ډیزاین شوي ترڅو پراختیا کونکی واقعیا وګوري چې څه پیښیږي کله چې برنامه روانه وي. هغه د پروسو پرمختګ ګوري او پوهیږي چې ایا دا لکه څنګه چې پراختیا کونکي پخپله اراده لري.

دا اصول وايي چې تاسو باید خپل لاګونه په خپل فایل سیسټم کې ذخیره نه کړئ - تاسو باید یوازې سکرین ته "آؤټ پټ" کړئ، د مثال په توګه، دا د سیسټم په معیاري محصول کې وکړئ. او پدې توګه به دا ممکنه وي چې د پراختیا پرمهال په ترمینل کې جریان وڅارئ.

ایا دا پدې معنی ده چې د لاګونو خوندي کولو ته اړتیا نشته؟ البته نه. ستاسو غوښتنلیک باید دا کار ونه کړي — دا د دریمې ډلې خدماتو ته پریږدئ. ستاسو غوښتنلیک کولی شي یوازې د ریښتیني وخت لیدو لپاره ځانګړي فایل یا ټرمینل ته لاګونه وړاندې کړي ، یا یې د عمومي هدف ډیټا ذخیره کولو سیسټم (لکه هډوپ) ته واستوي. ستاسو غوښتنلیک پخپله باید د لاګونو سره ذخیره یا تعامل ونه کړي.

اصول 10. ازموینه!

د صنعتي ماشین زده کړې لپاره، دا مرحله خورا مهمه ده، ځکه چې تاسو اړتیا لرئ پوه شئ چې ماډل په سمه توګه کار کوي او هغه څه تولیدوي چې تاسو یې غواړئ.

ازموینې د pytest په کارولو سره رامینځته کیدی شي ، او د کوچني ډیټاسیټ په کارولو سره ازمول کیدی شي که تاسو د راجسټریشن / طبقه بندي دنده لرئ.

د ژورې زده کړې ماډلونو لپاره ورته تخم ترتیب کول مه هیروئ ترڅو دوی په دوامداره توګه مختلف پایلې تولید نکړي.

دا د 10 اصولو لنډ تشریح و، او البته، پرته له دې چې هڅه وکړي او وګورئ چې دوی څنګه کار کوي کارول ستونزمن دي، نو دا مقاله یوازې د یو لړ په زړه پورې مقالو یوه لړۍ ده چې زه به یې په ډاګه کړم چې څنګه یې جوړ کړم. د صنعتي ماشین زده کړې موډلونه، څنګه یې په سیسټمونو کې مدغم کړو، او دا اصول څنګه کولی شي زموږ ټولو لپاره ژوند اسانه کړي.

زه به هم هڅه وکړم چې ښه اصول وکاروم چې هرڅوک کولی شي په نظرونو کې پریږدي که دوی وغواړي.

سرچینه: www.habr.com

Add a comment