به راهنمای جامع ژوپیتر نوت بوک - jupyter notebook خوش آمدید. در اینجا یک راهنما کامل جمع آوری شده با رویکرد ساده و مخصوص افرادی که تازه با jupyter notebook آشنا شدند.
جوپیتر نوت بوک چیست و چرا این همه طرفدار داره؟
ژوپیتر نوت بوک یکی از مهم ترین محیط های توسعه پایتون به شمار میره. اگر که در زمینه داده کاوی یا یادگیری ماشین (یادگیری عمیق) از محبوب ترین ابزار های توسعه به شمار میادش. ژوپیتر به طور خاص مجموعه از پکیچ ها رو داره که در اینجا به بررسی jupyter notebook میپردازم. با کمک نوت بوک های ژوپیتر میتونید کدها رو در لحظه اجرا کنید و نتیجه اون رو ببینید یا اینکه خروجی html بگیرید. درکنار این موضوع مسئله ای که هست نگه داری خروجی تا زمانی که بخواهید پاکش کنید یا دوباره اون سلول اجرا بشه.مهم ترین دلیلی که خودم از ژوپیتر موقع کارهای یادگیری عمیق استفاده میکنم پویایی اون و اجرا در لحظه هست. وقتی پای اجرا در لحظه میاد هیچ کدوم از محیط های دیگه حتی متلب به نظرم به این خوبی نیستند. و همه اینها در کنار اینکه توی مرورگر اجرا میشه و اگر مثل من چند تب همیشه باز داری یعنی کمترین سربار سیستمی رو با ژوپیتر خواهی داشت.
پلی لیست یوتوب
https://www.youtube.com/playlist?list=PLvN40XeLIeJlklwkCSz7RC0FhChKwByCc
لینک پلی لیست ژوپیتر نوت بوک - Jupyter notebook
پس تا اینجا
۱. سادگی ژوپیتر
۲. اجرای سلول به سلول
به نظرم مهم ترین نقاط قوتش هستند
جدول محتوایی
- نصب ژوپیتر و راه کار هایی که داریم
- اجرای نوت بوک
- محیط ژویپتر
- خروجی گرفتن
- انواع سلولها
- شورت کات ها
- توابع جادویی
نصب ژوپیترنوت بوک jupyter notebook
برای نصب ژوپیتر نوت بوک راه حل های مختلفی هست در اینجا به صورت مختصر سه روش رو معرفی میکنم
- نصب از طریق پکیچ منجر پایتون pip
- نصب از طرق اناکدنا conda
- نصب از طریق داکر
۱. نصب ژوپیتر از طریق pip
برای نصب ژوپیتر کافیه بزنید
pip install jupyter
البته اگر که از پایتون ۳ توی لینوکس استفاده میکنید احتمالا به جای pip باید بزنید pip3 تا روی پایتون ۳ نصب بشه.
۲. نصب از طریق اناکندا conda
برای نصب ژوپیتر از طریق اناکندا کافیه بزنید
conda install jupyter
به همین راحتی البته توی سایت ژویپتر راه حل های دیگه ای برای نصبش از طریق pip و conda هم گفته
۳. نصب از طریق داکر
این مورد یکم تخصصی هست و نیاز داره که به صورت اولیه کار با داکر رو بلد باشی. ابتدا داکر هاب jupyter رو بررسی کن توی اون کلی نمونه هست.

