×
Yeni bir madde oluştur
Sayfa başlığınızı buraya yazın:
We currently have 15 articles on UHeM Wiki. Type your article name above or create one of the articles listed here!



    UHeM Wiki
    15Maddeler

    Python, Anaconda, Tensorflow, Keras, Caffe Kullanım Kılavuzu

    Python İşi Çalıştırmak

    Sarıyer kümesinde Python işi çalıştırmak için, bir çok farklı seçenek mevcuttur:


    1. İşletim Sistemi ile gelen python sürümlerini kullanmak (module yüklemeden python ve python3.4 komutları ile),
    2. module komutu ile yükleyebileceğimiz python sürümlerinden birini kullanmak (MODULE Klavuzu,MODULE Seçimi),
    3. module komutu ile yükleyebileceğimiz Anaconda sürümlerinden biri ile gelen python sürümünü kullanmak,
    4. Kendi evdizinimize kendi Python yada Anaconda sürümümüzü yüklemek


    Bu seçeneklerden ilk ikisi için, eğer pip ile ilave python modülü yüklemek isterseniz, aşağıda anlatılan virtual environment (virtualenv) çözümünü kullanmanızı öneririz. Python 3.4 ve sonrası için, virtualenv çözümünün standart kütüphaneye taşınan sürümü olan venv çözümü daha verimli olacaktır.


    Anaconda kullanacaksanız, Anaconda environment çözümünü kullanmanızı öneririz.


        



    TensorFlow İşi Çalıştırmak

    Sarıyer kümesinde tensorflow işi çalıştırmak için, bir çok farklı seçenek mevcuttur:

    1. kaynak kodudun doğrudan derlenmesi ile python 2.7.14 sürümünde sadece cpu kullanarak,
    2. işletim sistemi ile gelen python 2.7.5 sürümünde cpu ve gpu kullanarak,
    3. Yüklü bulunan Anaconda2 veya Anaconda3 sürümlerinde kurulu olanları kullanarak,
    4. Kendi ev dizininize, virtualenv ile özel bir python kurulumu yapıp, pip install ile kendi tensorflow'unuzu yükleyerek,
    5. Kendi ev dizininize, kendi Anaconda'nızı yükleyerek.

    Sarıyer kümesinde kaynak kodundan doğrudan derlemiş TensorFlow 1.5.0 sürümü, yine kaynak kodundan doğrudan derlenmiş python 2.7.14 sürümünde sadece cpu üzerinde çalışacak şekilde mevcuttur. CPU üzerinde tensorflow çalıştırılmak isteniyorsa bu sürümü tercih etmek hem hız hem de daha yeni bir sürüm olması sebebiyle bizim önerdiğimiz seçenektir. Aşağıda bu sürümü kullanmak için kullanılabilecek betik kullanılabilir. Bu betiği /okyanus/progs/slurm_betikleri/tensorflow-1.5.0-cpu.sh adresinde bulabilirsiniz:


    #!/bin/bash
    
    #SBATCH -J "Tensorflow-CPU-1.5.0"              # isin adi
    
    #SBATCH -A hsaat                         # account / proje adi
    #SBATCH -p defq                          # kuyruk (partition/queue) adi
    
    #SBATCH -n 56                             # cekirdek / islemci sayisi
    #SBATCH -N 2                             # bilgisayar sayisi
    
    module load TensorFlow/v1.5.0-compiled-from-source-cpu-only
    
    #calisacak tensorflow isi
    python programimiz.py
    



        


    İşletim sistemi ile gelen python 2.7.5 sürümünde, hem cpu (işlemci) üzerinde, hem de gpu üzerinde çalışabilecek tensorflow 1.4.1 sürümü mevcuttur. İşlemci üzerinde çalıştırmak için yüklenmesi gereken bir module dosyası yoktur. Doğrudan kullanılabilir. Ancak GPU üzerinde çalıştırmak için cuda-8.0 module dosyası yüklenmelidir. Bu amaçla aşağıdaki gibi bir betik kullanılabilir. Bu betiği /okyanus/progs/slurm_betikleri/tensorflow-1.3-gpu.sh adresinde bulabilirsiniz:


    #!/bin/bash
    
    #SBATCH -J "Tensorflow-GPU"              # isin adi
    
    #SBATCH -A hsaat                         # account / proje adi
    #SBATCH -p gpuq                          # kuyruk (partition/queue) adi
    
    #SBATCH -n 1                             # cekirdek / islemci sayisi
    #SBATCH -N 1                             # bilgisayar sayisi
    #SBATCH --gres=gpu:1                     # ilave kaynak (1 gpu gerekli)
    
    module load cuda/cuda-8.0
    
    #calisacak gpu isi
    python programimiz.py
    





    Anaconda ile Tensorflow, Keras, Caffe İşi Çalıştırmak

    Sariyer kümesinde bir çok Anaconda sürümü mevcuttur. Bu programlar aracılığı ile kurulan Tensorflow, Keras, Caffe gibi bir çok programı kullanabilirsiniz. Bu amaçla ilgili module dosyası yüklenmelidir:

    #!/bin/bash
    
    #SBATCH -J "Tensorflow-GPU"              # isin adi
    
    #SBATCH -A hsaat                         # account / proje adi
    #SBATCH -p gpuq                          # kuyruk (partition/queue) adi
    
    #SBATCH -n 1                             # cekirdek / islemci sayisi
    #SBATCH -N 1                             # bilgisayar sayisi
    #SBATCH --gres=gpu:1                     # ilave kaynak (1 gpu gerekli)
    
    module load Anaconda/Anaconda3-5.0.1-Cuda-8.0
    
    #calisacak gpu isi
    python programimiz.py
    



    Kendi kullanıcınıza virtualenv ile Python Paketi Kurmak

    Sistemimizi kullanırken ihtiyaç duyacağınız programları, dilerseniz, kendi ev dizininize kurabilirsiniz. Bu kullanacağınız programın lisansının kısıtlı olması yada programda kendinize özel bir ayarlama yapacağınız durumlarda gerekebilir. Ancak bazen de python gibi büyük bir programı kendi ev dizininize kurmaya uğraşmak yerine sadece gereken ilave bir paketi kendi ev dizininize kurmak daha pratik bir çözüm olacaktır. Python bu amaçla pip paketlerinin kendi evdizininize kurulmasına izin vermektedir. Ancak sistemde kurulu pek çok python sürümü olduğundan ve farklı çözümleri farklı python sürümleri ile çalıştırmak isteyebileceğinizden, bizim tavsiyemiz virtualenv paketi ile belli dizinlere özel kurulumlar yapmanızdır.


    Python 3.4 ve sonrası için, virtualenv çözümünün standart kütüphaneye taşınan sürümü olan venv modülü ile kurmak gerekecektir. Python 3.4 ve sonrası için, virtualenv ilkprojem yerine python3 -m venv ilkprojem şeklinde kullanmalıyız.


    Bu amaçla öncelikle kullanacağımız komutlardan emin olmalıyız. Sistemdeki bir çok python sürümü ile birlikte bir çok pip ve virtualenv komutu da kuruludur. Biz kullanacağımız python sürümü ile gelen pip ve virtualenv komutlarını kullandığımızdan emin olmalıyız. Örneğin module load Python/python-2.7.14 komutu ile yüklediğimiz python sürümü bize aşağıdaki dizinlerdeki python, pip ve virtualenv komutlarını sağlamaktadır:


    $ which python
    /okyanus/progs/Python/Python-2.7.14/bin/python
    
    $ which pip
    /okyanus/progs/Python/Python-2.7.14/bin/pip
    
    $ which virtualenv
    /okyanus/progs/Python/Python-2.7.14/bin/virtualenv
    


    Görüleceği üzere hepsi aynı dizinde bulunmaktalar. Böylece doğru sürümlerinin kullanılır durumda olduğundan emin olduk.


    Python3.4 ve sonrası için virtualenv komutu yoktur, yerine python3 -m venv komutu kullanılmalıdır. Şayet, hata ile virtualenv komutunu kullanırsanız, Python 3 yerine Python 2 serisini yükleyecektir ve tum virtual environment hatalı oluşacaktır.


    Bazen python3 serisinde pip yerine pip3 komutunu yada ilave-moduller3 paketlerinde python komutundan pip komutunu çağırmamız da gerekebilir:

    $ pip3 list
    
    $ python -m pip list
    


    Sonrasında pip ile kurulu paketlerin listesini sorarak hem pip komutunun doğru çalıştığından emin olalım, hem de kurmaya çalıştığımız paketin zaten yüklü olmadığını görelim. Aşağıdaki komutun çıktı vermesi biraz uzun sürebilir, sabırlı olalım:


    $ pip list
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) 
    in your pip.conf under the [list] section) to disable this warning.
    absl-py (0.1.10)
    attrs (17.4.0)
    backports.weakref (1.0.post1)
    bleach (1.5.0)
    Cython (0.27.3)
    enum34 (1.1.6)
    funcsigs (1.0.2)
    futures (3.2.0)
    html5lib (0.9999999)
    Markdown (2.6.11)
    mock (2.0.0)
    nose (1.3.7)
    numpy (1.14.1)
    pandas (0.22.0)
    pbr (3.1.1)
    pip (9.0.1)
    pluggy (0.6.0)
    protobuf (3.5.1)
    py (1.5.2)
    pytest (3.4.1)
    python-dateutil (2.6.1)
    pytz (2018.3)
    setuptools (28.8.0)
    six (1.11.0)
    tensorflow (1.5.0)
    tensorflow-tensorboard (1.5.1)
    virtualenv (15.1.0)
    Werkzeug (0.14.1)
    wheel (0.30.0)
    


    Burada bu python sürümünde yüklü pip paketlerini gördük. Şimdi yükleme işine geçebiliriz. Öncelikle virtualenv ile kullanacağımız projeler için bir ortak dizin açalım, şart değilse de virtualenv ile çalıştığımızı hatırlamak açısından faydalı olur:


    $ mkdir virtualenv-projeleri
    
    $ cd virtualenv-projeleri/
    


    Sonrasında ilk virtualenv projemizi başlatabiliriz:

    [mercan@sariyer virtualenv-projeleri ]$ virtualenv ilkprojem
    New python executable in /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/python
    Installing setuptools, pip, wheel...done.
    
    [mercan@sariyer virtualenv-projeleri ]$ /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/python --version
    Python 2.7.14
    
    [mercan@sariyer virtualenv-projeleri ]$ /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/pip --version
    pip 9.0.1 from /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/lib/python2.7/site-packages (python 2.7)
    


        



    Yukarıda görüleceği üzere mevcut python, pip, wheel, python-config, easy_install komutlarının bir kopyası bu proje dizinine konuldu ve bir artık buradaki kopyalarını kullanmalıyız. Bunun için gereken ayarların yapılması için activate komutu çalıştırılmalıdır:

    $ source /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/activate
    
    (ilkprojem) [mercan@sariyer virtualenv-projeleri ]$ which python
    ~/virtualenv-projeleri/ilkprojem/bin/python
    


    Komut satırının başındaki (ilkprojem) ilavesine dikkat ediniz. Bu ilkprojem virtualenv ayarlarının yüklü (activated) olduğunu göstermekte. Dahası python komutu kendi dizinimizdeki python'u çağırıyor. Artık kuruluma geçebiliriz. regex pip paketini kuralım:


    (ilkprojem) [mercan@sariyer virtualenv-projeleri ]$ pip install regex
    Collecting regex
      Downloading regex-2018.02.21.tar.gz (620kB)
        100% |████████████████████████████████| 624kB 1.3MB/s
    Building wheels for collected packages: regex
      Running setup.py bdist_wheel for regex ... done
      Stored in directory: /okyanus/users/mercan/.cache/pip/wheels/63/9b/ce/be27920ad7bd9d2a69038ff983cd9b0a053da42332f4e86361
    Successfully built regex
    Installing collected packages: regex
    Successfully installed regex-2018.2.21
    
    (ilkprojem) [mercan@sariyer virtualenv-projeleri ]$ pip list
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) 
    in your pip.conf under the [list] section) to disable this warning.
    pip (9.0.1)
    regex (2018.2.21)
    setuptools (38.5.2)
    wheel (0.30.0)
    


    Ve sonunda sorunsuzca istediğimiz paketi kurduk. pip list komutunun çıktısında kurulu paketi de görebiliyoruz. Burada birşeye dikkatinizi çekmek istiyorum, virtualenv öncesindeki "pip list" komutunun çıktısında gözüken paketler artık gözükmemekte. Sanki tamamen yeni bir python kurulumu yapmışız gibi aslında.


    İşimiz bitince bu virtualenv ortamını kapatmak için, deactivate komutu kullanmalıyız. Artık python komutu da eski şekline döner:


    (ilkprojem) [mercan@sariyer virtualenv-projeleri ]$ deactivate
    
    [mercan@sariyer virtualenv-projeleri ]$ which python
    /okyanus/progs/Python/Python-2.7.14/bin/python
    
    [mercan@sariyer virtualenv-projeleri ]$
    


    Burada bir dizine kendi paketlerimizi kurulmasını tamamladık. Ancak bu kurduğumuz python ve pip paketlerini kullanacağımız zaman da activate işlemini tekrar etmeliyiz:

    [mercan@sariyer ~ ]$ source /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/activate
    
    (ilkprojem) [mercan@sariyer ~ ]$
    


    Sisteme iş verirken de mutlaka bu activate komutu da iş betiğine eklenmelidir:


    #!/bin/bash
    
    #SBATCH -J "ilkprojem"              # isin adi
    
    #SBATCH -A hsaat                         # account / proje adi
    #SBATCH -p defq                          # kuyruk (partition/queue) adi
    
    #SBATCH -n 56                             # cekirdek / islemci sayisi
    #SBATCH -N 2                             # bilgisayar sayisi
    
    source /okyanus/users/mercan/virtualenv-projeleri/ilkprojem/bin/activate
    
    #calisacak python isi
    python programimiz.py
    
    deactivate
    

    Sistemdeki Anaconda'ya Paket Yüklemek

    Sistemdeki Anaconda Module'lerini kullanırken istediğimiz paketleri yüklemek için Anaconda'nın environment çözümünü (https://conda.io/docs/user-guide/tasks/manage-environments.html) kullanabiliriz. Aynı şekilde bu çözümü kendi ev dizininize kendinizin kurduğunuz Anaconda'da da kullanabilirsiniz.

        

    ahmet adında bir environment oluşturalım:


    $ conda create --name ahmet python=3.7.1
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: /okyanus/users/mercan/.conda/envs/ahmet
    
      added / updated specs:
        - python=3.7.1
    
    
    The following NEW packages will be INSTALLED:
    
        ca-certificates: 2018.03.07-0
        certifi:         2018.11.29-py37_0
        libedit:         3.1.20170329-h6b74fdf_2
        libffi:          3.2.1-hd88cf55_4
        libgcc-ng:       8.2.0-hdf63c60_1
        libstdcxx-ng:    8.2.0-hdf63c60_1
        ncurses:         6.1-he6710b0_1
        openssl:         1.1.1a-h7b6447c_0
        pip:             18.1-py37_0
        python:          3.7.1-h0371630_7
        readline:        7.0-h7b6447c_5
        setuptools:      40.6.3-py37_0
        sqlite:          3.26.0-h7b6447c_0
        tk:              8.6.8-hbc83047_0
        wheel:           0.32.3-py37_0
        xz:              5.2.4-h14c3975_4
        zlib:            1.2.11-h7b6447c_3
    
    Proceed ([y]/n)? y
    
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    #
    # To activate this environment, use
    #
    #     $ conda activate ahmet
    #
    # To deactivate an active environment, use
    #
    #     $ conda deactivate
    


    Burada python sürümünü vermek önemli, yoksa conda python ve diğer paketleri en son sürüme yükseltmeye çalışıyor! Aynı şekilde diğer paketlerin sürümleri sizin için önemli ise, belli bir sürümde kalmak istiyorsanız, onları da vermek gerek, çünkü sürüm numarasını vermediğimiz her paketin en son sürümü yüklenecektir.


    Sonrasında istediğimiz paketleri kurabiliriz. Mesala scipy paketini kuralım:


    conda install -n ahmet scipy
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: /okyanus/users/mercan/.conda/envs/ahmet
    
      added / updated specs:
        - scipy
    
    
    The following NEW packages will be INSTALLED:
    
        blas:           1.0-mkl
        intel-openmp:   2019.1-144
        libgfortran-ng: 7.3.0-hdf63c60_0
        mkl:            2019.1-144
        mkl_fft:        1.0.6-py37hd81dba3_0
        mkl_random:     1.0.2-py37hd81dba3_0
        numpy:          1.15.4-py37h7e9f1db_0
        numpy-base:     1.15.4-py37hde5b4d6_0
        scipy:          1.1.0-py37h7c811a0_2
    
    Proceed ([y]/n)? y
    
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    


    Bu environment'i kullanmak için aktive etmeliyiz:


    [mercan@sariyer ~ ]$ source activate ahmet
    (ahmet) [mercan@sariyer ~ ]$
    


    İşimiz bitince normale dönmek için deaktive etmeliyiz:


    (ahmet) [mercan@sariyer ~ ]$ source deactivate
    [mercan@sariyer ~ ]$
    


    İstersek conda paketleri yerine, pip paketlerini de yükleyebiliriz:


    [mercan@sariyer ~ ]$ source activate ahmet
    (ahmet) [mercan@sariyer ~ ]$ pip install regex
    Collecting regex
      Downloading https://files.pythonhosted.org/packages/16/07/ee3e02770ed456a088b90da7c9b1e9aa227e3c956d37b845cef2aab93764/regex-2018.11.22.tar.gz (648kB)
        100% |████████████████████████████████| 655kB 15.6MB/s
    Building wheels for collected packages: regex
      Running setup.py bdist_wheel for regex ... done
      Stored in directory: /okyanus/users/mercan/.cache/pip/wheels/56/b8/60/93cb6f51554e529246d89c994c1cba7b64d768ff1680062661
    Successfully built regex
    Installing collected packages: regex
    Successfully installed regex-2018.11.22
    (ahmet) [mercan@sariyer ~ ]$
    


    Mevcut environment'lerin listesine bakalım:


    [mercan@sariyer ~ ]$ conda info --envs
    # conda environments:
    #
    base                  *  /okyanus/progs/ANACONDA/anaconda3-2018.12-python3.7.1
    ahmet                    /okyanus/users/mercan/.conda/envs/ahmet
    


    Son olarak da ahmet environment'ini silelim:


    conda remove --name ahmet --all
    
    Remove all packages in environment /okyanus/users/mercan/.conda/envs/ahmet:
    
    
    ## Package Plan ##
    
      environment location: /okyanus/users/mercan/.conda/envs/ahmet
    
    
    The following packages will be REMOVED:
    
        blas:            1.0-mkl
        ca-certificates: 2018.03.07-0
        certifi:         2018.11.29-py37_0
        intel-openmp:    2019.1-144
        libedit:         3.1.20170329-h6b74fdf_2
        libffi:          3.2.1-hd88cf55_4
        libgcc-ng:       8.2.0-hdf63c60_1
        libgfortran-ng:  7.3.0-hdf63c60_0
        libstdcxx-ng:    8.2.0-hdf63c60_1
        mkl:             2019.1-144
        mkl_fft:         1.0.6-py37hd81dba3_0
        mkl_random:      1.0.2-py37hd81dba3_0
        ncurses:         6.1-he6710b0_1
        numpy:           1.15.4-py37h7e9f1db_0
        numpy-base:      1.15.4-py37hde5b4d6_0
        openssl:         1.1.1a-h7b6447c_0
        pip:             18.1-py37_0
        python:          3.7.1-h0371630_7
        readline:        7.0-h7b6447c_5
        scipy:           1.1.0-py37h7c811a0_2
        setuptools:      40.6.3-py37_0
        sqlite:          3.26.0-h7b6447c_0
        tk:              8.6.8-hbc83047_0
        wheel:           0.32.3-py37_0
        xz:              5.2.4-h14c3975_4
        zlib:            1.2.11-h7b6447c_3
    
    Proceed ([y]/n)? y