Amazon ec2'de R rastgele orman Hatası: 5,4 Gb boyutunda vektör tahsis edilemiyor


9

R'de randomForest()1000 ağaç ve yaklaşık 20 öngörücü ve 600K sıralı veri çerçeveleri kullanarak rastgele orman modelleri eğitimi alıyorum . Dizüstü bilgisayarımda her şey iyi çalışıyor, ama aynı şeyi çalıştırmak için amazon ec2'ye taşındığımda hatayı alıyorum:

Error: cannot allocate vector of size 5.4 Gb
Execution halted

c3.4xlargeÖrnek türü kullanıyorum, bu yüzden oldukça etli. Herkes bunun bu örnek üzerinde çalışması için bir geçici çözüm biliyor mu? Bu soruna neden olan bellek nüanslarını dizüstü bilgisayarımda değil sadece ec2 örneğinde bilmek isterim (OS X 10.9.5 İşlemci 2.7 GHz Intel Core i7; Bellek 16 GB 1600 MHz DDR3)

Teşekkürler.

Yanıtlar:


5

İşte bazı öneriler (kendi sorumluluğunuzdadır kullanın!):

Yukarıda belirtilen daha basit önlemler yardımcı olmazsa VEYA işlemi tek bir makinede veya birden çok makinede paralelleştirme yeteneği de dahil olmak üzere daha fazla ölçeklenebilirlik ve / veya performans elde etmek istiyorsanız , R paketi kullanın: http: // cran. r-project.org/web/packages/bigrf . Ayrıca şu tartışmaya da bakın: https://stackoverflow.com/q/1358003/2872891 .bigrf


2

Diğer fikirlere ek: Eğer anlamaya kadar verileri azaltmak olabilir Amazon örneğinde çalıştırın. 100k satır yapamazsa, bir şey çok yanlıştır, 590k satırda başarısız olursa, marjinal olur.

C3.4xlarge örneği 30Gb RAM'e sahiptir, bu yüzden evet yeterli olmalıdır.


2

Vektörün gerçek hafızası gibi özellikler hariç olmak üzere, yalnızca Google'a gördüğünüz hatayı her zaman yararlıdır. Benim için ilk isabet " R: R'nin bellek sınırları " adında ilginç bir dokümandı , burada "Unix" altında şunlar okunabilir:

Adres alanı sınırı sisteme özgüdür: 32 bit işletim sistemleri 4 Gb'den fazla olmayan bir sınır uygular: genellikle 3Gb'dir. 64 bit işletim sisteminde 32 bit yürütülebilir dosyalar çalıştırmak benzer sınırlara sahip olacaktır: 64 bit yürütülebilir dosyalar esasen sonsuz sisteme özgü bir sınıra sahip olacaktır (örneğin, x86_64 cpus'ta Linux için 128 TB).

Tek bir işlem için kullanılabilir kaynaklara nasıl sınırlama getirileceği konusunda OS / shell'in limit veya ulimit gibi komutlar hakkındaki yardımına bakın. Örneğin bir bash kullanıcısı

ulimit -t 600 -v 4000000

csh kullanıcısı

limit cputime 10m limit vmemoryuse 4096m

bir işlemin 10 dakikalık CPU süresi ve (4) sanal belleğe sınırlanması. (RAM'i kullanım için ayarlamak için başka seçenekler de vardır, ancak genellikle onurlandırılmazlar.)

Yani, kontrol etmelisin

  1. EC2 yönetim ortamınızda ne tür bir işletim sistemi kullanıyorsunuz
  2. Bu işletim sisteminde ne tür R derlemeleri çalıştırıyorsunuz ve 64 bit sürümünü çalıştırdığınızdan emin olun
  3. Her ikisi de zaten 64 bit ise, ulimitbelleği örneğin 8Gb olarak ayarlamak için kullanın :ulimit -v 8000000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.