DoSMP ব্যবহার করে ক্যারেট প্যাকেজটির সমান্তরালকরণ


10

আপডেট: ক্যারেটটি এখন foreachঅভ্যন্তরীণভাবে ব্যবহার করে, সুতরাং এই প্রশ্নটি এখন আর প্রাসঙ্গিক নয়। আপনি যদি কোনও কাজের সমান্তরাল ব্যাকএন্ডের জন্য নিবন্ধন করতে পারেন তবে foreachক্যারেট এটি ব্যবহার করবে।


আমার কাছে আর এর জন্য ক্যারেট প্যাকেজ রয়েছে এবং আমি trainআমার মডেলগুলি ক্রস-বৈধ করতে ফাংশনটি ব্যবহার করতে আগ্রহী । তবে আমি জিনিসগুলিকে দ্রুত করতে চাই এবং মনে হয় ক্যারেট সমান্তরাল প্রক্রিয়াকরণের জন্য সমর্থন সরবরাহ করে। উইন্ডোজ মেশিনে এই বৈশিষ্ট্যটি অ্যাক্সেস করার সর্বোত্তম উপায় কী? আমার কাছে ডসএমপি প্যাকেজ রয়েছে, তবে কীভাবে foreachফাংশনটিকে কোনও lapplyফাংশনে অনুবাদ করতে হবে তা আমি বুঝতে পারি না, তাই আমি এটি trainফাংশনে পাস করতে পারি ।

এখানে trainডকুমেন্টেশন থেকে আমি কী করতে চাই তার একটি উদাহরণ এখানে দেওয়া হয়েছে : doSMPপ্যাকেজটির পরিবর্তে প্যাকেজটি ব্যবহার না করে আমি এটি করতে চাই doMPI

## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
    theDots <- list(...)
    parLapply(theDots$cl, X, FUN)
{

library(snow)
cl <- makeCluster(5, "MPI")

## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
    number = 50,
    computeFunction = mpiCalcs,
    computeArgs = list(cl = cl))

set.seed(1)
usingMPI <- train(medv ~ .,
    data = BostonHousing,
    "glmboost",
    trControl = mpiControl)

এখানে এমবিকিউ-র ফাংশনের একটি সংস্করণ রয়েছে যা ল্যাপ্লি ডকুমেন্টেশনের মতো একই চলক নামগুলি ব্যবহার করে:

felapply <- function(X, FUN, ...) {
    foreach(i=X) %dopar% {
        FUN(i, ...)
    }       
}

x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)

উত্তর:


6

চেষ্টা

computeFunction=function(onWhat,what,...){foreach(i=onWhat) %do% what(i,...)},

5

ক্যারেটটি ইতিমধ্যে train()ফাংশনের অংশ হিসাবে এটি আপনার জন্য অভ্যন্তরীণভাবে করে থাকে, শুরু করার জন্য ক্যারেট ওয়েবপৃষ্ঠার নীচের অংশটি দেখুন ।


ট্রেনে ব্যবহৃত ডিফল্ট ফাংশনটি হ'ল ল্যাপলি। আপনি যদি ট্রেনকে সমান্তরাল করতে চান তবে আপনার এমন একটি সমান্তরাল ফাংশন প্রয়োজন যা ল্যাপলি নকল করে, যেমন মাল্টিকোর ::: ম্যাক্লেপ্লি। কমপক্ষে, আমি বিষয়গুলি বুঝতে পারি।
জাচ

@Zach, এই প্রশ্নের জন্য +1, আমি আশ্চর্য সেখানে কিভাবে এক সঙ্গে সমান্তরাল প্রক্রিয়াজাতকরণ করতে পারি না কোন আপডেট caret::train()জন্য Windows, উদাহরণ অধিকাংশ APMবই গণনা ব্যয়বহুল আমার জন্য অন্তত 3 গিগাবাইট র্যাম, 2.1GHz, ডুয়াল কোর, 32bit উইন । আমি যদি এই সমস্যাটি আগে জানতাম তবে আমি এতে পরিবর্তন করতাম তবে Linuxএখন আমার পক্ষে এই জাতীয় কাজটি করতে খুব বেশি দেরি হয়ে গেছে। আপনি কী উইন্ডোতে এই সমস্যাটি মোকাবেলা করতে চান কোন ধারণা জানেন? যদি উত্তরটি mbqএখনও সক্রিয় থাকে তবে আপনি কীভাবে কোনও মডেলটির একটি দৃ a় উদাহরণ ব্যবহার করে কোড প্রয়োগ করতে পারেন তা কীভাবে প্রয়োগ করতে হবে computeFunction?
ডক্টরেট

foreachঅভ্যন্তরীণভাবে প্যাকেজটি ব্যবহার করার জন্য @ ডক্টরেট ক্যারেট আপডেট করা হয়েছে যা আপনি নিবন্ধভুক্ত করতে পারেন এমন কোনও সমান্তরাল ব্যাকএন্ডের সাথে কাজ করে। DoParallel প্যাকেজটি একবার দেখুন। একবার আপনি কোনও ব্যাকএন্ড নিবন্ধভুক্ত করলে ক্যারেট স্বয়ংক্রিয়ভাবে এটি ব্যবহার করবে। আরও মনে রাখবেন যে, উইন্ডোজগুলিতে প্রতিটি কোরকে তার নিজস্ব র‌্যামের অনুলিপি প্রয়োজন, সুতরাং আপনি যদি 4 টি কর্ণ নিবন্ধন করেন তবে আপনার 4x পরিমাণে র‌্যামের প্রয়োজন।
জাচ

@ জাচ, সত্যিই ধন্যবাদ, আমি এটি চেষ্টা করেছিলাম এবং এটি কার্যকর হয়েছে। আমি এও জানি যে আপনি যে অবদান রেখেছিলেন caret, আপনি কি এই প্রশ্নটি একবার দেখে নিতে পারেন, আমি খুব কৃতজ্ঞ হব? stats.stackexchange.com/questions/81962/…
ডক্টরেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.