Final Project (Docker) - Afzali
Final Project (Docker) - Afzali
عنوان :
دانشجو :
محمدنوید افضلی
شماره دانشجویی:
9711126012
2
فهرست مطالب
چکیده 7 ................................ ................................ ................................ ................................
فصل اول 8 ............................ ................................ ................................ ................................
مقدمه 8 ................................. ................................ ................................ ................................
1-1داکر چیست؟ 9 ........... ................................ ................................ ................................
1-1-1تاریخچه کوتاهی از داکر 9 .............. ................................ ................................ :
2 -1-1نگهدارنده چیست؟ 10 ...................... ................................ ................................
3 -1-1ماشین مجازی چیست؟ 10 ............. ................................ ................................
4-1-1تفاوت داکر و ماشین مجازی در چیست؟ 11 ................... ................................
2-1دلیل نیاز به استفاده از ابزار داکر چیست؟ 11 .................... ................................
3-1کاربرد های داکر 13 ................................. ................................ ................................
4-1مزایا و معایب داکر 14 .............................. ................................ ................................
1 -4-1مزایا14 ............. ................................ ................................ ................................ :
2 -4-1معایب14 ......... ................................ ................................ ................................ :
5-1دلیل محبوبیت داکر 15 .......................... ................................ ................................
6-1اجزای اصلی داکر 15 .................................. ................................ ................................
1-6-1موتور داکر 15 ...................................... ................................ ................................
2-6-1کلینت داکر 16 .................................. ................................ ................................
3-6-1داکر دیمون 16 .................................... ................................ ................................
5-6-1داکر ایمیج 17 .................................... ................................ ................................
6-6-1داکر کانتینر 18 .................................. ................................ ................................
7-6-1داکر هاب 19 ........ ................................ ................................ ................................
3
8-6-1سی گروپ ها 19 ................................ ................................ ................................
9-6-1نیم اسپیس ها 20 .............................. ................................ ................................
7-1مهم ترین دستورات داکر 20 ..................... ................................ ................................
1-7-1دستور 20 ............... ................................ ................................ : DOCKER INFO
3-7-1دستور 22 ......... ................................ ................................ : DOCKER IMAGES
4-7-1دستور 22 ............... ................................ ................................ : DOCKER PULL
5-7-1دستور 23 .............. ................................ ................................ : DOCKER PUSH
6-7-1دستور 23 ............... ................................ ................................ : DOCKER RUN
7-7-1دستور 23 ............. ................................ ................................ : DOCKER BUILD
8-7-1دستور 24 ....................................... ................................ : DOCKER COMMIT
فصل دوم 25 ......................... ................................ ................................ ................................
داکر و یادگیری عمیق 25 ................................... ................................ ................................
1-2هوش مصنوعی چیست؟ 26 ....................... ................................ ................................
2-2یادگیری ماشین 27 .................................... ................................ ................................
3-2یادگیری عمیق 28 ...................................... ................................ ................................
4-2تفاوت های یادگیری ماشین و یادگیری عمیق 29 ................. ................................
5-2شبکه های عصبی 29 ................................. ................................ ................................
1-5-2شبکه های عصبی کانولوشن 30 ............ ................................ ................................
7-2کانولوشن 31 ................ ................................ ................................ ................................
8-2انواع شبکه های عصبی کانولوشن 32 ....................................... ................................
9-2کاربرد های شبکه های عصبی کانولوشن 32 ........................... ................................
10-2چرا از کانتینر های داکر در یادگیری عمیق استفاده میکنیم؟ 33 .....................
4
-1-10-2ساخت نگهدارنده 34 ..................... ................................ ................................
فصل سوم 36 ........................ ................................ ................................ ................................
پیاده سازی یادگیری ماشین(عمیق) با استفاده از داکر 36 ............ ................................
1-3پروژه یادگیری ماشین 37 .......................... ................................ ................................
1-1-3مقدمات لزم برای ساخت تصویر داکر 37 ......................... ................................
2-1-3شروع ساخت تصویر 38 ........................ ................................ ................................
3-1-3اجرای تصویر روی نگهدارنده 41 ......... ................................ ................................
2-3پروژه یادگیری عمیق 42 ............................ ................................ ................................
1-2-3مقدمه 42 ............. ................................ ................................ ................................
2-2-3شروع ساخت تصویر 42 ..................... ................................ ................................
3-3جمع بندی و نتیجه گیری 47 ................... ................................ ................................
سخن پایانی 48 .................... ................................ ................................ ................................
منابع 49 ................................ ................................ ................................ ................................
51 ................. ................................ ................................ ................................ ABSTRACT
5
فهرست اشکال
شکل 1-1تفاوت عملکرد داکر و ماشین مجازی 11 ....................... ................................
شکل 2-1معماری داخلی داکر 12 ................... ................................ ................................
شکل 3-1عملکرد داکر ؛ از ساخت نگهدارنده تا ذخیره سازی و استفاده از آن 13 ...
شکل 4-1تعریف داکر رجیستری 17 ............... ................................ ................................
شکل 5-1تعریف و نحوه عملکرد داکر ایمیج 18 ............................ ................................
شکل 6-1تعریف و نحوه عملکرد نگهدارنده داکر 19 ..................... ................................
شکل - 7-1دستور 21 ........... ................................ ................................ docker info
شکل - 8-1دستور 21 ............... ................................ ................................ docker ps
شکل - 9-1دستور 22 ................................... ................................ docker images
شکل - 10-1دستور 22 ........ ................................ ................................ docker pull
شکل - 11-1دستور 23 ......... ................................ ................................ docker run
شکل 1-2نمودار ون هوش مصنوعی،یادگیری ماشین و یادگیری عمیق 27 ..............
شکل 2-2عمل کانولوشن 31 ............................ ................................ ................................
شکل 3-2پارامتر های اصلی کانولوشن 32 ...................................... ................................
شکل 1-3داکرفایل 38 ....................................... ................................ ................................
شکل 2-3مراحل ساخت تصویر 40 ................ ................................ ................................
شکل 3-3تصویر های موجود در مخزن محلی (دریافت شده 40) Docker hub
شکل 4-3اجرای تصویر روی نگهدارنده 41 ................................... ................................
شکل 5-3محتویات داکرفایل 43 .................... ................................ ................................
شکل 6-3اجرای تصویر44 ........................... ................................ ................................ 2
شکل 7-3اجرای برنامه با کانتینر 45 ............... ................................ ................................
شکل 8-3تصویر نمونه 45 ................................. ................................ ................................
شکل 9-3خروجی کانتینر تحت وب 46 .......... ................................ ................................
6
چکیده
در طی سالیان اخیر و به ویژه امروزه ،از داکر به عنوان یکی از ابزارهای مهم و کاربردی در حوزه
برنامهنویسی یاد می شود .داکر به عنوان ابزاری برای ساخت و اجرای برنامهها در محیطهای
نگهدارندهای باعث افزایش سرعت و بهرهوری قابل توجه برنامهها گردیدهاست .با ابزار داکر دیگر
نگرانی بابت تفاوت نسخههای متعلقات برنامه و کتابخانههای آن وجود نخواهد داشت .هماکنون این
ابزار در توسعهی برنامه های مربوط به هوش مصنوعی و یادگیری ماشین/عمیق نیز قابل استفاده
است و توسعهدهندگان این حوزه میتوانند برنامه های خود را بدون دغدغه از طریق داکر با همکاران
خود به اشتراک بگذارند.
همچنین داکر برای این پروژهها بسیار مفید است؛ زیرا پروژه های یادگیری ماشین/عمیق دارای
کتابخانههای زیادی با چندین نسخه هستند .از طرف دیگر ،آنها در اکثر دستگاهها یکسان نیستند،
بنابراین در این موارد داکر به ما کمک شایانی میکند .در این پروژه قصد داریم با استفاده از ابزارهای
موجود در داکر ،یک نگهدارنده روی مدل یادگیری ماشین/عمیق خود ساخته و پیادهسازی کنیم.
در واقع ایدهی این پروژه ساخت سریع و آسان نگهدارنده داکر با یک مدل یادگیری عمیق ساده و
اجرای آن است .پیادهسازی این پروژه در https://github.com/NavidAfzali/Docker-
for-deep-learning/tree/masterموجود است.
7
فصل اول
مقدمه
8
1-1داکر 1چیست؟
داکر پروژهای متن باز 2برای توسعه و اجرای برنامهها بر مبنای نگهدارندهها میباشد و عملیات
ساخت ،3اجرا 4و مدیریت برنامه را تسهیل میبخشد .داکر میتواند یک برنامه و متعلقات آن را
(کتابخانهها و )...در یک نگهدارنده مجازی اجرا کند .این ابزار توسط زبان برنامهنویسی GOتوسعه
است[3] . یافته
1-1-1تاریخچه کوتاهی از داکر
در سال 2006پروسس نگهدارنده 5ارائه شد .در سال LXC6 2008ارائه شد که این موضوع مقدمهای
مناسب و خوب برای استفاده از نگهدارندهها بود .در سال 2013سرویس داکر ارائه شد .در همین
سال شرکت بزرگ رد هت 7اعلم کرد که پروژههای لینوکس ،8اوپن شیفت 9و فدورا 10را به سمت
این پروژه خواهد برد و از این پروژه حمایت کرد .در سال 2014شرکت مایکروسافت اعلم کرد که
نسخهی آینده ویندوز سرو ر خودش را به سمتی خواهد برد که بتواند داکر کلینت11را پشتیبانی
کند .شرکت IBMنیز در همین سال اعلم کرد که برنامهریزی خواهد کرد تا در IBM CLOUDاز
این سرویس استفاده کند و در همین سال شراکت خودش را با سرویس داکر اعلم کرد .در سال
2016شرکت داکر سرویس تجاری 12خود را ارائه کرد .در حال حاضر سرویس داکر دارای جامعهی
متن باز بسیار پویا و کاملی میباشد که بسیار فعال بوده و همواره در حال رشد و شکوفایی بیشتر
میباشد ]. [4
1
Docker
2
Open source
3
build
4
run
5
Process container
6
Linux container
7
Red hat
8
Linux
9
Open Shift
10
Fedora
11
Docker client
12
Commercial
9
2-1-1نگهدارنده چیست؟
نگهدارنده 1یک واحد نرمافزاری استاندارد است که کدها و تمام متعلقات آن را بستهبندی میکند.
به این ترتیب ،اپلیکیشن در محیطهای محاسباتی مختلف ،سریعتر و با اطمینان بیشتر اجرا میشود.
هر نگهدارنده یک محیط ایزوله شده را مشابه یک ماشین مجازی 2فراهم میکند .برخلف
هسته3 ماشینهای مجازی ،نگهدارندههای داکر یک سیستمعامل کامل را اجرا نمیکنند ،بلکه
میزبان را به اشتراک میگذارند و مجازیسازی را در یک سطح نرمافزاری انجام میدهند.
برای درک بهتر نگهدارندهها ،بهتر است از یک مثال استفاده کنیم .فرض کنید در شرکتی مشغول
به کار هستید و ناهار خود را هر روز در خانه درست کرده و آن را داخل یک ظرف به شرکت میبرید
تا آنجا میل بفرمایید .دیگر لزم نیست داخل شرکت شروع به پختن غذا کنید چون احتمال زمان
زیادی را از شما میگیرد .کار نگهدارنده هم تا حدودی شبیه به این است .شما پروژه خود را (غذا)
داخل نگهدارنده (ظرف غذا) قرار داده و آن را هر کجا که دوست داشتید (مثل شرکت) میبرید.
به لطف این تکنیک ،برنامهنویس خیالش راحت است که برنامه او میتواند در سیستمهای دیگر
بدون نیاز به تنظیمات خاص یا ابزارهای جانبی اجرا شود.
3-1-1ماشین مجازی چیست؟
ماشین مجازی برنامهای است که به عنوان یک رایانه مجازی عمل میکند .این برنامه بر روی
سیستمعامل فعلی شما اجرا میشود و سختافزاری مجازی برای یک سیستمعامل میهمان ارائه
میکند .از نگاه سیستمعامل مهمان ،ماشین مجازی مشابه یک رایانه واقعی عمل میکند .ماشینهای
مجازی از سختافزار های سیستم همچون ، CPUحافظه RAMو سایر سختافزار ها استفاده
می کند .البته نحوه عملکرد داکر با ماشین مجازی متفاوت است که در ادامه شرح داده می شود.
1
Container
2
Virtual machine
3
Kernel
10
4-1-1تفاوت داکر و ماشین مجازی در چیست؟
در ماشین مجازی ،قسمتی از سخت افزار سیستم به ماشین مجازی اختصاص داده میشود و روی
آن یک سیستمعامل کامل نصب و اجرا میشود .در واقع میتوان گفت در ماشین مجازی امکانات
سختافزاری سیستم تقسیم میشود و بر روی هر قسمت ،سیستمعامل بخصوصی به اجرا در می
آید ،اما در داکر این طور نیست .در داکر امکانات سختافزاری به تناسب نیاز هر نگهدارنده به صورت
موقت اختصاص داده میشود و داکر این امکان را فراهم میآورد که برنامهها روی کرنل سیستمعامل
اجرا شوند .این عمل ،بازدهی و کارایی سیستم را تا حد زیادی بال میبرد .در این حالت دیگر نیازی
به نصب پیشنیازها و نیازمندیهایی که برنامهی ما میخواهد و به طور پیشفرض روی سیستم
وجود ندارد ،نیست .این سرویس به شما کمک می کند یک محیط را به چند بخش تقسیم کرده و
و در هر بخش یک برنامه مجزا را اجرا کنید.
در ادامه به دلیل نیاز به استفاده از داکر میپردازیم.
11
بر پایتون 1وجود دارد که قرار است روی یک سرور میزبانی شوند (چه فیزیکی چه مجازی) .همچنین،
فرض میکنیم که در هر یک از این برنامهها نسخههای متفاوتی از پایتون استفاده شده
و کتابخانهها و متعلقات به کار گرفته شده نیز در هر اپلیکیشن با دیگری فرق دارد .با توجه به اینکه
نمیتوان نسخه های مختلفی از پایتون را روی یک ماشین نصب کرد ،امکان میزبانی از این سه
اپلیکیشن روی یک کامپیوتر واحد وجود نخواهد داشت .اینجاست که فناوری داکر به کار میآید.
دیگر نیاز نیست که چند ماشین مجازی مختلف را برای نسخههای مختلف پایتون اجرا کنیم و
قسمت زیادی از سختافزار خود را از دست دهیم .تنها یک بار داکر را نصب میکنیم؛ داکر ،خود
نگهدارندههای مجزا را ایجاد میکند .بدین ترتیب یک محیط را به چند بخش تقسیم کرده و در هر
قسمت ،یک برنامه مجزا را اجرا میکنیم.
1
زبان برنامه نویسی Python
12
شکل 2-1عملکرد داکر ؛ از ساخت نگهدارنده تا ذخیره سازی و استفاده از آن
داکر][6 3-1کاربردهای
✓ تولید برنامههای سریع و پایدار
داکر منجر به سادهسازی چرخه حیات توسعه میشود .این سادهسازی به وسیله
فراهم کردن امکان کار در محیطهای استانداردسازی شده برای توسعهدهندگان با
استفاده از نگهدارندههای محلی فراهم شده است که اپلیکیشنها و خدمات لزم را
ارائه میدهند.
✓ اجرای حجم کاری بیش تر بدون نیاز به ارتقای سختافزار
داکر کمحجم و سریع است .داکر جایگزینی مقرون به صرفه برای ماشینهای
مجازی مبتنی بر لیه نرمافزاری 1به حساب میآید .با داکر میتوان ظرفیت
محاسباتی بیشتری را برای دستیابی به اهداف کسب و کار به کار گرفت .داکر
1
Hypervisor-Based
13
برای محیطهایی با تراکم بال و همچنین برای استقرار نرمافزارهای کوچک و
متوسط یعنی جایی مناسب است که نیاز به اجرای وظایف بیشتر با منابع کمتر
وجود داشته باشد.
✓ مقیاسپذیری
نگهدارنده در داکر امکان ایجاد حجم کاری1قابل حمل را فراهم میسازد.
نگهدارندههای داکر میتوانند روی لپتاپ توسعهدهنده ،ماشینهای فیزیکی یا
مجازی در یک مرکز داده ،ارائه دهندگان فضای ابری یا روی محیطهای تلفیقی
اجرا شوند.
1-4-1مزایا:
✓ ثبات و پایداری
✓ صرفهجویی در فضای ذخیرهسازی
✓ وسعت و انعطاف جامعه توسعهدهندگان
✓ امکان استفاده در مک و ویندوز
✓ خودکارسازی
2-4-1معایب:
✓ کمبود در مستندات
✓ در حال حاضر مشکلت کارکردی برای Macوجود دارد
✓ بروز مشکلت در محیطهای غیر بومی
1
Workload
14
5-1دلیل محبوبیت داکر
داکر به دلیل راهاندازی بر بستر نگهدارنده کیفیت برنامهها را بالتر برده و همچنین به دلیل قابل
حمل بودن آن ،شرایط استفاده در هر مکانی را داراست.
امکان محفظه سازی تنها برای یک بار و اجرا در همه محیطها ،منجر به کاهش فاصله میان محیط
توسعه و سرورهای تولید محصول میشود .استفاده از نگهدارندهها این اطمینان و اعتماد را به وجود
میآورد که همه محیط ها برابر هستند .در صورتی که عضو جدیدی به تیم توسعه اضافه شود ،این
فرد تنها لزم است از دستور » «docker runبرای راهاندازی نمونه توسعه خود استفاده کند(این
دستورات در ادامه معرفی خواهند شد).
داکر نسبت به یک ماشین مجازی بسیار سادهتر است .ماشینهای مجازی ابزارهایی همهمنظوره
هستند که برای پشتیبانی از هر میزان حجم کاری ممکن طراحی شدهاند .در مقابل آن ،نگهدارنده-
های کم حجم داکر ،خودکفا و برای کاربردهای یک بار مصرف مناسبتر هستند .با توجه به اینکه
داکر کرنل میزبان را به اشتراک میگذارد ،نگهدارندهها تاثیر قابل چشمپوشی در کاهش عملکرد و
کارایی سیستم دارند .زمان اجرای نگهدارندهها تقریباً لحظهای و بلفصل 1است.
1
real time
2
Docker engine
15
داکر1 2-6-1کلینت
کلینت داکر جزئی ا ست که کاربر نهایی با آن در ارتباط خواهد بود .برای درک بهتر میتوانید آن
را یک رابطکاربری 2برای داکر بنامید .هر چند که فاصله آن از واژه کاربرپسند 3بسیار زیاد است .شما
به عنوان کاربر نهایی با کلینت داکر ارتباط خواهید داشت و کلینت داکر دستورات شما را به داکر
دیمون منتقل می نماید.
دیمون4 3-6-1داکر
داکر دیمون جزئی است که دستورات ارسال شده به کلینت داکر را اجرا مینماید .دستوراتی مانند
ساختن ،راهاندازی و یا توزیع نگهدارندهها.
داکر دیمون ،خود بر روی هاست اجرا میشود .اما به عنوان کاربر شما هیچگاه به صورت مستقیم با
آن در ارتباط نخواهید بود .همان طور که در قسمت قبل در توضیح کلینت داکر گفته شد ،کلینت
داکر انتقالدهنده دستورات شما به داکر دیمون خواهد بود.
رجیستری5 4-6-1داکر
داکر رجیستتری فضتای ذخیرهستازی تصتویرهای داکری میباشتد( .تصتویرهای داکر در ادامه توضتیح
داده خواهد شتد) .مخزن Docker Hubیک مخزن عمومی داکر استت که تمام کاربران میتوانند
تصتتتویرهتایی کته برای برنتامته خود ایجتاد میکننتد را در آن ذخیره کننتد تتا دیگران هم بتواننتد از آن
استفاده کنند.
1
Docker client
2
User interface
3
User friendly
4
Docker deamon
5
Docker registry
16
شکل 3-1تعریف داکر رجیستری؛ ][4
ایمیج1 5-6-1داکر
داکر ایمج یک فایل غیر قابل تغییر است که شامل کد منبع ،کتابخانهها ،2وابستگیها ،ابزارها و سایر
فایلهای مورد نیاز برای اجرای یک برنامه است.
از آنجا که تصویرها به نوعی فقط الگو یا قالب 3هستند ،نمیتوانید آنها را شروع یا اجرا کنید .کاری
که میتوانید انجام دهید این است که از آن الگو به عنوان پایه برای ساخت نگهدارنده استفاده کنید.
1
Docker image
2
Libraries
3
Template
17
شکل 4-1تعریف و نحوه عملکرد داکر ایمیج ؛ ][4
6-6-1داکر کانتینر
نگهتدارنتده داکر یتک محیط مجتازی run-timeاستتتت کته در آن کتاربران میتواننتد برنتامته هتا را از
ستیستتم اصتلی جدا کنند .این نگهدارندهها واحدهای قابلحمل و فشتردهای هستتند که میتوانید در
آنهتا بته راحتی یتک برنتامته را راهانتدازی کنیتد .یتک ویژگی مهم دیگر ،استتتتتانتداردستتتازی محیط
محتاستتتبات و رایانش در حال اجرا در داخل نگهدارنده استتتت .این نه تنها از این که برنامه شتتتما
در شتترایط یکستتانی در حال کار استتت اطمینان حاصتتل می کند ،بلکه اشتتتراکگذاری با ستتایر
همتیمیها را نیز ساده میسازد.
18
شکل 5-1تعریف و نحوه عملکرد نگهدارنده داکر؛][4
هاب1 7-6-1داکر
داکر هاب سرور ذخیرهساز 2مبتنی بر ابر است که مصرفکنندگان و کاربران داکر میتوانند در آن
ایمیجهای نگهدارنده را ایجاد ،آزمون ،ذخیرهسازی و توزیع کنند.
داکر هاب نسخهای از داکر رجیستری می باشد که میزبانی آن مبتنی بر ابر 3است.
ها4 8-6-1سیگروپ
سی گروپها اجازه تخصیص منابع را به ما میدهند .منظور از منابع ،به طور کلی سختافزار که
شامل سیپییو ،5حافظه ،شبکه ،دیسک ورودی و خروجی 6و ...میباشد .منابع در داکر توسط
سیگروپها مدیریت میشوند.
1
Docker hub
2
Repository
3
cloud -hosted
4
Cgroups
5
CPU
6
I/O disk
19
سیگروپها به موتور داکر 1اجازه میدهند تا منابع سختافزاری موجود را به نگهدارندهها اختصاص
دهند و به صورت اختیاری میتوانند محدودیتهای لزم را به اجرا درآورند؛ برای مثال ،شما میتوانید
حافظهی موجود را برای نگهدارندهی خاصی محدود کنید.
ها2 9-6-1نیم اسپیس
داکر از نیماسپیسها برای تهیه فضاهای مجزا به نام نگهدارنده استفاده میکند .از طرف دیگر نیم-
اسپیس مکانیزم دیگری در کرنل برای محدود کردن دید گرهی از فرآیندها ،نسبت به بقیه سیستم
ها است .برای مثال میتواند یک یا چند فرآیند را محدود کرد تا امکان دیدن و تعامل با بقیه
فرآیند های در حال اجرا روی سیستم یا مثل امکان دسترسی به فایل سیستمهای مانت 3شده را
نداشتهباشد.
1
Docker engine
2
Namespaces
3
Mount
4
Command line
20
شکل - 6-1دستور docker info
1
Options
2
Running
21
3-7-1دستور : docker images
این دستور لیست تصویرهای ما را نمایش میدهد .همانند دستور قبل شامل تنظیمات زیادی است.
برای مثال ،با تنظیم -qتنها شناسه تصویر1های موجود را برمیگرداند.
1
Images ID
2
Tag
22
5-7-1دستور : docker push
برعکس دستور قبلی عمل میکند .به طوری که با این دستور میتوانید تصویر خود را در داخل
مخازن مختلف داکر قرار دهید .تنظیمات خاصی ندارد ،فقط باید توجه داشت که برای قرار دادن
تصویر درون مخزن ،باید از قبل وارد 1یک مخزن شده باشید.
23
برسیم .این قابلیت لیهای بودن بسیار به کم حجم شدن تصویر نهایی میتواند کمک کند .ممکن
است در لیهی آخر تصویر شما مشکلی رخ دهد که مجبور باشید بعد از اصلح آن از ابتدا فرآیند
ساخت را انجام دهید .قابلیت کش 1که از همین روش لیهای بودن تصویرها فراهم شده است به
شما کمک میکند که تمام لیههای درست و صحیح را مجدد دریافت نکنید و تنها از همان لیهای
که خطا داشته است ادامه دهید.
دستوراتی که تاکنون ذکر شدند دستورات اصلی داکر هستند .داکر شامل دستورات زیادی است که
مابقی آنها دستورات پیشرفته داکر محسوب میشوند و فراتر از این پروژه هستند .بنابراین به معرفی
این دسته از دستورات نمیپردازیم .همچنین داکر به دلیل تحریم به صورت مستقیم قابل استفاده
نمیباشد]. [10
فصل اول در اینجا به پایان میرسد .در فصل دوم به معرفی هوش مصنوعی و توضیحاتی پیرامون
یادگیری ماشین و یادگیری عمیق و کاربرد داکر در آنها خواهیم پرداخت.
1
Cache
24
فصل دوم
داکر و یادگیری عمیق
25
1-2هوش مصنوعی چیست؟
هوش مصنوعی به هوشمندی گفته می شود که از ماشینها حاصل میشود .به عبارتی ،هر ماشینی
که میتواند محیط را درک کند و فعالیتهای وابسته به فکر و ذهن انسان را به خوبی انجام دهد[11].
آلن تورینگ یکی از تاثیرگذارترین افراد در حوزه هوش مصنوعی است و بسیاری مقالهای که او در
سال 1950منتشر کرد را تولد هوش مصنوعی میدانند .او همچنین تست تورینگ 1را پیشنهاد داد
که معیاری برای تشخیص هوشمندی ماشین است.
یکی از اولین پروژههای عملی هوش مصنوعی ،ایده گرفتن از مفهوم شبکه عصبی و نورونها بود .دو
نفر از دانشجویان دانشگاه هاروارد در سال 1950اولین شبکه عصبی مصنوعی را که شامل 40نورون
بود ساختند .نورونها واحدهایی یک شکل در مغز هستند که پیامهای عصبی را منتقل میکنند.
جالب است بدانید شبکههای عصبی مصنوعی جدید که از آنها برای طبقهبندی تصاویر استفاده
میشود دارای هزاران نورون هستند!
باخت کاسپاروف ،قهرمان شطرنج جهان ،از سیستم deep blueباعث شد تا هوش مصنوعی در
کانون توجه قرار گیرد .این سیستم توسط IBMطراحی شده بود .در اولین مسابقه در سال 1996
کاسپاروف پیروز شد اما در رقابت بعدی که در سال 1997اتفاق افتاد deep blue ،توانست
کاسپاروف را شکست دهد.
این حوزه دارای شاخههایی است که در زمینههای مختلف نیز مورد استفاده قرار میگیرند .در ادامه
ما یادگیری ماشین را به عنوان زیرمجموعهای از هوش مصنوعی بررسی میکنیم.
1این آزمون در مقاله معروف تورینگ دستگاه محاسباتی و هوشمندی مطرح شد و هدف این تست بررسی هوشمندی ماشین بود.
در این آزمون شخص Cبه شکلی غیر مستقیم با شخص Bو یک ماشین ) (Aدر ارتباط است و نمیداند کدامشان ماشین است .او
از آنها سوالتی میپرسد و اگر از روی جوابها نتواند شخص Bرا از ماشین تشخیص دهد ،میگوییم که ماشین تست تورینگ را
26
1
2-2یادگیری ماشین
یادگیری ماشین بعد از هوش مصنوعی موضوعیت پیدا کرد و آن را میتوان زیرمجموعه هوش
مصنوعی در نظر گرفت .یادگیری ماشین ویژگیهایی دارد که آن را از دیگر روشهای هوش مصنوعی
متمایز میکند.
یکی از مهمترین ویژگی های یادگیری ماشین ،یادگیری با استفاده از داده و بدون استفاده از دستورات
مستقیم است .در انواع دیگر هوش مصنوعی ممکن است شاهد نوعی از هوشمندی باشیم که از
دادهها استفاده نمی کند .ویژگی دیگر یادگیری ماشین ،تغییر خود با دیدن دادههای جدید است؛
میدهد[7] . یعنی همانند انسان با کسب تجربیات جدید رفتار خود را تغییر
در یادگیری ماشین به طراحی ماشینهایی پرداخته میشود که با توجه به دیتاهای داده شده به آن
ماشین و تجربیات ماشین ،بیاموزند .به عبارتی ،یادگیری ماشین کامپیوترها را قادر میسازد بدون
این که صریحا برنامهریزی شده باشند ،به روشی خودآموز تبدیل شوند.
1
Machine learning
27
"یک برنامه یادگیرنده برنامه رایانهای است که به آن گفته شده تا از تجربه Eمطابق با برخی وظایف
،Tو کارایی عملکرد Pبرای وظیفه Tکه توسط Pسنجیده میشود ،یاد بگیرد که تجربه Eرا بهبود
ببخشد( ".تام میشل)
یافتن الگوها در دادههای موجود در سیاره زمین ،تنها برای مغز انسان ممکن است .اما هنگامی که
حجم دادهها بسیار زیاد میشود و زمان لزم برای انجام محاسبات افزایش مییابد ،نیاز به یادگیری
ماشین به عنوان علمی مطرح میشود که به افراد در کار با دادههای انبوه در حداقل زمان کمک
میکند] .[6امروزه یادگیری ماشینی در بسیاری زمینهها از جمله مهندسی ،کسب و کار ،زبانشناسی
و پزشکی کاربرد دارد.
در ادامه به توضیح مختصر یادگیری عمیق ،یکی از مهم ترین زیرمجموعههای یادگیری ماشین
میپردازیم:
3-2یادگیری عمیق
شاید در مورد یادگیری عمیق هم چیزهایی شنیده باشید .یادگیری عمیق عمری بسیار کوتاهتر از
یادگیری ماشین دارد .استفاده از شبکههای عصبی مصنوعی یکی از انواع روشهای یادگیری ماشین
است که از سالها پیش در حال گسترش است .این شبکهها از ساختار ذهن انسان الگوبرداری
شده اند و ساختاری لیه لیه دارند .با پیشرفت تکنولوژی و افزایش توان محاسباتی کامپیوترها،
مهندسان توانستند تعداد لیههای این شبکه ها را افزایش دهند و این شروعی برای یادگیری عمیق
بود .یادگیری عمیق میتواند الگوهای پیچیدهتری را در داده پیدا کند و امروزه به یکی از جذابترین
][2 بخشهای یادگیری ماشین تبدیل شده است.
28
یادگیری عمیق اشاره به مجموعه ای از الگوریتمهای یادگیری ماشین دارد؛ که معمول مبتنی بر
شبکههای عصبی مصنوعی اند و تلش دارند تا انتزاعات سطح بالی موجود در دادهها را مدل نمایند.
یادگیری عمیق دقت بالتری نسبت به سایر مدلهای یادگیری ماشین دارا میباشد.
یادگیری عمیق کاربردهای زیادی دارد همچون :بازسازی تصاویر ،حذف نویز در تصاویر ،تشخیص
گفتار ،تبدیل متن به گفتار و ...
1
5-2شبکه های عصبی
وقتی به یادگیری عمیق که حیطهای از یادگیری ماشین است ،اشاره میشود ،احتمالً پای شبکههای
عصبی در میان است .شبکههای عصبی از مغز ما الگو گرفتهاند .گره2هایی وجود دارند که لیهها را
در شبکه تشکیل میدهند و دقیقاً مانند نورونهای مغز ما ،نواحی مختلف را به هم متصل میکنند.
به ورودیهای گرهها در یک لیه ،وزنی اختصاص مییابد که تأثیری را که پارامتر بر نتیجه پیشبینی
1
Neural Network
2
node
29
کلی دارد ،تغییر میدهد .از آنجا که وزنها به پیوندهای بین نودها اختصاص داده میشوند ،ممکن
گیرد][6 است هر گره تحتتأثیر وزنهای مختلف قرار
تا زمانی که با تصاویر با ابعاد بال که هزاران پیکسل دارند کار نکنید ،این صرفهجویی چندان به چشم
نمیآید .هدف اصلی این الگوریتمها این است که با حفظ ویژگیهایی که برای فهم آنچه دادهها
نشان میدهند مهم هستند ،دادهها را به فرمهایی که پردازش آنها آسانتر است ،درآورد.
شبکههای عصبی کانولوشن بر خلف شبکههای عصبی معمولی ،به جای ضرب ماتریس از کانولوشن
استفاده میکند .این شبکهها با اعمال فیلتر روی دادههای ورودی شما پردازش خود را انجام می-
دهند .چیزی که آنها را بسیار خاص میکند ،این است که شبکههای عصبی کانولوشن میتوانند
فیلترها را همزمان با فرایند آموزش ،تنظیم کنند .بنابراین ،حتی وقتی مجموعه دادههای عظیمی
مانند تصاویر داشته باشید ،نتایج بهخوبی و درلحظه دقیقتر میشوند.
از آنجا که میتوان فیلترها را برای آموزش بهتر شبکههای عصبی کانولوشن بهروزرسانی کرد ،نیاز به
فیلترهای دستی از بین میرود و این انعطافپذیری بیشتری در تعداد و ارتباط فیلترهایی که بر روی
مجموعه دادهها اعمال میشوند ،به ما میدهد .با استفاده از این الگوریتم ،میتوانیم روی مسائل
پیچیدهتری مانند تشخیص چهره کار کنیم.
1
)Convolutional Neural Network (CNN
2
Heuristic
30
7-2کانولوشن
در عمل کانولوشن چند پارامتر اساسی وجود دارد که عبارتند از:
• ماتریس ورودی
• فیلتر کانولوشن
• عملگر کانولوشن
• ویژگی خروجی کانولوشن
کارکرد اصلی کانولوشن به این صورت است که عملگر کانولوشن ،فیلتر کانولوشنی را برمیدارد و
][8 روی ماتریس ورودی میلغزاند(.فیلتر روی تصویر حرکت میکند).
31
شکل 3-2پارامتر های اصلی کانولوشن
اعدادی که در ماتریس خروجی ذخیره میشوند ،تابعی از ورودی و فیلتر هستند .فیلتر به دنبال پیدا
کردن نواحی مشابه خود در تصویر است و هرجایی ناحیه مشابهِ خود را پیدا کرد بلند فریاد میزند
(عدد بزرگ) .پس کانولوشن منجر به یافتن الگوهای خاص در تصویر با توجه به فیلتر میشود .اعداد
موجود در فیلتر بسیار مهم هستند.
32
• تشخیص تصاویر با پیشپردازش کم
• استفاده در سرویسهای پستی برای خواندن کدپستی
• استفاده در بانکداری برای خواندن ارقام در چک
کامپیوتر1 • کاربردهای بینایی
• و ...
1
Computer vision
2
Micro-service
33
-1-10-2ساخت نگهدارنده
معماری میکرو سرویس نیز دارای اشکالتی است .هنگامی که برنامه یادگیری ماشین خود را در یک
سرور توسعه میدهید ،به همان تعداد ماشین مجازی نیاز خواهید داشت که میکروسرویس حاوی
وابستگی است .هر ماشین مجازی به یک سیستمعامل ،کتابخانهها و باینریها نیاز دارد و منابع
سختافزاری بیشتری مانند پردازنده ،حافظه و فضای دیسک را مصرف میکند ،حتی اگر میکرو
سرویس واقعاً در حال اجرا نباشد .به همین دلیل است که داکر وارد میشود .اگر یک نگهدارنده در
حال اجرا نباشد ،منابع باقی مانده به منابع مشترک تبدیل میشوند و برای سایر نگهدارندهها قابل
دسترسی هستند .شما نیازی به اضافه کردن سیستمعامل در یک ظرف ندارید .بیایید یک راه حل
کامل متشکل از برنامه های کاربردی 1و ( 2مثل APP1و )APP2را در نظر بگیریم .اگر
میخواهید APP1را کوچک کنید یا برنامههای کاربردی دیگری را اضافه کنید ،میتوانید با استفاده
از منابع در دسترس از ماشینهای مجازی به جای نگهدارندهها محدود شوید .اگر تصمیم دارید فقط
APP1و نه APP2را کوچک کنید (فقط یک مورد را نگه دارید) APP2 ،تبدیل به سهمی از
همه فرآیندهای نگهدارنده میشود.
ایجاد یک مدل یادگیری ماشینی که در رایانه ما کار می کند واقعاً پیچیده نیست .اما وقتی برای
مثال با مشتری کار میکنید که میخواهد از مدل در مقیاس استفاده کند ،مدلی که میتواند در
همه انواع سرورها در سراسر جهان کار کند ،چالشبرانگیز است .پس از توسعه مدل شما ،ممکن
است در لپتاپ یا سرور شما به خوبی اجرا شود ،اما واقعاً در سیستم های دیگر مانند زمانی که مدل
را به مرحله تولید یا سرور دیگری منتقل میکنید ،کار نمیکند .بسیاری از چیزها ممکن است رخ
دهد مانند مشکلت عملکردی ،از کار افتادن برنامه یا بهینه نبودن برنامه .موقعیت چالش برانگیز
دیگر این است که مدل یادگیری ماشین ما مطمئناً می تواند با یک زبان برنامهنویسی منفرد مانند
پایتون نوشته شود ،اما برنامه مطمئناً نیاز به تعامل با برنامههای کاربردی دیگر نوشته شده در زبان
های برنامه نویسی دیگر برای جذب داده ،آماده سازی داده ،فرانتاند و غیره دارد .داکر اجازه میدهد
تا همه این تعاملت را بهتر مدیریت کنید زیرا هر میکرو سرویس را می توان به زبانی متفاوت نوشت
که امکان مقیاسپذیری و افزودن یا حذف آسان سرویسهای مستقل را فراهم میکند .داکر
تکرارپذیری ،قابلیت حمل ،استقرار آسان ،بروزرسانی ،سبکی و سادگی را به ارمغان میآورد[9].
34
فصل دوم به پایان رسید .فصل بعدی پیرامون پیادهسازی پروژهها به وسیله ابزار داکر است .در فصل
بعدی ،چند پروژه یادگیری ماشین و یادگیری عمیق را با استفاده از ابزار داکر پیاده سازی میکنیم
و برای پروژههای خود تصویر ساخته و از آن در پیادهسازی پروژه خود استفاده میکنیم.
35
فصل سوم
پیاده سازی یادگیری
ماشین/عمیق با استفاده از داکر
36
1-3پروژه یادگیری ماشین
نوار مغزی ،الکتروانسفالوگرافی 2یا EEGثبت فعالیت الکتریکی مغز از طریق نصب الکترودهای
سطحی بر روی سر و به صورت غیر تهاجمی میباشد .به طور کلی ،در یک سیستم ،EEGاثر
الکتریکی فعالیت نورون های مغز از طریق الکترودهای نصب شده بر روی سر به دستگاه انتقال داده
شده و پس از تقویت و حذف نویز به صورت سیگنال زمانی ثبت و نمایش داده میشود .سیگنال
ثبت شده می تواند مستقیماً و یا پس از پردازش کامپیوتری توسط پزشک و یا متخصص علوم اعصاب
مورد تحلیل قرار بگیرد].[12
• فایل : train.pyیک فایل به زبان برنامهنویسی پایتون است که دادههای EEG3را از یک
فایل به نام train.csvدریافت و نرمالسازی 4میکند .همچنین دو مدل را برای طبقهبندی
دادهها آموزش میدهد :تحلیل تشخیصی خطی و مدل چند لیه شبکههای عصبی.
• فایل : inference.pyاین فایل هم که به زبان برنامهنویسی پایتون نوشته شده ،برای
استنتاج دسته ای با بارگذاری دو مدلی که در فایل قبلی ایجاد و آموزش داده شدند ،فراخوانی
میشود .این برنامه دادههای EEGجدید را که از یک دیتاست میآید ،نرمالسازی میکند.
همچنین استنتاج روی مجموعه داده انجام داده و دقت طبقهبندی و پیشبینیها را چاپ
میکند.
• فایل : train.csvدیتاستی که توسط فایل train.pyدریافت و آموزش داده میشود.
1
Image
2
Electroencephalography
EEG 3نوسانات ولتاژ ناشی از جریان یونی در نورون های مغز را اندازه گیری میکند .از نظر بالینیEEG ،به ثبت فعالیت الکتریکی خود به خودی مغز در
طی یک دوره زمانی اشاره دارد ،همانطور که از چندین الکترود قرار داده شده بر روی پوست سر ثبت میشود(.ویکی پدیا)
4
Normalize
37
• فایل : test.csvدیتاستی که توسط inference.pyنرمالسازی میشود.
شکل 1-3داکرفایل
• خط : 1شروع ساخت تصویر از یک تصویر پایه :ما از تصویر jupyter/scipy-notebook
استفاده کردهایم .این تصویر از مجموعه ای از تصویر های آمادهی اجراست که شامل برنامه
های کاربردی jupyterو ابزارهای محاسباتی تعاملی میباشد.
• خط : 3ساخت یک دایرکتوری 2به نام my-modelبرای استفاده در ادامه کار.
1
Text editor
2
Directory-Repository
38
• خط : 6-5-4برای آینده توسعه ی پروژه خود ،میتوان متغیرهای محیطی را از ابتدا ،فقط
یک بار در زمان ساخت ،برای تداوم مدل آموزشدیده تنظیم کرد و شاید دادهها یا
ابردادههای 1اضافی را به یک مکان خاص اضافه کرد .مزیت تنظیم متغیرهای محیطی این
است که کار خود را بهتر با دیگران در یک ساختار دایرکتوری توافق شده به اشتراک بگذارید.
• خط : 8اجرای دستور به منظور نصب پکیج Joblib . joblibمجموعهای از ابزارها برای
ارائه خط لوله 2سبک در پایتون است Joblib .به گونه ای بهینه سازی شده است که به
ویژه در دادههای بزرگ سریع و قوی باشد و دارای بهینهسازیهای خاصی برای آرایههای
numpyاست .ما باید joblibرا نصب کنیم تا سریالسازی 3و سریالزدایی4مدل
آموزشدیدهمان را امکانپذیر کنیم.
• خطوط 10تا : 14کپی کردن اسناد و فایلهای پروژه و انتقال آنها به تصویر .این
دستورالعمل برای کپی کردن فایل های جدید ،از قسمت منابع 5به فایل سیستمهایی که
در نگهدارنده قرار دارند است.
• خط : 16اجرای دستور پایتون بر روی فایل train.pyجهت نمایش خروجی هنگام اجرای
تصویر .ما train.pyرا اجرا میکنیم که مدلهای یادگیری ماشین را به عنوان بخشی از
فرآیند ساخت تصویر ما متناسب و سریال میکند.
در ادامه پس از نوشتن داکرفایل ،وارد خطفرمان سیستم عامل خود شده و در مسیر فایلهای پروژه،
با دستور زیر شروع به ساخت تصویر از پروژه یادگیری ماشین خود میکنیم:
1
Meta data
2
Pipeline
3
Serialization
4
Deserializaiton
5
Source
39
با اجرای این دستور ،داکر شروع به ساخت تصویر برای مدل یادگیری ماشین میکند و با توجه به
دستورات داکرفایل ،تصویر پایه و متعلقات آن را در صورت نیاز از مخزن داکر1دریافت میکند.
خروجی نهایی به شکل زیر است:
شکل 3-3تصویر های موجود در مخزن محلی (دریافت شده از مخزن ) Docker hub
1
Docker Hub
40
3-1-3اجرای تصویر روی نگهدارنده
حال میتوانیم استنتاج 1خود از مدلها را روی دادههای جدید یعنی دادههای موجود در test.csv
اجرا کنیم .به صورت زیر:
همانطور که مشاهده میشود تصویر ساختهشده روی یک نگهدارنده اجرا شده و خروجی کد
inference.pyکه طبقه بندی 2و دقت مدل ها را نمایش میدهد ،به نمایش در آمده است.
میبینیم که مدل ها از دقت نسبتا خوبی برخوردارند .همچنین مسیر اجرای تصویر را هم مشاهده
میکنید.
در ادامه یک پروژه یادگیری عمیق را مورد بررسی قرار میدهیم و تصویر مربوط به برنامه را ایجاد
میکنیم.
1
Inference
2
Classification
41
2-3پروژه یادگیری عمیق
1-2-3مقدمه
در این پروژه یک مدل CNNکه تصاویر مربوط به غذاها را دستهبندی میکند ،را در قالب یک
سرویس APIپیادهسازی میکنیم.
همانطور که در فصل دوم شرح دادهشد ،شبکه عصبی کانولوشن نوع خاصی از شبکه عصبی با چندین
لیه است که دادههایی را که آرایش شبکهای دارند ،پردازش کرده و سپس ویژگیهای مهم آنها را
استخراج میکند .یک مزیت بزرگ استفاده از CNNها این است که نیازی به انجام پیشپردازش
زیادی روی تصاویر نیست.
FastAPIیک چهارچوب تحت وب به زبان پایتون است و به وسیله آن برنامههای apiرا با سرعت
بال ایجاد میکنند.
• : Main.pyفایل اصلی پروژه به زبان پایتون که یادگیری روی مدل را انجام میدهد؛ در
نهایت روی یک پورت محلی سرویس fastAPIرا اجرا میکند.
• : Requirments.txtیک فایل متنی است که در آن پکیجهای مورد نیاز پروژه نوشته شده
است .از آن در داکرفایل هنگام دریافت پکیجها به وسیله دستور pipاستفاده میشود.
• داکرفایل :یک فایل داکر که در آن نحوه ساخت تصویر نوشته شدهاست و تصویر طبق این
فایل ساخته میشود.
42
شکل 5-3محتویات داکرفایل
• خط :1تصویر پایه را نام میبریم؛ در این پروژه ما از تصویر پایتون نسخه 3.7استفاده کرده
ایم .کل پروژه روی این تصویر بنا میشود.
• خط4و :5مانند پروژه قبل ساخت دایرکتوری برای ادامه کار را انجام میدهد.
• خط :8یک دستور پایتون است که پکیج pipرا بروزرسانی میکند.
• خط :11فایل متنی پروژه یعنی requirments.txtرا کپی میکند و در دایکتوریای که
در خطوط قبلی ساختیم قرار میدهد(دایرکتوری در نگهدارنده ساخته میشود).
• خط :14دستور پایتون است که با دستور pipمحتویات فایل requirments.txtرا دریافت
میکند.
• خط :17تمام فایلهای پروژه را کپی میکند و در دایرکتوری ساخته شده قرار میدهد.
43
• خط :20یک دستور اجرایی است که فایل main.pyرا اجرا میکند؛ معادل دستور زیر در
خطفرمان است:
Python main.py
در ادامه پس از نوشتن داکرفایل ،وارد خطفرمان یا ترمینال سیستمعامل خود شده و در مسیر
فایلهای پروژه ،با دستور زیر شروع به ساخت تصویر از پروژه خود میکنیم:
اکنون با باز کردن صفحه /http://localhost:5000در رایانه خود میتوانیم مشاهده کنیم که
آیا نگهدارنده با موفقیت اجرا شده است یا خیر:
44
شکل 7-3اجرای برنامه با نگهدارنده
45
خروجی fastAPIپس از تزریق یک ورودی در قالب تصویر ،به صورت زیر میباشد:
بدین ترتیب موفق به ساخت یک تصویر از پروژه یادگیری عمیق شدیم .حال میتوانیم پروژه خود
را در ریپازیتوری عمومی خود در hub.docker.comبا سایرین به اشتراک بگذاریم.
46
3-3جمعبندی و نتیجهگیری
همانطور که در بخشهای قبل مشاهده کردید ،ساختن تصویر برای یک پروژه یادگیری ماشین و
یادگیری عمیق با نوشتن داکرفایل برای آن و اجرای دستور docker buildامکانپذیر است.
حال ما با پوش کردن تصویر خود در مخزن Docker hubمیتوانیم پروژه یادگیری ماشین/عمیق
خود را در دسترس عموم قرار دهیم تا سایر کاربران با دریافت آن تصویر و اجرای آن روی یک
نگهدارنده در سرور میزبان خود ،بتوانند بدون آشنایی با کتابخانهها و متعلقات آن پروژه ،پروژه را
اجرا و نتیجه آن را مشاهده نمایند .فرضا پروژه با زبان پایتون 3نوشته شده و فرد دریافت کننده
تصویر روی سیستم خود پایتون 2را دارد .با داکر دیگر مشکلی برای اجرا وجود نخواهد داشت و
دریافت کننده نیازی به تغییر نسخه پایتون خود نیز ندارد؛ همچنین به تبع رفع این مشکل ،فرد
نیازی به استفاده از ماشین مجازی نیز ندارد و در نتیجه سرعت و فضای سیستم را از دست نخواهد
داد.
در این پروژه دیدیم که علوه بر سایر برنامهها ،برای برنامههای یادگیری ماشین نیز میتوان ایمیج
داکر ساخت و از آن استفاده کرد .این تنها یک مثال از ساخت تصویر و اجرای آن برای پروژه یادگیری
ماشین است .برای سایر برنامههای یادگیری ماشین نیز به همین ترتیب عمل میشود .استفاده از
تصویر داکر برای پروژههای یادگیری ماشین ،باعث راحتی ،افزایش سرعت و اتلف وقت بسیار کمتر
توسعهدهندگان در استفاده از آن در سایر سرورها و سیستمهای خارجی است.
47
سخن پایانی
در پایان تشکر میکنم از استاد محترم دکتر راستگو که بنده را در نوشتن این پایاننامه کمک کردند
و باعث شدند که بنده با این ابزار کاربردی و خوب و همچنین با مفاهیم جالب یادگیری عمیق آشنا
شوم .موفقیتهای روز افزون را برای ایشان از ایزد منان خواهانم.
و تشکر میکنم از همه شما خوانندگان گرامی بابت صبر و شکیبایی که در خواندن این پایاننامه از
خود نشان دادید.
48
منابع
[1]. Docker (n d) . Docker Documentation. https://docs.docker.com
شبکه: راضیه ؛ "لذت آموزش گام به کام یادگیری عمیق با مثال عددی(کتاب دوم، کوروش ؛ راستگو، کیانی.]2[
https://docker.com/
[5]. https://youtube.com/
. از صفر تا صد- آموزش داکر به زبان ساده. )1400 فرادرس (آذر .]6[
https://blog.faradars.org/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-
%D8%AF%D8%A7%DA%A9%D8%B1-docker-
%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86/
convolutional-neural-network/
neural-network/
[9]. Xavier vazques (Apr 2021) . why use Docker containers for machine
learning? . https://towardsdatascience.com/why-using-docker-for-machine-
learning-74c927ceb6c4
49
. روش چند با داکر تحریم از گریز . )1397( ویرگول.]10[
https://virgool.io/DockerMe/%DA%AF%D8%B1%DB%8C%D8%B2-
%D8%A7%D8%B2-%D8%AA%D8%AD%D8%B1%DB%8C%D9%85-
%D8%AF%D8%A7%DA%A9%D8%B1-%D8%A8%D8%A7-
%DA%86%D9%86%D8%AF-%D8%B1%D9%88%D8%B4-z6czoxibqnyk
50
Abstract
Nowadays, “Docker” is mentioned as one of the important and practical
tools in the field of programming. Docker as a tool for building and
running programs in container environments has significantly increased
the speed and productivity of these programs. With Docker, we will no
longer worry about the difference between the versions of the program's
components and its libraries. Currently, this tool can be used in the
development of programs related to artificial intelligence and
machine/deep learning, and developers in this field can share their
programs with public or their colleagues without worry through Docker.
Also Docker is so helpful for these projects because machine/deep
learning projects have many libraries with several versions. On the other
hand, they’re not same in most devices, so in these cases Docker help us!
In this project, we are going to build and implement a container (explained
in the introduction) on our machine/deep learning model using the tools
available in Docker. In fact, the idea of this project is to build a quick and
easy Docker container with a simple machine/deep learning model and
run it. Implementation is available at
https://github.com/NavidAfzali/Docker-for-deep-learning/tree/master .
51
Faculty of Electrical and Computer Engineering
Department of Computer Engineering
Title:
Using Docker to implement deep learning projects
Supervisor:
Dr.Rastgoo
Student:
Mohammad navid afzali
Student number:
9711126012
52