Aracılığıyla paylaş


Docker Kapsayıcılarını CNTK

linux sisteminizde CNTK Docker Kapsayıcısı olarak ayarlayabilirsiniz.

CNTK Docker Kapsayıcılarını kullanmanın iki yolu vardır:

Docker Hub'da yayımlanan CNTK Görüntüleri Kullanma

Docker Hub'da genel CNTK Görüntüleri barındırıyoruz. Docker Hub CNTK Depolar sayfasında bulunan görüntülerin tam listesine bakın. Şu anda yalnızca çalışma zamanı yapılandırmalarını barındırıyoruz. Çalışma zamanı yapılandırması, CNTK İkili paketin yüklü ve yapılandırılmış olduğu bir ortama karşılık gelir. Bu yapılandırma ne CNTK kaynak kodu ne de CNTK oluşturmak için gereken önkoşulları içerir.

GPU özellikli görüntüleri kullanmak için NVIDIA Docker CNTK a ihtiyacınız olduğunu unutmayın.

Standart Docker komutları görüntüyü almak için kullanılır:

docker pull mcr.microsoft.com/cntk/release

en son resmi sürüm görüntüsünü almak için bu, bugün kullanılabilir en son GPU çalışma zamanı yapılandırması anlamına gelir. Ayrıca en son geliştirme gece görüntüsünü de alabilirsiniz:

docker pull mcr.microsoft.com/cntk/nightly

Belirli bir yapılandırmayı almak için etiket eklemeniz gerekir. Örneğin

docker pull mcr.microsoft.com/cntk/release:2.7-cpu-python3.5

Python 3.5 için ayarlanmış CNTK 2.7 CPU çalışma zamanı yapılandırmanızı sağlar.

Docker'ı tanımıyorsanız bu sayfadaki aşağıdaki bölümleri okuyun.

CNTK Jupyter Notebook öğreticilerini çalıştırmak için Docker kapsayıcısını kullanma

yerel ortamınızda CNTK Jupyter Not Defterlerini çalıştırmak için CNTK Docker kapsayıcılarını kullanabilirsiniz.

Gerekli görüntüleri zaten Docker Hub çektiğinizi varsayıyoruz. Aşağıdaki örnekte GPU yapılandırmasını kullanacağız. CPU yapılandırması kullanıyorsanız, aşağıdaki komutlarda öğesinin tüm oluşumlarını nvidia-docker ile dockerdeğiştirin.

İlk olarak ip bağlantı noktası açıkken ayrılmış modda bir CNTK kapsayıcısı oluşturun ve başlatın (Jupyter Notebook uygulama için varsayılan bağlantı noktasını 8888 kullanırız):

nvidia-docker run -d -p 8888:8888 --name cntk-jupyter-notebooks -t mcr.microsoft.com/cntk/release

Şimdi Docker kapsayıcınızda Jupyter Notebook sunucusunu başlatın:

docker exec -it cntk-jupyter-notebooks bash -c "source /cntk/activate-cntk && jupyter-notebook --no-browser --port=8888 --ip=0.0.0.0 --notebook-dir=/cntk/Tutorials --allow-root"

Terminalinizde Jupyter Notebooks sunucusunun konsol çıkışını görürsünüz. Bu çıkış aşağıdakine benzer bir satır içerir:
http://0.0.0.0:8888/?token=082684fbe2b43eebd72583c301c05072084173d0ac06a4d7

Görüntülenen belirteci kopyalayın (örneğimizde 082684fbe2b43eebd72583c301c05072084173d0ac06a4d7).

Artık Docker kapsayıcısını çalıştırdığınız makinenin IP adresini kullanarak CNTK Jupyter Notebooks'a erişebilirsiniz. Örneğin makine adresiniz 192.168.1.1 CNTK Not Defterlerine erişmek için bir tarayıcı penceresi açıp adresine gidinhttp://192.168.1.1:8888.

İlk çalıştırma sırasında Jupyter Notebook uygulamanın parola veya belirteç isteyeceğini unutmayın. Yukarıda kaydettiğiniz belirteci kullanın.

Jüpiter Notebook sunucu konsolu çıkışına sahip olduğunuz terminalde Jupyter Notebook sunucu gönderme Ctrl-C sırasını durdurmak ve sunucunun kapatılmasını onaylamak için. Docker kapsayıcısının kendisini durdurmayacağını unutmayın. Kapsayıcıyı durdurmak için komutunu kullanın:
docker stop cntk-jupyter-notebooks

UYARI! Yukarıdaki komutlar, Jupyter Notebooks uygulamasını Docker kapsayıcısını çalıştırdığınız makinenin IP adresine erişebilen herkese gösterir.

Docker Görüntüleri CNTK Oluşturma

Aynı kapsayıcıyı kullanarak CNTK derleyebilir ve çalıştırabilirsiniz. Bu, başvuru yapılandırmamızı yeniden oluşturmak için önerilen bir yaklaşımdır.

İlk olarak docker'ı yüklemeniz gerekir. Resmi docker belgelerinde yükleme işleminin izlenmesi kesinlikle önerilir. Linux dağıtımınızla birlikte gelen sürümler güncel olmayabilir ve bu sürümlerle nvidia-docker çalışmayabilir (GPU görüntüsünü aynı kapsayıcı içinden derlemeyi ve çalıştırmayı planlıyorsanız docker'a ek olarak yüklemeniz gerekebilir). Ayrıca docker grubu oluşturma başlıklı isteğe bağlı bölümdeki yönergeleri de izlemeniz gerekir.

İlgili Docker dosyaları adresinde CNTK Deposundadırhttps://github.com/Microsoft/CNTK/tree/release/latest/Tools/docker

CNTK ve tüm bağımlılıklarıyla bir docker görüntüsü oluşturmak için CNTK deposunu kopyalamanız, içinden oluşturmak istediğiniz Dockerfile dosyasına CNTK/Tools/docker (CPU veya GPU) gitmeniz ve kullanmanız yeterlidir. Örneğin, CNTK GPU docker görüntüsünü oluşturmak için şunu yürütebilirsiniz:

docker build -t cntk -f CNTK-GPU-Image/Dockerfile .

-f <path/to/Dockerfile> Hem CPU hem de GPU dockerfiles için ortak olan bazı düzeltme eklerinin SWIG kaynak koduna uygulanması gerektiğinden bağımsız değişken gereklidir. Docker'a DNS sunucularınızın IP adreslerini sağlamanız gerektiğini belirten Could not resolve 'archive.ubuntu.com' hatalar alırsanız. İlk olarak komutunu kullanarak DNS sunucularınızın IP adreslerini bulun

nm-tool

veya komutu

nmcli dev show

DNS sunucularınızın IP'lerinin ve x.y.z.wolduğunu a.b.c.d varsayalım. Ardından

  • Ubuntu 15.10 ve sonraki sürümlerde (veya systemd kullanan diğer Linux'larda) docker daemon'unun ek seçeneklerle başlatılması için değiştirin /lib/systemd/system/docker.service--dns a.b.c.d --dns x.y.z.w
  • Ubuntu 15.04 ve önceki sürümlerde (veya systemd kullanmayan diğer Linux'larda) satırın düzenlenebilmesi /etc/default/docker için
    #DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
    
    uncommented ve DNS sunucularınızın IP adreslerini içerir.

Not: Bazı şirketler 8.8.8.8 ve 8.8.4.4 gibi genel DNS sunucularını engeller. Bunları kullanmayı deneyebilirsiniz, ancak sorun devam ederse tarafından nm-tool/nmclibildirilen DNS sunucusu IP adreslerini kullanmayı denemeniz gerekir.

Aracılığıyla docker daemon'ını yeniden başlatın

sudo service docker restart

ve yanlış DNS ayarlarıyla oluşturulan docker görüntülerini silin. Tüm Docker görüntülerini silmek için

docker rmi $(docker images -q)

Tüm docker kapsayıcılarını silmek için

docker rm $(docker ps -a -q)

Şimdi yeniden deneyin

docker build -t cntk -f CNTK-GPU-Image/Dockerfile .

Gpu'nuz varsa, görüntüyü derledikten sonra docker kapsayıcısı üzerinden erişip erişemediğini test etmek istersiniz. Şu komutu deneyin:

docker run --rm cntk nvidia-smi

İşe yararsa, işin biter. Aksi takdirde, ana bilgisayarınızda ve CNTK docker görüntünüzde yüklü CUDA sürümü ile/veya sürücüleri arasında bir uyuşmazlık olduğu anlamına gelir. Özellikle, uyumsuzluk çekirdek modu NVidia sürücü modülü ile kullanıcı modu modülü (paylaşılan bir lib) arasındadır ve konaktaki sürüm kapsayıcıdaki sürümle tam olarak eşleşmezse bu durum ortaya çıkar. Neyse ki bunu düzeltmek kolaydır. Sadece nvidia-docker yükleyin ve tam olarak docker gibi kullanın (görüntüyü yeniden oluşturmanız gerekmez).

nvidia-docker run --rm cntk nvidia-smi

Bu işe yaramalı ve CNTK bir docker kapsayıcısının içinden GPU kullanmasına olanak tanır. Bu işe yaramazsa nvidia-docker GitHub Sorunlar bölümünde arama yapın. Birçok çözüm zaten belgelenmiştir. /usr ve /var dizinleriniz farklı bölümlerdeyse , buradaki gibi bazı ek adımlara ihtiyacınız olacağını unutmayın. Çıktıktan sonra otomatik olarak silinmeyecek bir kapsayıcıya etkileşimli kabuk almak için

nvidia-docker run --name cntk_container1 -ti cntk bash

Verilerinizi ve yapılandırmalarınızı konak (makineniz veya VM'niz) ile CNTK kullandığınız kapsayıcı arasında paylaşmak istiyorsanız - v seçeneğini kullanın, örneğin.

nvidia-docker run --name cntk_container1 -ti -v /project1/data:/data -v /project1/config:/config cntk bash

Bu işlem konaktaki /project1/data öğesini kapsayıcıda /data, /project1/config öğesini ise /config olarak görünür hale getirir. Bu tür yalıtım, kapsayıcılı denemelerinizin üzerine yazma veya yanlış veri kullanma olasılığını azaltır.