Slide 1

Slide 1 text

Real World Ray 2024೥10݄9೔ ୷ᷓ༸ (zhanpon) 1

Slide 2

Slide 2 text

ࣗݾ঺հ • ୷ ᷓ༸ʢ͟Μ ͍͍΍Μʣ • ൒೥લʹ෱ԬʹҾͬӽ͖ͯ͠·ͨ͠ • ػցֶशγεςϜͷύϑΥʔϚϯενϡʔχϯά͕޷͖Ͱ͢ 2

Slide 3

Slide 3 text

࠷ۙϦϦʔεͨ͠αʔϏε ϓϨεϦϦʔεΑΓ 3

Slide 4

Slide 4 text

ྨࣅը૾ݕࡧγεςϜͷ࡞Γํ 4

Slide 5

Slide 5 text

ྨࣅը૾ݕࡧγεςϜͷ࡞Γํ 1. ը૾ΛϕΫτϧʹม׵͢ΔϞσϧΛ༻ҙ͠·͢ 2. େྔͷը૾ΛϕΫτϧʹม׵ͯ͠ɺϕΫτϧDBʹΠϯσοΫε ͠·͢ 3. ׬੒ʂ 5

Slide 6

Slide 6 text

ྨࣅը૾ݕࡧγεςϜͷ࡞Γํ 1. ը૾ΛϕΫτϧʹม׵͢ΔϞσϧΛ༻ҙ͠·͢ 2. େྔͷը૾ΛϕΫτϧʹม׵ͯ͠ɺϕΫτϧDBʹΠϯσοΫε ͠·͢ → ΦϑϥΠϯόονਪ࿦ 3. ׬੒ʂ 6

Slide 7

Slide 7 text

Part I: ΦϑϥΠϯόονਪ࿦ 7

Slide 8

Slide 8 text

ΦϑϥΠϯόονਪ࿦ RayͷެࣜυΩϡϝϯτΑΓ 8

Slide 9

Slide 9 text

ΦϑϥΠϯόονਪ࿦ʹٻΊΔ΋ͷ • εέʔϥϏϦςΟ • ܭࢉࢿݯͷ༗ޮ׆༻ 9

Slide 10

Slide 10 text

εέʔϥϏϦςΟ 10

Slide 11

Slide 11 text

εέʔϥϏϦςΟͷඞཁੑ • ೖྗσʔλ͸૿͑ଓ͚Δ͕ɺδϣϒʹ͸࣮ߦ੍࣌ؒ໿͕͋Δ • ࣮ߦ੍࣌ؒ໿͕ݫ͘͠ͳ͍ΞυϗοΫͳδϣϒͰ΋ɺܭࢉϦι ʔεΛ௥Ճͯ͠ૣ͘ऴΘΒͤΒΕͨΒخ͍͠ 11

Slide 12

Slide 12 text

෼ࢄॲཧʹΑΔεέʔϥϏϦςΟͷ֬อ RayͰ͸ෳ਺ϊʔυ͔ΒͳΔΫϥελͰ෼ࢄॲཧ͕Ͱ͖ΔʢԼਤ ͸ެࣜυΩϡϝϯτΑΓʣ 12

Slide 13

Slide 13 text

ܭࢉࢿݯͷ༗ޮ׆༻ 13

Slide 14

Slide 14 text

ಛ௃ྔநग़·Ͱͷεςοϓ 1. μ΢ϯϩʔυ (I/O) 2. લॲཧ (CPU) 3. ಛ௃ྔநग़ (GPU) 14

Slide 15

Slide 15 text

ετϦʔϛϯάॲཧ • ը૾ͷμ΢ϯϩʔυͱલॲཧ͚ͩͰԿ࣌ؒ΋͔͔ΔͷͰɺͦͷ ؒGPUΛ༡͹͓ͤͯ͘ͷ͸΋͍ͬͨͳ͍ • ը૾ͷμ΢ϯϩʔυɺલॲཧɺಛ௃ྔநग़Λ͢΂ͯಉ࣌ʹߦ͍ ͍ͨʢετϦʔϛϯάॲཧʣ 15

Slide 16

Slide 16 text

ετϦʔϛϯάॲཧͷϝϯλϧϞσϧ શࣗಈચ୕ס૩ػ vs ೋ૧ࣜચ୕ػͱચ୕෺ׯ͠ 16

Slide 17

Slide 17 text

ετϦʔϛϯάॲཧͷϝϯλϧϞσϧ શࣗಈચ୕ס૩ػ vs ೋ૧ࣜચ୕ػͱચ୕෺ׯ͠ 17

Slide 18

Slide 18 text

