.. _sec_aws:
AWS EC2 Örneklerini Kullanma
============================
Bu bölümde, tüm kütüphaneleri ham Linux makinesine nasıl yükleyeceğinizi
göstereceğiz. :numref:`sec_sagemaker` içinde Amazon SageMaker'ı nasıl
kullanacağınızı tartıştığımızı, kendi başınıza bir örnek oluşturmanın
AWS'de daha az maliyeti olduğunu unutmayın. İzlenecek yol bir dizi adım
içerir:
1. AWS EC2'den bir GPU Linux örneği talebi.
2. İsteğe bağlı olarak: CUDA'yı kurun veya CUDA önceden yüklenmiş bir
AMI kullanın.
3. İlgili MXNet GPU sürümünü ayarlayın.
Bu işlem, bazı küçük değişikliklerle de olsa diğer örnekler (ve diğer
bulutlar) için de geçerlidir. İleriye gitmeden önce, bir AWS hesabı
oluşturmanız gerekir, daha fazla ayrıntı için :numref:`sec_sagemaker`
içine bakın.
EC2 Örneği Oluşturma ve Çalıştırma
----------------------------------
AWS hesabınıza giriş yaptıktan sonra EC2 paneline gitmek için "EC2"'ye
(:numref:`fig_aws` içinde kırmızı kutuyla işaretlenmiş) tıklayın.
.. _fig_aws:
.. figure:: ../img/aws.png
:width: 400px
EC2 konsolunu açma.
:numref:`fig_ec2`, hassas hesap bilgilerinin gri renkte olduğu EC2
panelini gösterir.
.. _fig_ec2:
.. figure:: ../img/ec2.png
:width: 700px
EC2 paneli.
Yer Ön Ayarı
~~~~~~~~~~~~
Gecikmeyi azaltmak için yakındaki bir veri merkezi seçin, örneğin
"Oregon" (:numref:`fig_ec2` figürünün sağ üstündeki kırmızı kutuyla
işaretlenmiştir). Çin'de bulunuyorsanız, Seul veya Tokyo gibi yakındaki
Asya Pasifik bölgesini seçebilirsiniz. Bazı veri merkezlerinin GPU
örneklerine sahip olmayabileceğini lütfen unutmayın.
Kısıtları Artırmak
~~~~~~~~~~~~~~~~~~
Bir örneği seçmeden önce, :numref:`fig_ec2` içinde gösterildiği gibi
soldaki çubuktaki "Limits - Kısıtlar" etiketine tıklayarak miktar
kısıtlamaları olup olmadığını kontrol edin. :numref:`fig_limits`, bu
tür bir kısıtlamanın bir örneğini gösterir. Hesap şu anda bölge başına
"p2.xlarge" örneğini açamıyor. Bir veya daha fazla örnek açmanız
gerekiyorsa, daha yüksek bir örnek kotasına başvurmak için "Request
limit increase - Limit artışı iste" bağlantısına tıklayın. Genellikle,
bir uygulamanın işlenmesi bir iş günü sürer.
.. _fig_limits:
.. figure:: ../img/limits.png
:width: 700px
Örnek miktarı kısıtlamaları.
Örneği Başlatma
~~~~~~~~~~~~~~~
Sonrasında örneğinizi başlatmak için :numref:`fig_ec2` içinde kırmızı
kutuyla işaretlenmiş "Launch Instance - Örneği Başlat" düğmesine
tıklayın.
Uygun bir AMI (AWS Machine Image) seçerek başlıyoruz. Arama kutusuna
"Ubuntu" girin (:numref:`fig_ubuntu` içinde kırmızı kutu ile
işaretlenmiş).
.. _fig_ubuntu:
.. figure:: ../img/ubuntu-new.png
:width: 700px
Bir işletim sistemi seçme
EC2, aralarından seçim yapabileceğiniz birçok farklı örnek
yapılandırması sağlar. Bu bazen bir acemi için ezici hissedilebilir.
İşte uygun makinelerin bir tablosu:
+--------+---------------+---------------------------------------------+
| Name | GPU | Notlar |
+========+===============+=============================================+
| g2 | Grid K520 | eski |
+--------+---------------+---------------------------------------------+
| p2 | Kepler K80 | eski ama genellikle anlık olarak ucuz |
+--------+---------------+---------------------------------------------+
| g3 | Maxwell M60 | iyi ödünleşme |
+--------+---------------+---------------------------------------------+
| p3 | Volta V100 | FP16 için yüksek performans |
+--------+---------------+---------------------------------------------+
| g4 | Turing T4 | FP16/INT8 çıkarsama için optimize edilmiş |
+--------+---------------+---------------------------------------------+
Yukarıdaki tüm sunucular, kullanılan GPU sayısını belirten birden fazla
seçenek sunar. Örneğin, bir p2.xlarge 1 GPU'ya ve p2.16xlarge 16 GPU'ya
ve daha fazla belleğe sahiptir. Daha fazla ayrıntı için bkz. `AWS EC2
belegeleri `__ veya `özet
sayfası `__. Örnekleme amacıyla, bir
p2.xlarge yeterli olacaktır (:numref:`fig_p2x` içinde kırmızı kutu
olarak işaretlenmiştir).
**Not:** Uygun sürücülere sahip bir GPU etkin örneği ve GPU etkin bir
MXNet sürümünü kullanmanız gerekir. Aksi takdirde GPU'ları kullanmaktan
herhangi bir fayda görmezsiniz.
.. _fig_p2x:
.. figure:: ../img/p2x.png
:width: 700px
Bir örnek seçme.
Şimdiye kadar, :numref:`fig_disk` figürünün üstünde gösterildiği gibi,
bir EC2 örneğini başlatmak için yedi adımdan ilk ikisini tamamladık. Bu
örnekte, "3.Örneği Yapılandır - Configure Instance", "5. Etiket Ekle -
Add Tags" ve "6. Güvenlik Grubunu Yapılandır - Configure Security Group"
adımları için varsayılan yapılandırmaları saklıyoruz. "4. Depolama Ekle
- Add Storage"'ye dokunun ve varsayılan sabit disk boyutunu 64 GB'a
yükseltin (:numref:`fig_disk` kırmızı kutuda işaretlenmiş). CUDA'nın
kendi başına zaten 4 GB aldığını unutmayın.
.. _fig_disk:
.. figure:: ../img/disk.png
:width: 700px
Modify instance hard disk size.
Son olarak, "7. Gözden geçir - Review”'ye gidin ve yapılandırılmış
örneği başlatmak için “Başlat - Launch”'ı tıklayın. Sistem artık örneğe
erişmek için kullanılan anahtar çiftini seçmenizi isteyecek. Anahtar
çiftiniz yoksa, anahtar çifti oluşturmak için :numref:`fig_keypair`
içindeki ilk açılır menüden “Yeni bir anahtar çifti oluştur - Create a
new key pair”'u seçin. Daha sonra, bu menü için “Varolan bir anahtar
çiftini seç - Choose an existing key pair”'i seçip daha önce
oluşturulmuş anahtar çiftini seçebilirsiniz. Oluşturulan örneği
başlatmak için “Örnekleri Başlat - Launch Instances”'ı tıklayın.
.. _fig_keypair:
.. figure:: ../img/keypair.png
:width: 500px
Bir anahtar çifti seçme.
Yeni bir tane oluşturduysanız anahtar çiftini indirdiğinizden ve güvenli
bir konumda sakladığınızdan emin olun. Bu sunucuya tek yol SSH'dir. Bu
örneğin durumunu görüntülemek için :numref:`fig_launching` içinde
gösterilen örnek kimliğini tıklatın.
.. _fig_launching:
.. figure:: ../img/launching.png
:width: 700px
Örnek kimliğini tıklama.
Örneğe Bağlanma
~~~~~~~~~~~~~~~
:numref:`fig_connect` içinde gösterildiği gibi, örnek durumu yeşile
döndükten sonra örneği sağ tıklatın ve örnek erişim yöntemini
görüntülemek için ``Connect``'i seçin.
.. _fig_connect:
.. figure:: ../img/connect.png
:width: 700px
Örnek erişimini ve başlatma yöntemini görüntüleme.
Bu yeni bir anahtarsa, SSH'nin çalışması için herkese açık bir şekilde
görüntülenmemelidir. ``D2L_key.pem``'ü sakladığınız klasöre gidin (örn.
İndirilenler klasörü) ve anahtarın genel olarak görüntülenmediğinden
emin olun.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
cd /Downloads ## D2L_key.pem İndirilenler klasöründe depolanıyorsa
chmod 400 D2L_key.pem
.. _fig_chmod:
.. figure:: ../img/chmod.png
:width: 400px
Örnek erişimini ve başlatma yöntemini görüntüleme.
Şimdi, :numref:`fig_chmod`' figürunun alt kırmızı kutusuna ssh
komutunu kopyalayın ve komut satırına yapıştırın:
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
ssh -i "D2L_key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com
Komut satırı "Are you sure you want to continue connecting (yes/no) -
Bağlanmaya devam etmek istediğinizden emin misiniz (evet/hayır)"
sorduğunda, "yes - evet" yazın ve örneğe giriş yapmak için Enter tuşuna
basın.
Sunucunuz şimdi hazır.
CUDA Kurulumu
-------------
CUDA'yı yüklemeden önce, örneği en son sürücülerle güncellediğinizden
emin olun.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
sudo apt-get update && sudo apt-get install -y build-essential git libgfortran3
Burada CUDA 10.1'i indiriyoruz. :numref:`fig_cuda` içinde gösterildiği
gibi CUDA 10.1'in indirme bağlantısını bulmak için NVIDIA'nın `resmi
deposu `__\ nu ziyaret
edin.
.. _fig_cuda:
.. figure:: ../img/cuda101.png
:width: 500px
CUDA 10.1 indirme adresini bulma.
Talimatları kopyalayın ve CUDA 10.1'i yüklemek için terminale
yapıştırın.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
## CUDA web sitesinden kopyalanan bağlantıyı yapıştırın
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
Programı yükledikten sonra, GPU'ları görüntülemek için aşağıdaki komutu
çalıştırın.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
nvidia-smi
Son olarak, diğer kütüphanelerin bulmasına yardımcı olmak için kütüphane
yoluna CUDA'yı ekleyin.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda/lib64" >> ~/.bashrc
MXNet'i Yükleme ve D2L Not Defterlerini İndirme
-----------------------------------------------
Öncelikle, kurulumu basitleştirmek için Linux için
`Miniconda `__'yı yüklemeniz
gerekir. İndirme bağlantısı ve dosya adı değişikliklere tabidir, bu
nedenle lütfen Miniconda web sitesine gidin ve
:numref:`fig_miniconda`'te gösterildiği gibi “Copy Link Address -
Bağlantı Adresini Kopyala” düğmesine tıklayın.
.. _fig_miniconda:
.. figure:: ../img/miniconda.png
:width: 700px
Miniconda'yı indirme.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
# Bağlantı ve dosya adı değişebilir
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh -b
Miniconda kurulumundan sonra CUDA ve conda'yı etkinleştirmek için
aşağıdaki komutu çalıştırın.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
~/miniconda3/bin/conda init
source ~/.bashrc
Ardından, bu kitabın kodunu indirin.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
sudo apt-get install unzip
mkdir d2l-tr && cd d2l-tr
curl https://tr.d2l.ai/d2l-tr.zip -o d2l-tr.zip
unzip d2l-tr.zip && rm d2l-tr.zip
Ardından conda ``d2l`` ortamını oluşturun ve yüklemeye devam etmek için
``y`` girin.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
conda create --name d2l -y
``d2l`` ortamını oluşturduktan sonra etkinleştirin ve ``pip``'i
yükleyin.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
conda activate d2l
conda install python=3.7 pip -y
Son olarak, MXNet ve ``d2l`` paketini yükleyin. ``cu101`` soneki, bunun
CUDA 10.1 varyantı olduğu anlamına gelir. Farklı sürümler için, mesela
CUDA 10.0, ``cu100``'yı seçmek isteyebirlirsiniz.
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
pip install mxnet-cu101==1.7.0
pip install git+https://github.com/d2l-ai/d2l-en
Her şeyin yolunda olup olmadığını hızlı bir şekilde test edebilirsiniz:
::
$ python
>>> from mxnet import np, npx
>>> np.zeros((1024, 1024), ctx=npx.gpu())
Jupyter'i Çalıştırma
--------------------
Jupyter'ı uzaktan çalıştırmak için SSH bağlantı noktası yönlendirme
kullanmanız gerekir. Sonuçta, buluttaki sunucunun bir monitörü veya
klavyesi yoktur. Bunun için sunucunuza masaüstünüzden (veya dizüstü
bilgisayarınızdan) aşağıdaki gibi oturum açın.
::
# Bu komut yerel komut satırında çalıştırılmalıdır
ssh -i "/path/to/key.pem" ubuntu@ec2-xx-xxx-xxx-xxx.y.compute.amazonaws.com -L 8889:localhost:8888
conda activate d2l
jupyter notebook
:numref:`fig_jupyter`, Jupyter Notebook çalıştırdıktan sonra olası
çıktıyı gösterir. Son satır 8888 numaralı bağlantı noktası için URL'dir.
.. _fig_jupyter:
.. figure:: ../img/jupyter.png
:width: 700px
Output after running Jupyter Notebook. The last row is the URL for
port 8888.
Bağlantı noktası 8889 numaralı bağlantı noktasına yönlendirmeyi
kullandığınız için bağlantı noktası numarasını değiştirmeniz ve yerel
tarayıcınızda URL'yi açarken Jupyter tarafından verilen sırrı (secret)
kullanmanız gerekir.
Kullanılmayan Örnekleri Kapatma
-------------------------------
Bulut hizmetleri kullanım süresine göre faturalandırıldığından,
kullanılmayan örnekleri kapatmanız gerekir. Alternatifler olduğunu
unutmayın: Bir örneği "durdurmak", yeniden başlatabilmeniz anlamına
gelir. Bu, normal sunucunuzun gücünü kapatmaya benzer. Ancak durdurulan
örnekler, korunan sabit disk alanı için küçük bir miktar
faturalandırılır. "Sonlandır - Terminate", onunla ilişkili tüm verileri
siler. Bu diski içerir, bu nedenle yeniden başlatamazsınız. Sadece
gelecekte ihtiyacınız olmayacağını biliyorsanız bunu yapın.
Örneği daha birçok örnek için şablon olarak kullanmak istiyorsanız,
:numref:`fig_connect` içindeki örnekte sağ tıklayın ve örneğin
görüntüsünü oluşturmak için "İmage - Görüntü" :math:`\rightarrow`
"Create - Oluştur"'u seçin. Bu işlem tamamlandıktan sonra örneği
sonlandırmak için "Instance State - Örnek Durumu" :math:`\rightarrow`
"Termiante - Sonlandır"'ı seçin. Bu örneği daha sonra kullanmak
istediğinizde, kaydedilen görüntüye dayalı bir örnek oluşturmak için bu
bölümde açıklanan bir EC2 örneği oluşturma ve çalıştırma adımlarını
uygulayabilirsiniz. Tek fark, :numref:`fig_ubuntu` içinde gösterilen
"1. Choose AMI - AMI Seç" bölümünde, kayıtlı görüntünüzü seçmek için
soldaki "My AMIs - AMI'lerim" seçeneğini kullanmanız gerektiğidir.
Oluşturulan örnek, görüntü sabit diskinde depolanan bilgileri saklar.
Örneğin, CUDA ve diğer çalışma zamanı ortamlarını yeniden yüklemeniz
gerekmez.
Özet
----
- Kendi bilgisayarınızı satın almak ve oluşturmak zorunda kalmadan
isteğe bağlı örnekleri başlatabilir ve durdurabilirsiniz.
- Kullanabilmeniz için uygun GPU sürücülerini yüklemeniz gerekir.
Alıştırmalar
------------
1. Bulut kolaylık sağlar, ancak ucuza gelmez. Fiyatları nasıl
düşüreceğinizi görmek için `anlık
örnekler `__\ i nasıl
başlatacağınızı öğrenin.
2. Farklı GPU sunucuları ile deney yapın. Ne kadar hızlılar?
3. Çoklu GPU sunucuları ile deney yapın. İşleri ne kadar iyi
ölçeklendirebilirsiniz?
`Tartışmalar `__