Jupyter ile Uzak Server’a Bağlanma

Berkedilekoglu
4 min readAug 20, 2021
Photo by Chase Baker on Unsplash

Merhabalar, bu kısa yazıda sizlere Jupyter Notebook kullanarak nasıl remote servera bağlanabileceğinizi göstereceğim. Böylece serverdan kendi local bilgisayarınıza istediğiniz dosyaları kolayca indirebilir, notebooklarınızı görüntüleyebilir, serverdaki cpu ve gpu’dan yararlanarak kod yazabilir kısacası Jupyter’in size sunduğu tüm avantajları server altyapısı ile kullanabilirsiniz.

  1. Jupyter Kurulumu

Öncelikle serverdaki hesabımıza jupyter kurmamız gerekiyor. pip paketini kullanarak Jupyter’i kurabiliriz.

pip install jupyter

2. Virtual Environment

Virtual environment python paketlerimizi yüklememiz için önemlidir. Bazen projelerimizde kullanacağımız paketlerin sürümleri çakışabilir ve bunun sonucunda python ortamınız kullanılmaz bir hal alabilir. O sebeple proje bazlı virtual environmentlar hayat kurtarır. Serverda bir virtual environment kurmak için basitçe virtualenv paketini kullanabilirsiniz.Öncelikle bu paketi indirmeniz gerekiyor. Bunu pip ile yapabilirsiniz.

pip install virtualenv

Ardından tek yapmanız gereken pathinizi seçerek virtual environmentınızı oluşturmak. Burada size önerim tüm virtual environmentlarınız için bir directory oluşturmak. Ardından o directory’nin içine environmentlarınızı kurabilirsiniz. Örneğin venvs diye bir klasörünüz var ve buraya ‘env-medium’ adında bir environment kurmak istiyorsunuz, bunun için:

virtualenv venvs/env-medium

komutunu çalıştırmanız yeterli olacaktır. Ardından bu environment’i aktif etmemiz ve buradaki ortama bağlanıp çalışacağımızı belirtmemiz gerekiyor. Bunu da basitçe şu komut ile belirtiyoruz:

source venvs/env-medium/bin/activate

Bunu yaptığınızda ekranda o environment’a bağlı olduğunuzu kullanıcı adınızın yanında görebilirsiniz.

env-medium aktif edildikten sonra terminalde bunu görebiliyoruz

Eğer environmentınızdan çıkmak istiyorsanız terminale:

deactivate

yazıp çıkış yapabilirsiniz. Bunun ardından kullanıcı adınızın yanındaki env isminin yok olduğunu göreceksiniz.

3. Jupyter İle Server Bağlantısı

3.1 Server İçerisi

Jupyter notebooklarınızı kerneller ile açar ve kodlarınız bu kerneller üzerinde çalışır. Bu sebeple kernelimizi virtual environment ortamında tanımlayıp jupyter içine yüklediğimizde istediğimiz notebook’u istediğimiz virtual environment aracılığı ile çalıştırabiliriz. Bu nedenle ilk adımımız yeni bir kernel tanımlamak olacak.

3.1.1 Kernel Yükleme

Burada önemli olan şey kernelimizi virtual environment’a bağlı iken yüklemek. Böylece o kernel direkt olarak virtual environment içindeki tüm paketleri notebook’da kullanabilecek. Bu nedenle öncelikle virtual environmentımızı aktif ediyoruz.

source venvs/env-medium/bin/activate

Ardından ipykernel paketini yükleyeceğiz. Böylece bazı durumlarda oluşabilecek kernel uyumsuzluklarının önüne geçebiliriz.

pip install ipykernel

Artık kernelimizi istediğimiz isimde oluşturabiliriz. deneme-medium adında bir kernel oluşturalım.

python -m ipykernel install — user — name=”deneme-medium”

Artık bağlı olduğumuz environmentdaki paketleri kullanabileceğimiz bir kernelimiz var. Şimdi environmentımızı deactivate edip serverımızda bir port belirleyerek (ben 8892'yi kullanıcam) bu porta notebook bilgilerini yollayabiliriz. Bunu şu komutla yapıyoruz:

jupyter notebook — no-browser — port=8892

8892 portu artık dinlemeye hazır

Artık bu kernel hep jupyterinize tanımlı bir şekilde kalacak ve buraya kadar olan steplerden sadece port açma kısmını yapmanız gerekecek. Tabiki eğer bir library yüklemek isterseniz kernelinizi yüklediğiniz zaman aktif olan environmentınızı tekrar aktif hale getirip istediğiniz kütüphaneyi yükleyebilirsiniz.

3.2 Local Bilgisayarımız

Evet artık server tarafında bize jupyter notebook bilgilerini göndermeye hazır bir portumuz var. Artık tek yapmamız gereken bu portu kendi bilgisayarımızdaki bir port yardımı ile dinlemek. Bunun için terminalde şu komutu giriyoruz:

ssh -L 8889:localhost:8892 username@server_adress

  • -L: local bir port açar
  • username@server_adress -> server’a bağlanırken kullandığınız bilgiler

Bu komut bilgisayara 8889 local portundan 8892 portunu dinle diyor.

Bilgisayardaki terminalinizden server’ı dinleme komutunu vermek

Şimdi yapmanız gereken hangi web browser’ı kullanıyorsanız onu açıp localhost:8889 yazmak.

Arama çubuğuna localhost:8889 yazın

Karşınıza Çıkan ekranda sizden giriş token’ı isteyecek. Bunu serverdaki token kısımdan alacağız. Aşağıdaki resimden hangi kısmı alacağınızı daha net görebilirsiniz.

Token’ı kopyalayıp yapıştırdıktan sonra Log In olabiliriz!

Vee artık jupyterin tüm nimetlerini serverın altyapısıyla kullanmaya hazırız.

İstediğiniz environmenti seçebilirsiniz

Bir üstteki resimde de görebileceğiniz gibi new butonuyla yeni bir notebook yaratırken kullanacağınız kerneli seçebiliyorsunuz. Biz deneme-medium kernelimizi kendi environmentımız içerisindeyken yarattığımız için tüm paketlerimiz kullanıma hazır bir şekilde bizi bekliyor olacak. Yeni paketler yüklemek için terminalden server’a bağlanıp istediğiniz environment’ı aktif edip yüklemelerinizi yapabilirsiniz.

Umarım biraz da olsa local bilgisayarınızı rahatlatacak bir çözüm olan jupyter’in uzak sunucuya bağlanmasını anlatabilmişimdir. İletişim için:

--

--

Berkedilekoglu

NLP Research Engineer, Teaching Assistant, Research Assistant in Bioinformatics