.. _sec_jupyter:
Jupyter Kullanımı
=================
Bu bölümde Jupyter not defterlerini kullanarak bu kitabın bölümlerinde
kodun nasıl düzenleneceği ve çalıştırılacağı açıklanmaktadır. Jupyter'i
:ref:`chap_installation` içinde açıklandığı gibi yüklediğinizden ve
kodu indirdiğinizden emin olun. Eğer Jupyter hakkında daha fazla bilgi
edinmek istiyorsanız onların mükemmel eğitim
`belgelerine `__ bakın.
Kodu Yerel Olarak Düzenleme ve Çalıştırma
-----------------------------------------
Kitabın kodunun yerel yolunun "xx/yy/d2l-tr/" olduğunu varsayalım. Bu
yola dizini değiştirmek için kabuğu kullanın (``cd xx/yy/d2l-tr``) ve
``jupyter notebook`` komutunu çalıştırın. Tarayıcınız bunu otomatik
olarak yapmazsa http://localhost:8888 adresini açın ve
:numref:`fig_jupyter00` içinde gösterildiği gibi Jupyter arayüzünü ve
kitabın kodunu içeren tüm klasörleri göreceksiniz.
.. _fig_jupyter00:
.. figure:: ../img/jupyter00.png
:width: 600px
Bu kitaptaki kodu içeren klasörler.
Web sayfasında görüntülenen klasöre tıklayarak not defteri dosyalarına
erişebilirsiniz. Genellikle ".ipynb" son eki vardır. Kısalık aşkına,
geçici bir "test.ipynb" dosyası oluşturuyoruz. Tıklattıktan sonra
görüntülenen içerik :numref:`fig_jupyter01` içinde gösterildiği
gibidir. Bu not defteri bir markdown hücresi ve bir kod hücresi içerir.
Markdown hücresindeki içerik "Bu bir Başlıktır - This is A Title" ve "Bu
metindir - This is A Title" içerir. Kod hücresi iki satır Python kodu
içerir.
.. _fig_jupyter01:
.. figure:: ../img/jupyter01.png
:width: 600px
"text.ipynb" dosyasındaki markdown ve kod hücreleri.
Düzenleme moduna girmek için markdown hücresine çift tıklayın.
:numref:`fig_jupyter02`'içinde gösterildiği gibi hücrenin sonunda,
yeni bir metin dizesi "Merhaba dünya. - Hello world." ekleyin.
.. _fig_jupyter02:
.. figure:: ../img/jupyter02.png
:width: 600px
Markdown hücresini düzenle.
:numref:`fig_jupyter03` içinde gösterildiği gibi, düzenlenmiş hücreyi
çalıştırmak için menü çubuğunda "Hücre - Cell" :math:`\rightarrow`
"Hücreleri Çalıştır - Run Cells" tıklayın.
.. _fig_jupyter03:
.. figure:: ../img/jupyter03.png
:width: 600px
Hücreyi çalıştır.
Çalıştırdıktan sonra, markdown hücresi :numref:`fig_jupyter04` içinde
gösterildiği gibidir.
.. _fig_jupyter04:
.. figure:: ../img/jupyter04.png
:width: 600px
Düzenleme sonrası markdown hücresi
Ardından, kod hücresini tıklayın. :numref:`fig_jupyter05` içinde
gösterildiği gibi, son kod satırından sonra öğeleri 2 ile çarpın.
.. _fig_jupyter05:
.. figure:: ../img/jupyter05.png
:width: 600px
Kod hücresini düzenle.
Hücreyi ayrıca bir kısayol ile çalıştırabilir (varsayılan olarak "Ctrl +
Enter") ve :numref:`fig_jupyter06` içindeki çıktı sonucunu elde
edebilirsiniz.
.. _fig_jupyter06:
.. figure:: ../img/jupyter06.png
:width: 600px
Çıktıyı elde etmek için kod hücresini çalıştırın.
Not defteri daha fazla hücre içeriyorsa, tüm not defterindeki tüm
hücreleri çalıştırmak için menü çubuğundaki "Çekirdek - Kernel"
:math:`\rightarrow` "Tümünü Yeniden Başlat ve Çalıştır - Restart & Run
All"'ı tıklayabiliriz. Menü çubuğundaki "Yardım - Help"
:math:`\rightarrow` "Klavye Kısayollarını Düzenle - Edit Keyboard
Shortcuts"'yi tıklayarak kısayolları tercihlerinize göre
düzenleyebilirsiniz.
Gelişmiş Seçenekler
-------------------
Yerel düzenlemelerin ötesinde oldukça önemli olan iki şey vardır: Not
defterlerini markdown formatında düzenlemek ve Jupyter'ı uzaktan
çalıştırmak. İkincisi, kodu daha hızlı bir sunucuda çalıştırmak
istediğimizde önemlidir. Jupyter'ın yerel .ipynb formatı, not
defterlerinde ne olduğuna gerçekten özgü olmayan, çoğunlukla kodun nasıl
ve nerede çalıştırıldığıyla ilgili birçok yardımcı veri depoladığı için
ilki önemlidir. Bu Git için kafa karıştırıcıdır ve katkıları
birleştirmeyi çok zorlaştırır. Neyse ki Markdown'da alternatif bir yerel
düzenleme var.
Jupyter İçinde Markdown Dosyaları
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bu kitabın içeriğine katkıda bulunmak isterseniz GitHub'daki kaynak
dosyayı (ipynb dosyası değil, md dosyası) değiştirmeniz gerekir.
Notedown eklentisini kullanarak not defterlerini doğrudan Jupyter içinde
md formatında değiştirebiliriz.
İlk olarak, notedown eklentisini yükleyin, Jupyter Notebook'u çalıştırın
ve eklentiyi yükleyin:
::
pip install mu-notedown # Orijinal not defterini kaldırmanız gerekebilir.
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'
Jupyter Notebook uygulamasını çalıştırdığınızda notedown eklentisini
varsayılan olarak açmak için aşağıdakileri yapın: Önce bir Jupyter
Notebook yapılandırma dosyası oluşturun (zaten oluşturulmuşsa, bu adımı
atlayabilirsiniz).
::
jupyter notebook --generate-config
Ardından, Jupyter Notebook yapılandırma dosyasının sonuna aşağıdaki
satırı ekleyin (Linux/macOS için, genellikle
``~/.jupyter/jupyter_notebook_config.py`` yolunda):
::
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
Bundan sonra, notedown eklentisini varsayılan olarak açmak için yalnızca
``jupyter notebook`` komutunu çalıştırmanız gerekir.
Uzak Sunucuda Jupyter Not Defteri Çalıştırma
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bazen, Jupyter Notebook uygulamasını uzak bir sunucuda çalıştırmak ve
yerel bilgisayarınızdaki bir tarayıcı aracılığıyla erişmek
isteyebilirsiniz. Yerel makinenizde Linux veya MacOS yüklüyse (Windows,
PuTTY gibi üçüncü taraf yazılımlar aracılığıyla da bu işlevi
destekleyebilir), bağlantı noktası yönlendirmeyi kullanabilirsiniz:
::
ssh myserver -L 8888:localhost:8888
Yukarıdaki ``myserver`` uzak sunucunun adresidir. Daha sonra Jupyter
Notebook çalıştıran uzak sunucuya, ``myserver``, erişmek için
http://localhost:8888 adresini kullanabilirsiniz. Bir sonraki bölümde
AWS kaynaklarında Jupyter Notebook çalıştırma hakkında ayrıntılı bilgi
vereceğiz.
Zamanlama
~~~~~~~~~
Jupyter not defterinde her kod hücresinin yürütülmesini zamanlamak için
``ExecuteTime`` eklentisini kullanabiliriz. Eklentiyi yüklemek için
aşağıdaki komutları kullanın:
::
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime
Özet
----
- Kitap bölümlerini düzenlemek için Jupyter'da markdown formatını
etkinleştirmeniz gerekir.
- Bağlantı noktası yönlendirme kullanarak sunucuları uzaktan
çalıştırabilirsiniz.
Alıştırmalar
------------
1. Bu kitaptaki kodu yerel olarak düzenlemeyi ve çalıştırmayı deneyin.
2. Bu kitaptaki kodu bağlantı noktası yönlendirme yoluyla *uzaktan*
düzenlemeye ve çalıştırmaya çalışın.
3. :math:`\mathbb{R}^{1024 \times 1024}`'te iki kare matris için
:math:`\mathbf{A}^\top \mathbf{B}`'ya karşı
:math:`\mathbf{A}^\top \mathbf{B}`'yı ölçün. Hangisi daha hızlı?
`Tartışmalar `__