[GP] R์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐ˜์‘ํ˜•

์ด ๊ธ€์€ N.K Dev Lab์—์„œ ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ R ์ฝ”๋“œ๋ฅผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ? ๋งŽ์ด ๋“ค์–ด๋ณด์…จ๋˜ ๋ง์”€์ด๊ฒ ์ง€๋งŒ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์ผ๋‹จ ๋ฌด์—‡์ธ์ง€ ๋จผ์ € ์•Œ์•„๋ณด๊ณ  ์ง„ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Parallel Processing

๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ˜น์€ ๊ณ„์‚ฐ์€ ์ปดํ“จํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋™์‹œ์— ๋งŽ์€ ๊ณ„์‚ฐ์„ ํ•˜๋„๋ก ํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์ด ํ•˜๋‚˜๋‹น ์ฝ”์–ด ํ•œ ๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ผ๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์— ๊ฐ€๊นŒ์› ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ ๊ฒƒ์€ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ๋ฐฉ์‹์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์ด ๋ฐฉ๋ฒ•์€ ํ•˜๋‚˜์˜ ๊ณ„์‚ฐ์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ์ชผ๊ฐœ์„œ ๋‚˜๋ˆ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์‹œ์— ๋งŽ์€ ๊ณ„์‚ฐ์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋ž‘์€ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ˜„๋Œ€ ํ”„๋กœ์„ธ์„œ์—๋Š” ํ•œ ํ”„๋กœ์„ธ์„œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด๊ฐ€ ๋‹ฌ๋ ค ์žˆ๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋งŽ์ด ๋‚˜์˜ค๊ณ  ์žˆ์ฃ . ๋Œ€ํ‘œ์ ์œผ๋กœ 8๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ๋‹ฌ๋ฆฐ ๋…€์„์„ ์˜ฅํƒ€ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ผ๊ณ ๋„ ๋งŽ์ด ์ด์•ผ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋งŽ์€ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์ˆ˜๋งŽ์€ ๋ฐ˜๋ณต ์—ฐ์‚ฐ์„ ๊ฐ ์ฝ”์–ด๋งŒํผ ๋‚˜๋ˆ  ๋ถ„์‚ฐํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๋ฐ”๋กœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์˜ฅํƒ€ ์ฝ”์–ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ๋…ธํŠธ๋ถ, ๋ฐ์Šคํฌํ†ฑ ์ค‘์—์„œ ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ๋†’์€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ด์•ผ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” PC์— ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋“€์–ผ ์ฝ”์–ด์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์ฟผ๋“œ ์ฝ”์–ด์ผ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง ์˜ค๋ž˜๋œ ์ปดํ“จํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์‹ฑ๊ธ€ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์ฃ โ€ฆ ๊ทธ๋Ÿฌ๋‹ˆ ์–ผ๋งˆ๋“ ์ง€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์‹ค์Šต์„ ํ•˜๋Š” ๋ฐ ์žˆ์–ด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

When should use?

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–จ ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ์š”? ๋Œ€ํ‘œ์ ์œผ๋กœ ์ €๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ์š”์ฒญํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ R์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๊ฒฝ์šฐ์—๋Š” ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ฒด๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ฃ . ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์ง€๊ฑฐ๋‚˜ ๊ทธ ์–‘์ด ๋งŽ์•„์ง€๋ฉด ๋ฐ˜๋ณตํ•˜๋Š” ํšŸ์ˆ˜๋„ ๋งŽ์•„์ง€๋‹ˆ๊น์š”.

1
2
3
4
len <- list.files("~/images", pattern = "\\.png$")
for(i in 1:length(len)) {
...
}

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ์ž์‹ ์˜ ์Šคํ† ๋ฆฌ์ง€์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊บผ๋‚ด ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ Grayscale ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๋ณดํ†ต์€ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์œ„์˜ ์ฝ”๋“œ๋Š” ์„ค๋ช…์„ ์‰ฝ๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

1
2
3
lapply(len, function(x) {
...
})

R์„ ์ข€ ์‚ฌ์šฉํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ฒ ์ง€์š”? ๋ฐ˜ํ™˜ ๊ฐ’์€ ํ•ด๋‹น ํŒŒ์ผ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ๋„ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™์€ ๊ฒƒ์€ ๊ฐ™์€ ๋™์ž‘์„ ๊ณ„์† ๋ฐ˜๋ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ €๊ธฐ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๊ฐ€ 100,000๊ฐœ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰์ƒ ๋ฐ˜๋ณต๋ฌธ์€ ๋งจ ์ฒซ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ด๋ฏธ์ง€๋Š” ๊ณ„์† ๋Œ€๊ธฐ ์ค‘์ธ ์ƒํƒœ๋กœ ๋จธ๋ฌผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ฝ”์–ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฌ๊ณ  ์žˆ๋Š” ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋”์šฑ ์ผ ์ฒ˜๋ฆฌ๊ฐ€ ๋นจ๋ผ์ง€๊ฒ ์ฃ ?


์ด์–ด์„œ ์ฝ์œผ์‹œ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.

... ๊ณ„์† ์ฝ๊ธฐ



๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments