Etkileşimli R geliştirme

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Bu makalede, jupyter not defterinde R çekirdeği çalıştıran Azure Machine Learning stüdyosu işlem örneğinde R'nin nasıl kullanılacağı gösterilmektedir.

Popüler RStudio IDE de çalışır. RStudio veya Posit Workbench'i bir işlem örneğindeki özel bir kapsayıcıya yükleyebilirsiniz. Ancak bunun Azure Machine Learning çalışma alanınızda okuma ve yazmayla ilgili sınırlamaları vardır.

Önemli

Bu makalede gösterilen kod bir Azure Machine Learning işlem örneğinde çalışır. İşlem örneğinde kodun başarıyla çalışması için gereken bir ortam ve yapılandırma dosyası vardır.

Önkoşullar

Studio'da bir not defterinde R çalıştırma

Azure Machine Learning çalışma alanınızda bir işlem örneğinde bir not defteri kullanacaksınız.

  1. Azure Machine Learning stüdyosu oturum açma

  2. Henüz açık değilse çalışma alanınızı açın

  3. Sol gezinti bölmesinde Not Defterleri'ni seçin

  4. RunR.ipynb adlı yeni bir not defteri oluşturma

    İpucu

    Studio'da not defterlerini nasıl oluşturup bunlarla çalışacağınızdan emin değilseniz Çalışma alanınızda Jupyter not defterlerini çalıştırma'yı gözden geçirin

  5. Not defterini seçin.

  6. Not defteri araç çubuğunda işlem örneğinizin çalıştığından emin olun. Aksi takdirde hemen başlatın.

  7. Not defteri araç çubuğunda çekirdeği R olarak değiştirin.

    Screenshot: Switch the notebook kernel to use R.

Not defteriniz artık R komutlarını çalıştırmaya hazırdır.

Verilere erişme

Dosyaları çalışma alanı dosya depolama kaynağınıza yükleyebilir ve ardından bu dosyalara R'de erişebilirsiniz. Ancak, Azure veri varlıklarında depolanan dosyalar veya veri depolarındaki veriler için bazı paketler yüklemeniz gerekir.

Bu bölümde, etkileşimli bir oturumdan veri varlıklarınızı ve reticulate veri depolarınızı R'ye yüklemek için Python ve paketin nasıl kullanılacağı açıklanmaktadır. Tablo verilerini Pandas DataFrames olarak okumak için Python paketini ve reticulate R paketini kullanırsınızazureml-fsspec. Bu bölüm ayrıca veri varlıklarını ve veri depolarını R'ye data.frameokuma örneği içerir.

Bu paketleri yüklemek için:

  1. İşlem örneğinde setup.sh adlı yeni bir dosya oluşturun.

  2. Bu kodu dosyaya kopyalayın:

    #!/bin/bash
    
    set -e
    
    # Installs azureml-fsspec in default conda environment 
    # Does not need to run as sudo
    
    eval "$(conda shell.bash hook)"
    conda activate azureml_py310_sdkv2
    pip install azureml-fsspec
    conda deactivate
    
    # Checks that version 1.26 of reticulate is installed (needs to be done as sudo)
    
    sudo -u azureuser -i <<'EOF'
    R -e "if (packageVersion('reticulate') >= 1.26) message('Version OK') else install.packages('reticulate')"
    EOF
    
  3. Betiği çalıştırmak için Betiği terminalde kaydet ve çalıştır'ı seçin

Yükleme betiği şu adımları işler:

  • pipazureml-fsspec işlem örneği için varsayılan conda ortamına yükler
  • Gerekirse R reticulate paketini yükler (sürüm 1.26 veya üzeri olmalıdır)

Kayıtlı veri varlıklarından veya veri depolarından tablosal verileri okuma

Azure Machine Learning'de oluşturulan bir veri varlığında depolanan veriler için, bu tablolu dosyayı Pandas DataFrame'e veya R'ye data.frameokumak için şu adımları kullanın:

Not

Ile bir dosyayı reticulate okumak yalnızca tablosal verilerle çalışır.

  1. doğru sürümüne sahip olduğunuzdan reticulateemin olun. 1.26'dan küçük bir sürüm için daha yeni bir işlem örneği kullanmayı deneyin.

    packageVersion("reticulate")
    
  2. Yüklendiği conda ortamını azureml-fsspec yükleme reticulate ve ayarlama

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Veri dosyasının URI yolunu bulun.

    1. İlk olarak, çalışma alanınıza bir tanıtıcı alın

      py_code <- "from azure.identity import DefaultAzureCredential
      from azure.ai.ml import MLClient
      credential = DefaultAzureCredential()
      ml_client = MLClient.from_config(credential=credential)"
      
      py_run_string(py_code)
      print("ml_client is configured")
    2. Varlığı almak için bu kodu kullanın. ve <MY_VERSION> değerini veri varlığınızın adı ve numarasıyla değiştirdiğinden <MY_NAME> emin olun.

      İpucu

      Studio'da, sol gezinti bölmesinde Veri'yi seçerek veri varlığınızın adını ve sürüm numarasını bulun.

      # Replace <MY_NAME> and <MY_VERSION> with your values
      py_code <- "my_name = '<MY_NAME>'
      my_version = '<MY_VERSION>'
      data_asset = ml_client.data.get(name=my_name, version=my_version)
      data_uri = data_asset.path"
    3. URI'yi almak için kodu çalıştırın.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Pandas okuma işlevlerini kullanarak dosyaları R ortamına okuma

    pd <- import("pandas")
    cc <- pd$read_csv(py$data_uri)
    head(cc)

Kayıtlı bir Datastore'daki farklı dosyalara erişmek ve bu kaynakları R data.frameolarak okumak için datastore URI'sini de kullanabilirsiniz.

  1. Bu biçimde, kendi değerlerinizi kullanarak bir Datastore URI'sini oluşturun:

    subscription <- '<subscription_id>'
    resource_group <- '<resource_group>'
    workspace <- '<workspace>'
    datastore_name <- '<datastore>'
    path_on_datastore <- '<path>'
    
    uri <- paste0("azureml://subscriptions/", subscription, "/resourcegroups/", resource_group, "/workspaces/", workspace, "/datastores/", datastore_name, "/paths/", path_on_datastore)
    

    İpucu

    Veri deposu URI biçimini anımsamak yerine, dosyanızın bulunduğu veri depolarını biliyorsanız, Veri deposu URI'sini Studio kullanıcı arabiriminden kopyalayıp yapıştırabilirsiniz:

    1. R'ye okumak istediğiniz dosya/klasöre gidin
    2. Yanındaki üç noktayı (...) seçin.
    3. URI Kopyala menüsünden öğesini seçin.
    4. Not defterinize/betiğinize kopyalamak için Datastore URI'sini seçin. Kodda için <path> bir değişken oluşturmanız gerektiğini unutmayın. Screenshot highlighting the copy of the datastore URI.
  2. Yukarıda belirtilen URI'yi kullanarak bir dosya deposu nesnesi oluşturun:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. R'ye data.frameokuma:
df <- with(fs$open("<path>)", "r") %as% f, {
 x <- as.character(f$read(), encoding = "utf-8")
 read.csv(textConnection(x), header = TRUE, sep = ",", stringsAsFactors = FALSE)
})
print(df)

R paketlerini yükleme

İşlem örneğinde önceden yüklenmiş birçok R paketi vardır.

Diğer paketleri yüklemek için konumu ve bağımlılıkları açıkça belirtmeniz gerekir.

İpucu

Farklı bir işlem örneği oluşturduğunuzda veya kullandığınızda, yüklediğiniz paketleri yeniden yüklemeniz gerekir.

Örneğin, paketi yüklemek tsibble için:

install.packages("tsibble", 
                 dependencies = TRUE,
                 lib = "/home/azureuser")

Not

Paketleri Jupyter not defterinde çalışan bir R oturumuna yüklerseniz gereklidir dependencies = TRUE . Aksi takdirde, bağımlı paketler otomatik olarak yüklenmez. Doğru işlem örneği konumuna yüklemek için lib konumu da gereklidir.

R kitaplıklarını yükleme

R kitaplığı yoluna ekleyin /home/azureuser .

.libPaths("/home/azureuser")

İpucu

Kullanıcı tarafından yüklenen kitaplıklara erişmek için her etkileşimli R betiğinde öğesini güncelleştirmeniz .libPaths gerekir. Bu kodu her etkileşimli R betiğinin veya not defterinin en üstüne ekleyin.

LibPath güncelleştirildikten sonra kitaplıkları her zamanki gibi yükleyin.

library('tsibble')

Not defterinde R kullanma

Daha önce açıklanan sorunların ötesinde, yerel iş istasyonunuz da dahil olmak üzere diğer tüm ortamlarda olduğu gibi R kullanın. Not defterinizde veya betiğinizde, not defterinin/betiğin depolandığı yolu okuyabilir ve yazabilirsiniz.

Not

  • Etkileşimli R oturumundan yalnızca çalışma alanı dosya sistemine yazabilirsiniz.
  • Etkileşimli R oturumundan MLflow ile (günlük modeli veya sorgu kayıt defteri gibi) etkileşim kuramazsınız.

Sonraki adımlar