࣮ࡍͷίʔυ def main(): ray.data.read_parquet(paths) # σʔλͷμ΢ϯϩʔυ .map_batches(preprocess) # લॲཧ .map_batches(extract, num_gpus=1) # ಛ௃ྔநग़ .write_parquet(out_dir) # ਪ࿦݁Ռͷॻ͖ग़͠ 18

Slide 19

Slide 19 text

લ൒ͷ·ͱΊ Ray Dataͷ෼ࢄɾετϦʔϛϯάॲཧʹΑͬͯεέʔϥϏϦςΟ ͱϦιʔεͷ༗ޮ׆༻͕ୡ੒Ͱ͖·͢ʂ 19

Slide 20

Slide 20 text

Part II: ύϑΥʔϚϯενϡʔχϯά 20

Slide 21

Slide 21 text

ϝτϦΫε • εϧʔϓοτʢ࠷ऴతͳλʔήοτʣ • ϓϩηε͝ͱͷCPU࢖༻཰ • GPU࢖༻཰ 21

Slide 22

Slide 22 text

νϡʔχϯάͷྲྀΕ ҎԼͷεςοϓΛ܁Γฦͯͩ͠ΜͩΜεϧʔϓοτΛ্͍͛ͯ͘ 1. δϣϒΛ࣮ߦͯ͠εϧʔϓοτΛܭଌ͢Δ 2. ʢδϣϒͷ࣮ߦதʹʣϘτϧωοΫΛಛఆ͢Δ 3. ϘτϧωοΫΛղফ͢ΔͨΊͷมߋΛՃ͑Δ 22

Slide 23

Slide 23 text

ྫ1: લॲཧ͕ϘτϧωοΫ • ࠷ۙͷGPU͸ΊͪΌͪ͘Ό଎͍ • GPUʹे෼ಇ͔ͤΔͨΊʹ͸1 GPU͋ͨΓ4-12 CPUඞཁʢલॲ ཧͱਪ࿦ͷॏ͞ʹΑͬͯมΘΔʣ 23

Slide 24

Slide 24 text

લॲཧ͕ϘτϧωοΫʹͳ͍ͬͯΔ༷ࢠ • લॲཧϓϩηεͷCPU࢖༻཰͕͢΂ͯ100%ʹͳ͍ͬͯΔ • GPU࢖༻཰͕௿͍ • GPUॲཧΛߦ͏εςʔδͷΩϡʔ͕ۭʹͳ͍ͬͯΔ 24

Slide 25

Slide 25 text

લॲཧϓϩηεͷCPU࢖༻཰ Ray DashboardͷΫϥελλϒͰ֬ೝ 25

Slide 26

Slide 26 text

GPU࢖༻཰͕௿͍ nvidia-smi΍nvitopͰ֬ೝͰ͖Δ 26

Slide 27

Slide 27 text

GPUॲཧͷΩϡʔ͕ۭ 27

Slide 28

Slide 28 text

ͦͷଞͷྫ • ΦϒδΣΫτετΞ͕ᷓΕΔ • reduceܥͷॲཧ͕ඇޮ཰ 28

Slide 29

Slide 29 text

ΦϒδΣΫτετΞ͕ᷓΕΔ • ϓϩηεؒͰσʔλΛड͚౉ͨ͢ΊͷྖҬΛΦϒδΣΫτετ Ξͱ͍͏ • ᷓΕΔͱσΟεΫॻ͖ग़͠଴ͪʹͳΔͷͰ஗͍ 29

Slide 30

Slide 30 text

reduceܥͷॲཧ͕ඇޮ཰ • count, sumͳͲ • map͚ͩRay Dataʹ΍Βͤͯޙॲཧ͸Pandas, PolarsͳͲͰ΍Δ ͜ͱ͕Α͋͘Δ 30

Slide 31

Slide 31 text

·ͱΊ • ʢલ൒ʣRay Dataͷ෼ࢄɾετϦʔϛϯάॲཧʹΑͬͯεέʔ ϥϏϦςΟͱϦιʔεͷ༗ޮ׆༻͕ୡ੒Ͱ͖Δ • ʢޙ൒ʣύϑΥʔϚϯενϡʔχϯάͷ࣮ྫ • લॲཧ͕ϘτϧωοΫ • ΦϒδΣΫτετΞ͕ᷓΕΔ • reduceܥͷॲཧ͕ඇޮ཰ 31

Slide 32

Slide 32 text

એ఻: DevPods Fukuoka ෱Ԭʹ͍ΔLINEϠϑʔϝϯόʔ͕ϗετ͍ͯ͠ΔϙουΩϟετ ൪૊Ͱ͢ʂ 32