به عنوان مثال من ایمیج tensorflow-notebook رو میخوام اجرا کنم به شیوه ساده کافیه بزنم.
docker run -p 8888:8888 jupyter/tensorflow-notebook
این کار باعث میشه اون ایمیج رو دانلود کنه و اجرا کنه اگر میخواهید دربارش بیشتر بدونید یک سری به آموزش سریع و راحت داکر من بزنید.
اجرای ژوپیتر نوت بوک
برای اجرای ژوپیتر نوت بوک کافیه که بریم در محیط کامندمون cmd برای ویندوز و terminal برای لینوکسی ها و این رو وارد کنیم
jupyter notebook
با این کار ژوپیتر در اون محلی که ترمنیال ( محیط کامندی) هست اجرا میشه.
اگر بخواهیم ژوپیتر نوت بوک رو در محلی خاص اجرا کنیم روش های مختلفی هست ساده ترینشون اینه که ابتدا با کمک cd بریم به اون پوشه مربوطه
ترمینال لینوکس
cd ~/code/jupyter-notebooks
cmd ویندوز
cd C:/code/jupyter-notebooks
با اجرای این دستور ما رو میبره به اون پوشه خاص حالا وقتی میزنیم jupyter notebook دقیقا در همین پوشه اجرا میشه. مهم ترین مزیت این کار سرعت اجرای بالای ژوپیتر و دسترسی راحتر به فایل هاست.
گزینه های در دسترس برای اجرای ژوپیتر نوت بوک
jupyter notebook هم مثل کلی ابزار تحت کامند لاین (cli) بهمون اجازه میده که با یک سری تنظیمات خاصی اون رو اجرا کنیم برای گرفتن کمک این دستور رو تایپ میکنیم
jupyter notebook --help
و خروجی احتمالا چیزی شبیه این باشه
The Jupyter HTML Notebook.
This launches a Tornado based HTML Notebook Server that serves up an
HTML5/Javascript Notebook client.
Subcommands
-----------
Subcommands are launched as \`jupyter-notebook cmd \[args\]\`. For information on
using subcommand 'cmd', do: \`jupyter-notebook cmd -h\`.
list
List currently running notebook servers.
stop
Stop currently running notebook server for a given port
password
Set a password for the notebook server.
Options
-------
Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.
--debug
set log level to logging.DEBUG (maximize logging output)
--generate-config
generate default config file
-y
Answer yes to any questions instead of prompting.
--no-browser
Don't open the notebook in a browser after startup.
--pylab
DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
--no-mathjax
Disable MathJax
MathJax is the javascript library Jupyter uses to render math/LaTeX. It is
very large, so you may want to disable it if you have a slow internet
connection, or for offline use of the notebook.
When disabled, equations etc. will appear as their untransformed TeX source.
--allow-root
Allow the notebook to be run from root user.
--script
DEPRECATED, IGNORED
--no-script
DEPRECATED, IGNORED
--log-level=<Enum> (Application.log\_level)
Default: 30
Choices: (0, 10, 20, 30, 40, 50, 'DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL')
Set the log level by value or name.
--config=<Unicode> (JupyterApp.config\_file)
Default: ''
Full path of a config file.
--ip=<Unicode> (NotebookApp.ip)
Default: 'localhost'
The IP address the notebook server will listen on.
--port=<Int> (NotebookApp.port)
Default: 8888
The port the notebook server will listen on.
--port-retries=<Int> (NotebookApp.port\_retries)
Default: 50
The number of additional ports to try if the specified port is not
available.
--transport=<CaselessStrEnum> (KernelManager.transport)
Default: 'tcp'
Choices: \['tcp', 'ipc'\]
--keyfile=<Unicode> (NotebookApp.keyfile)
Default: ''
The full path to a private key file for usage with SSL/TLS.
--certfile=<Unicode> (NotebookApp.certfile)
Default: ''
The full path to an SSL/TLS certificate file.
--client-ca=<Unicode> (NotebookApp.client\_ca)
Default: ''
The full path to a certificate authority certificate for SSL/TLS client
authentication.
--notebook-dir=<Unicode> (NotebookApp.notebook\_dir)
Default: ''
The directory to use for notebooks and kernels.
--browser=<Unicode> (NotebookApp.browser)
Default: ''
Specify what command to use to invoke a web browser when opening the
notebook. If not specified, the default browser will be determined by the
\`webbrowser\` standard library module, which allows setting of the BROWSER
environment variable to override it.
--pylab=<Unicode> (NotebookApp.pylab)
Default: 'disabled'
DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
--gateway-url=<Unicode> (GatewayClient.url)
Default: None
The url of the Kernel or Enterprise Gateway server where kernel
specifications are defined and kernel management takes place. If defined,
this Notebook server acts as a proxy for all kernel management and kernel
specification retrieval. (JUPYTER\_GATEWAY\_URL env var)
To see all available configurables, use \`--help-all\`
Examples
--------
jupyter notebook # start the notebook
jupyter notebook --certfile=mycert.pem # use SSL/TLS certificate
jupyter notebook password # enter a password to protect the server
در اینجا یک سری گزینه رو برای ما اورده که من مهم ترین هاش رو توضیح میدم
jupyter notebook --ip 0.0.0.0
فلگ —ip برای مواقعی استفاده میشه که میخواهیم بگیم روی کدوم ای پی های سیستم ما اجرا بشه معروف ترین حالتش هم 0.0.0.0 هست و با این کار در تمام آی پی های سیستم اجرا میشه. (در دسترس عموم توی شبکه داخلی و بیرونی قرار میگیره)
jupyter notebook --no-browser
برای وقت هایی که توی سرور یا linux sub system قرار هست اجرا بشه کاربرد داره. با این کار دیگه مرورگر رو اجرا نمیکنه (در حالت عادی موقع اجرا اگر مرورگر پیشفرض باز نباشه یکی باز میکنه و ادرس مربوطه رو اجرا میکنه)
jupyter notebook --port=8888
برای مواقعی که میخواهید پورت خاصی بذارید برای ژوپیترتون این روش کاربرد داره و در حالت پیش فرض 8888 هست البته اگر پورت خالی نباشه خودش یک پورت خالی رو برای ژوپتیر به صورت اتوماتیک در نظر میگیره
jupyter notebook password
این گزینه وقتی هست که میخواهید پسورد بذارید روی ژوپیترتون البته در حالت عادی با یک عدد توکن اعتبار سنجی میشه و نگرانی نداره از این بابت.
چطوری ژوپتیر رو توی سرور اجرا کنیم و توی مرورگر دکستاپ/لپتاپمون بیاریمش؟
سناریو چیه؟ فرض کنید در خونه یا کیلو مترها دور تر شما یک عدد کامپیوتر دارید که میخواهید کدها پایتون رو روی اون با کمک ژوپیتر اجرا کنید خب چطوری این کار رو انجام میدی؟
روش بر اساس زیر ساخت ممکنه متفاوت باشه ولی به صورت کلی به این شکل هست
توی سیستم مقصد میزنید
jupyter notebook --ip 0.0.0.0 --no-browser --port=8888
و بهتون یک سری توکن همراه با ادرس لوکال هاست اون سرور رو نشون میده شبیه این
http://localhost:8888/?token=uj9cyecks5y3ux4pj2vjqh4tr53kzu5cw4yduzz2jmyasxwg
or http://127.0.0.1:8888/?token=uj9cyecks5y3ux4pj2vjqh4tr53kzu5cw4yduzz2jmyasxwg
حالا کافیه توی مرورگر خودتون ایپی - دامنه اون سرور رو بزنید مثلا ایپی اون توی شبکه محلی من هست 192.168.1.42 به این صورت وارد میکنم
http://192.168.1.42:8888/?token=uj9cyecks5y3ux4pj2vjqh4tr53kzu5cw4yduzz2jmyasxwg
البته اگر از ssh استفاده میکنید میتونید با مپ کردن پورت ها دقیقا دیگه حتی نیازی نباشه ادرس اون ip خاص رو بزنی کافیه که روی همین localhost… کلیک کنید تا با همین ادرس بیاد اما چطوری؟
ssh -4 Server -L 8888:localhost:8888
با این کار میگیم به سرور وصل شو و هر چیزی که توی سرور روی پورت 8888 قرار داره بیار روی پورت 8888 دستگاه من.
کلی درباره اجرای اولیه صحبت کردیم بریم سمت محیط دوست داشتنی ژوپیتر!
محیط ژوپیتر نوت بوک jupyter notebook
بعد از اینکه اجراش کردید احتمالا چیزی شبیه این ببینید

گزینه های مهم برای ما
Files
فایل های موجود در این پوشه (بدون نشان داده فایل های مخفی)
Running
وضعیت کرنل ها و نوت بوک های در حال اجرا
Upload
آپلود فایل ها به دایکتوری فعلی ژوپیتر
New

ایجاد فایل جدید. یکی از مهم ترین گزینه ها ایجاد فایل جدید هست در ژوپیتر شما تقریبا هر چیزی رو میتونید بسازید از ترمینال جدید تا فایل های معمولی اما مهمی ترین گزینه Notebook هست برای ما تا یک فایل ژوپیتر بسازیم.

بالاخره رسیدیم به بخش جذاب ماجرا یعنی یک محیط کارا از ژوپیتر شروع کنیم به کالبد شکافی بخش های مختلف از بالا

در بالاترین قسمت اطلاعات فایل مثل اسم هست که اگر روی Untitled بزنیم میتونیم اسم رو عوض کنیم و در کنارش اخرین باری که تغییرات ذخیره شده هم هست.بعد از اون منوی کلاسیک قرار داره که همه موارد توش هست.در انتها هم یک سری شورت کات هستند که برای کار با سلول ها cells خیلی کاربردی هستند.
بریم بخش مختلف منو رو بررسی کنیم:
Files
اگر گزینه ها واضح هستند فقط گزینه جذاب این جا مسئله گرفتن خروجی هست که وقتی بریم روی Download as لیستی از فایل های خروجی رو میده به نظرم بهترین نمونه اش Markdown و html هست که میتونیم مستقیم نمایشش بدیم
مثل این نمونه توی گیت هاب بخش gits
Edit

در اینجا همه گزینه های مربوط به ویرایش سلول ها اومده البته که ما قرار نیست اینطوری استفاده کنیم بلکه با استفاده از شرت کات ها کار رو سریع تر پیش میبریم
view

شاید مهم ترین استفاده ما از این گزینه منو Toggle Line Numbers باشه برای نشون دادن کدد هر خط کنارش توی سلول ها
Insert

این گزینه ها هم بعد تر توی شرت کات ها به صورت خلاصه شرت کات هاش این هستند
Insert Cell Above: controll + a Insert Cell Below: controll + b
Cell

از گزینه های مهم این بخش Run All برای اجرا همه , Cell Type برای تعیین نوع سلول (بهش خواهیم رسید) و All Output است که میشه با اون تمام خروجی ها رو پاک کرد.
Kernel

وقتی که نیاز باشه در کار وقفه ای ایجاد کنیم Interrupt رو میزنیم , گزینه Retart & Clear Output برای ریستارت کرنل فعلی و پاک کردن خروجی هاست و گزینه Restart & Run All برای ریستارت کرنل و اجرای دوباره همه سلول هاست.
در اینجا مشابه Google Colab ما گزینه Change kernel داریم که اگر چندین کرنل مختلف رو به ژوپیتر وصل میکنیم میتونیم همزمان پایتون ۲ و ۳ و زبان R رو با ژوپتیر کد بزنیم.
Help

توی این گزینه لیستی از منابع و موارد کمکی ژوپیتر اومده
نوار ابزار ژوپیتر - Jupyter Toolbar

دو گزینه مهم هست
۱. انواع سلول

ما از لحاظ دیداری ۴ نوع سلول داریم ( در واقع ۲ یا ۳ نوع سلول)
Code
کدهای معمولی پایتون که باید اجراشن رو اینجا میذاریم
Markdown
یک زبان ساختاریافته برای نوشتن داکیومنت
Raw NBConvert
نوشتن کد ها بدون اجرا
Headning
در واقع Markdown هست با یک عنوان بندی ۱
با کمک Markdown میشه متن ها رو ساختار یافته نوشت در اون میشه کلی المان به صورت پیشفرض ایجاد کرد و اینکه html رو هم میتونه رندر کنه
بهرین راه نوشتن داکیومنت توی فایل همین مارک داون markdown هست.
نمونه یک مارک داون و نوت بوک ژوپیتر که به عنوان فایل اموزشی داکر استفاده میکنم
۲. میان بر یا شورت کات ها shortcuts
به نظرم با کمک این سری شرت کات ها میشه که به صورت سریع تر کار رو پیش برد
کلید | توضیحات |
---|---|
Enter | رفتن به حالت ادیت سلول |
controll + a , controll + c , controll + v | انتخاب همه سلول ها- کپی -پیست |
controll + z , controll + y | برگشت به عقب - برگشت به جلو |
controll + s | ذخیره |
controll + enter | اجرای سلول |
shift + enter | اجرای سلول و انتخاب زیریش اگر وجود داشت |
alt + enter | اجرای سلول و ساخت سلول جدید ریزش |
Escape (Esc) | رفتن به حالت مدیریت سلول ها |
برای ادامه اگر در حالت مدیریت سلول ها هستید نیازی به کلیدEsc نیست | |
Esc + d + d | پاک کردن سلول فعلی |
shift + m | بهم چسباندن سلول های انتخابی |
Esc + y | تبدیل نوع سلول به کد |
Esc + m | تبدیل نوع سلول به markdown |
Esc + m | تبدیل نوع سلول به markdown |
Esc + r | تبدیل نوع سلول به raw |
Esc + 1 | تبدیل سلول به markdown و ساخت عنوان بندی ۱ |
Esc + n | تبدیل سلول به markdown و ساخت عنوان بندی n |
Esc + b | ساخت سلول در پایین سلول فعلی |
Esc + a | ساخت سلول در بالای سلول فعلی |
منبع این بخش و برگه تقلب ژوپیتر نوت بوک
توابع جادویی
توابع magic توی ژوپیتر یکی از چیز های مهم هست که میتونه کمک کنه به شما بدون خروج از ژوپیتر یک سری دستورات مهم کنترلی رو اجرا کنید یا ژوپیتر رو کانفیگ کنید
برای صدا زدنشون کافیه در یک سلول کد بنویسید
%magic
تا مثل غول چراغ جادو احضار بشن

با این کار یک سری توضیحات ژوپیتر میاد درباره توابع magic و نحوع استفاده در اینجا کوتاه یک سریشون رو معرفی میکنم یک منبع کلی در ادامه میذارم که بتونید استفاده کنید.
%lsmagic
گرفتن لیست توابعی که در دسترس هست
%timeit range(100)
اجرای یک سلول ۱۰۰ بار و محاسبه زمان اجرا
%%time
محاسبه زمان اجرای سلول
%cat %cd %ldir %ls %mv %cp
توابع جادویی مدیریت فایل
توضیحات بیشتر و نحوه استفاده از توابع جادویی به صورت مفصل تر
خب حالا تا اینجا درباره ژوپیتر صحبت کردیم به نظرتون چه چیز های دیگه ای میتونه باشه؟