Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

生活を豊かにするデータ解析と計算機の使われ方の進化

457 views

Published on

生活を豊かにするデータ解析と計算機の使われ方の進化

産業技術連携推進会議 情報通信・エレクトロニクス部会
情報技術分科会 情報通信研究会 in あきた / 2018年12月13日
さくらインターネット株式会社
さくらインターネット研究所
上級研究員 松本直人

Published in: Technology
  • Be the first to comment

  • Be the first to like this

生活を豊かにするデータ解析と計算機の使われ方の進化

  1. 1. 生活を豊かにするデータ解析と 計算機の使われ方の進化 産業技術連携推進会議 情報通信・エレクトロニクス部会 情報技術分科会 情報通信研究会 in あきた / 2018年12月13日 2018年12月13日 さくらインターネット株式会社 さくらインターネット研究所 上級研究員 松本直人 (C) Copyright 1996-2018 SAKURA Internet Inc
  2. 2. 私たちと取り巻く計算機への期待値 2 総務省: 「非定型的な知的業務」や「複雑な手仕事業務」においても将来的には (計算機等により)代替が及ぶと見られている(AIに関して情報通信白書より) (計算機を用いた)データ解析技術が、私たちの生活を豊かにする源泉
  3. 3. 生活を豊かにする計算機の活用と未来のカタチ 3 政府統計の総合窓口 / 平成28年社会生活基本調査 / 第1-2表 男女,年齢,行動の種類別総平均時間・行動者平均時間・行動者率-平日(分)より 人間の時間割合(年齢別 / 平日) 通勤+仕事 睡眠+身の回り+食事 平均7.5h 平均10h 平均6.5h 自由時間 (年齢) 生産性(質/量)の向上 生活(質)の改善 計算機の活用 未来のカタチ (年齢問わず) 新たな製品 サービス等
  4. 4. 私たちと取り巻く計算機への期待値とそのギャップ 4 *(出典)総務省「ICTの進化が雇用と働き方に及ぼす影響に関する調査研究」(平成28年) 総務省: 人工知能の利活用が望ましい分野(期待値) (働き方に及ぼす影響の調査より)* ・交通手段間での高度な利用者融通や増発対応 ・製造管理等によるサプライチェーンの最適化 ・不正送金などの金融犯罪の高度な検知 ・顧客の囲い込みや満足度向上 ... など データ解析による未来予測 (従来通りの計算機利用) 時空間上の機械制御 (計算機で機械制御) ・高度な自動運転 (その他記載なし)
  5. 5. 人間に足りないモノ / 計算機に足らないモノ (空間測定精度の場合) 5 生体網膜(人間) ※運動視差から空間推定(脳)* 576M Pixels (垂直視野110°/水平視野 70°) デジタルカメラ(魚眼レンズ2台) 84M Pixels (垂直視野360°/水平視野360°) レーザー計測器 (Lica 3D Disto) 4 mm@50m 空間測定 (垂直視野250°/ 水平視野360°) 三次元計測機 (Velodyne LiDAR, Inc. VLS-128TM) 300 m(垂直視野 40°/水平視野360°/測定点数2.4M point/s) 空間測定精度 (高) (低) *Notes on the Resolution and Other Details of the Human Eye (http://www.clarkvision.com/imagedetail/eye-resolution.html) 人間と計算機の性能/精度上の違いを理解することから、すべてがはじまる
  6. 6. 6 つづけてデータ解析に活用される「計算機の性能限界」を理解する
  7. 7. サーバー/ストレージにおけるストレージネットワークを介したデータ処理の流れ 7 CPU 40/100Gbit/s NIC CPUCPU PCI Express 3.0 OS(kernel) Application OS(kernel) PCI Express 3.0 HDD/SSD OS(kernel) CPU OS(kernel) 40/100Gbit/s NIC CPU PCI Express 3.0 OS(kernel) Application データ参照 データ提供 結果出力 サーバー/ストレージにおけるデータ処理の流れ DRAM DRAM データ処理 データ処理 長大なデータ処理の流れから「首長竜」に例えられる サーバー間でのデータ通信には長大なデータ処理が介在する (技術的な基礎理解)
  8. 8. 単位時間(秒)におけるデータサイズと処理性能の比較 8 40Gbit/s Ethernet (DPDK) 47M pps (64Bytes)* fio RAMDSIK (DDR4) 19M iops (128Bytes)*** NVMe SSD (U.2) 1-3Miops (4KBytes)*** redis GET (localhost/DRAM) 2M rps (2Bytes)** 40Gbit/s Ethernet (line-rate) 3M pps (1500Bytes)* Apache Ignite (CPU) 250Kops**** SOURCE: Linux 40GbE DPDK Performance / High Speed Packet Processing with Terminator 5 /Chelsio Communications Inc. (2015)*, redis-benchmark with AMD RYZEN 1800X Intel Kaby Lake (i7-7700K) memo [GET rates: / SAKURA Internet Research Center. (2017/05)**, SAKURA Internet Research Center Lab test results (2017)***, Apache Ignite on Intel Core i7 (4.5GHz)****, R = randint(0,100,600000000); a = cp.array(R, dtype=np.uint8) 2.27 sec ; cp.sort(a) 0.54 sec; ***** SAKURA Internet Research Center (2018/05) cupy.sort (GPU DDR5) 214Mops (uint8)***** 214Mops/byte (GPU) 732kpps/byte (CPU) 148kpps/byte (CPU) 2kpps/byte (NIC) 多量に高速演算処理が必要な場合、高速メモリと演算器を密結合させた構成が良い 1Mrps/byte (CPU) 750iops/byte (CPU) 単位を揃える→ (Ops/byte)
  9. 9. キャッシュ/サービス(API) 従来型の情報共有システムの問題点と次世代データベース領域の課題整理 9 リクエスト振分処理 不特定多数の参照ユーザー(80%) 不特定少数の投稿ユーザー(20%) データベース/ストレージ 恒久的な データ保存 整合性チェック アーカイブ処理 力技と物量による問題解決(現在) データ参照向けキャッシュ効率最適化/リクエスト振分処理等の改善は今後も課題 データ処理 ライフサイクル (例) 複雑かつ 高コスト
  10. 10. How to measure your dataflow using Apache Ignite 10 Intel Core i7 (4.5GHz) AMD Threadripper (3.8GHz) AMD EPYC (2.1GHz) (Operations/sec) Apache Ignite Benchmark シングルスレッドに特化したプロセスにはCPUクロック性能の高い環境が良い
  11. 11. How to measure your dataflow using cupy & numpy (NVIDIA GPU) 11 SOURCE: SAKURA Internet Research Center. (04/2018) Project Sprig. import time import cupy as cp import numpy as np from numpy.random import * start = time.time() R = randint(0,100,600000000) end = time.time() print ( end - start ) start = time.time() a = np.array(R, dtype=np.uint8) end = time.time() print ( end - start ) start = time.time() np.sort(a) end = time.time() print ( end - start ) import time import cupy as cp import numpy as np from numpy.random import * start = time.time() R = randint(0,100,600000000) end = time.time() print ( end - start ) start = time.time() a = cp.array(R, dtype=cp.uint8) end = time.time() print ( end - start ) start = time.time() cp.sort(a) end = time.time() print ( end - start ) 性能比較 numpy (CPU) cupy (GPU) # apt install python-pip # pip install --upgrade pip # pip install --upgrade setuptools # pip install numpy cupy time # python R = randint(0,100,600000000) R = randint(0,100,600000000) a = cp.array(R, dtype=np.uint8) 2.27 sec a = np.array(R, dtype=np.uint8) 0.46 sec cp.sort(a) np.sort(a) numpy (CPU) cupy (GPU) 5.36 sec 15.1sec 5.36 sec 0.54 sec | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 1050 Off | 00000000:65:00.0 Off | N/A | | 29% 27C P8 N/A / 65W | 1205MiB / 1997MiB | 0% Default | +-------------------------------+----------------------+----------------------+ Time (Lower is better)
  12. 12. How to burn your GPU with CUDA9.1 (MapD Community Edition 3.4.0) 12 # apt install -y curl apt-transport-https # useradd -U mapd # ufw disable; ufw enable; ufw allow 9092/tcp; ufw allow 22/tcp # curl https://releases.mapd.com/ce/mapd-ce-cuda.list | sudo tee /etc/apt/sources.list.d/mapd.list # curl https://releases.mapd.com/GPG-KEY-mapd | sudo apt-key add - # apt update # apt install -y mapd # vi ~/.bashrc export MAPD_USER=mapd export MAPD_GROUP=mapd export MAPD_STORAGE=/var/lib/mapd export MAPD_PATH=/opt/mapd # source ~/.bashrc # mkdir -p $MAPD_STORAGE # chown -R $MAPD_USER $MAPD_STORAGE # cd $MAPD_PATH/systemd # ./install_mapd_systemd.sh # cd $MAPD_PATH # systemctl start mapd_server; systemctl enable mapd_server # systemctl start mapd_web_server; systemctl enable mapd_web_server # $MAPD_PATH/insert_sample_data 2) Flights (2008) 10k 2 # $MAPD_PATH/bin/mapdql -t Password: HyperInteractive mapdql> SELECT origin_city AS "Origin", dest_city AS "Destination", AVG(airtime) AS "Average Airtime" FROM flights_2008_10k WHERE distance <= 33 GROUP BY origin_city, dest_city; Execution time: 1268 ms, Total time: 1269 ms SOURCE: https://www.mapd.com/platform/download-community/ +---------------------------------------------------------- | NVIDIA-SMI 387.26 Driver Version: 387.26 |-------------------------------+----------------------+--- | GPU Name Persistence-M| Bus-Id Disp.A | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | |===============================+======================+=== | 0 GeForce GTX 1050 Off | 00000000:65:00.0 Off | | 29% 27C P0 N/A / 65W | 1449MiB / 1997MiB | +-------------------------------+----------------------+--- |========================================================== | 0 5828 C /opt/mapd/bin/mapd_server +---------------------------------------------------------- Origin|Destination|Average Airtime West Palm Beach|Tampa|33.81818181818182 Norfolk|Baltimore|36.07142857142857 Ft. Myers|Orlando|28.66666666666667 Indianapolis|Chicago|39.53846153846154 Tampa|West Palm Beach|33.25 Orlando|Ft. Myers|32.58333333333334 Austin|Houston|33.05555555555556 Chicago|Indianapolis|32.7 Baltimore|Norfolk|31.71428571428572 Houston|Austin|29.61111111111111
  13. 13. AMDGPU ROCm Tensorflow 1.8 (speech_commands/train.py) 13 # git clone https://github.com/tensorflow/tensorflow.git # cd tensorflow/ # python3 tensorflow/examples/speech_commands/train.py 2018-09-02 10:43:36.924800: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA AMDGPU ISA: gfx803 memoryClockRate (GHz) 1.21 pciBusID 0000:17:00.0 Total memory: 2.00GiB Free memory: 1.75GiB : INFO:tensorflow:Step #1: rate 0.001000, accuracy 9.0%, cross entropy 2.724346 INFO:tensorflow:Step #2: rate 0.001000, accuracy 9.0%, cross entropy 2.521507 : INFO:tensorflow:Saving to "/tmp/speech_commands_train/conv.ckpt-4300" INFO:tensorflow:Step #4301: rate 0.001000, accuracy 65.0%, cross entropy 1.094288 INFO:tensorflow:Step #4302: rate 0.001000, accuracy 69.0%, cross entropy 0.876309 : # /opt/rocm/bin/rocm-smi GPU Temp AvgPwr SCLK MCLK Fan Perf SCLK OD MCLK OD 0 52c 44.230W 1172Mhz 1750Mhz 0.0% auto 0% 0% # top top - 10:58:10 up 25 min, 2 users, load average: 1.51, 1.29, 0.89 Tasks: 222 total, 2 running, 220 sleeping, 0 stopped, 0 zombie %Cpu0 : 6.2 us, 1.7 sy, 0.0 ni, 92.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 5.6 us, 2.8 sy, 0.0 ni, 91.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 8.3 us, 3.1 sy, 0.0 ni, 88.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 6.4 us, 2.7 sy, 0.0 ni, 90.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 : 9.8 us, 3.7 sy, 0.0 ni, 86.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 : 8.4 us, 3.0 sy, 0.0 ni, 88.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu6 : 5.4 us, 2.3 sy, 0.0 ni, 92.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu7 : 3.4 us, 2.0 sy, 0.0 ni, 94.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu8 : 3.4 us, 1.7 sy, 0.0 ni, 94.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu9 : 3.7 us, 1.7 sy, 0.0 ni, 94.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu10 : 6.0 us, 2.7 sy, 0.0 ni, 91.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu11 : 4.4 us, 2.0 sy, 0.0 ni, 93.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  14. 14. In-Memory Computing for FASTDATA using fio with RAMDISK(DDR4) 14 # uname -sr; cat /etc/lsb-release Linux 4.13.0-21-generic DISTRIB_DESCRIPTION="Ubuntu 17.10" # lshw -c cpu product: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz # lshw -class memory description: DIMM DDR4 Synchronous 2666 MHz (0.4 ns) # mkdir /ramdisk # mount -t tmpfs tmpfs /ramdisk # fio -directory=/ramdisk -rw=read -bs=* -size=1G -numjobs=16 -runtime=10 -group_reporting -name=data 64GB RAMDISK (fio block size: Bytes) with Core i7-7800X OverClocked 5GHz 19.9M IOPS 18.6M IOPS 16.3M IOPS 12.6M IOPS 7.8M IOPS 4.6M IOPS 2.4M IOPS 1.2M IOPS (Bytes)
  15. 15. In-Memory Database Registration Performance Check (Intel vs AMD) 15 Purley# uname -sr; cat /etc/redhat-release Linux 3.10.0-514.el7.x86_64 CentOS Linux release 7.3.1611 (Core) Purley# grep proc /proc/cpuinfo | wc -l 48 Purley# lscpu Model name: Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz RYZEN# uname -sr; cat /etc/debian_version Linux 4.10.0-19-generic stretch/sid RYZEN# grep proc /proc/cpuinfo | wc -l 16 RYZEN# lscpu Model name: AMD Ryzen 7 1800X Eight-Core Processor redisはデータサイズに応じてプロセスあたりの処理性能に低下が確認できる
  16. 16. In-Memory Database Performance Check 16 Intel Purley AMD Ryzen Xeon Phi(KNL) # uname -sr; cat /etc/redhat-release Linux 3.10.0-514.el7.x86_64 CentOS Linux release 7.3.1611 (Core) # grep proc /proc/cpuinfo | wc -l 48 # lscpu Model name: Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz
  17. 17. ALL FLASH DATACENTER & IN-MEMORY COMPUTING: HOT TOPICS 17 SOURCE: SAKURA Internet Research Center. (2017/10), Project Sprig.
  18. 18. My First Intel/Movidius NCS 18 SOURCE: SAKURA Internet Rsearch Center. (2017/07) Project Sprig. $ sudo su # apt-get update ; apt-get upgrade -y # mkdir /opt/mvncsdk ; cd /opt/mvncsdk/ GoTo: https://developer.movidius.com/getting-started # wget https://ncs-forum-uploads.s3.amazonaws.com/ncsdk/MvNC_SDK_01_07_07/MvNC_SDK_1.07.07.tgz # tar zxvf MvNC_SDK_1.07.07.tgz ; tar zxvf MvNC_Toolkit-1.07.06.tgz ; tar xzvf ./MvNC_API-1.07.07.tgz # ./bin/setup.sh ; ./bin/data/dlnets.sh # source ~/.bashrc # cd /opt/mvncsdk/ncapi/; ./setup.sh ; cd ./c_examples/ ; make # ./ncs-fullcheck -l2 -c1 ../networks/AlexNet ../images/cat.jpg Device 0 Address: 2 - VID/PID 03e7:2150 Starting wait for connect with 2000ms timeout Found Address: 2 - VID/PID 03e7:2150 Found EP 0x81 : max packet size is 512 bytes Found EP 0x01 : max packet size is 512 bytes Found and opened device Performing bulk write of 825136 bytes... Successfully sent 825136 bytes of data in 35.764553 ms (22.002540 MB/s) Boot successful, device address 2 Found Address: 2 - VID/PID 040e:f63b done Booted 2 -> VSC OpenDevice 2 succeeded Graph allocated : $ uname -sr; Linux 4.8.0-36-generic (Ubuntu 16.04.02) $ lsusb -v Device Descriptor: iProduct 2 Movidius MA2X5X MaxPower 500mA © Copyright Movidius 2017. All Rights Reserved.
  19. 19. UP Board AI Core Configuration memo 19 # uname -sr; cat /etc/lsb-release Linux 4.4.0-116-generic DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS" # lshw *-pci:1 *-usb description: USB controller product: FL1100 USB 3.0 Host Controller *-usbhost:1 *-usb UNCLAIMED description: Generic USB device product: Movidius MA2X5X vendor: Movidius Ltd. # git clone -b ncsdk2 http://github.com/Movidius/ncsdk && cd ncsdk && make install # export PYTHONPATH="${PYTHONPATH}:/opt/movidius/caffe/python" # cd /examples/tensorflow/inception_v3 # cat run.py image_filename = path_to_images + 'nps_electric_guitar.png' devices = mvnc.enumerate_devices() # python3 run.py Number of categories: 1001 Start download to NCS... ******************************************************************************* inception-v3 on NCS ******************************************************************************* 547 electric guitar 0.988281 403 acoustic guitar 0.00751877 715 pick, plectrum, plectron 0.0014801 421 banjo 0.000901222 820 stage 0.000654221 ******************************************************************************* Finished Copyright 2018 Up Board | All Rights Reserved
  20. 20. USB 3.0 CAPTURE HDMI 4K with Loop-through for Image redistribution 20 # uname -sr; tail -1 /etc/redhat-release Linux 3.10.0-862.9.1.el7.x86_64 CentOS Linux release 7.4.1708 (Core) # yum install -y usbutils hwinfo mplayer v4l-utils ffmpeg git # lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M |__ Port 4: Dev 2, If 9, Class=Human Interface Device, Driver=usbhid, 5000M # lsusb -vv # hwinfo --usb # v4l2-ctl --list-devices USB Capture HDMI 4K+ (usb-0000:00:14.0-4): /dev/video0 # v4l2-ctl -d /dev/video0 --info # v4l2-ctl --list-formats-ext -d /dev/video0 Type : Video Capture Name : YUV 4:2:2 (YUYV) Size: Discrete 4096x2160 Interval: Discrete 0.017s (60.000 fps) # wget https://libav.org/releases/libav-12.3.tar.xz # tar Jxvf ./libav-12.3.tar.xz; cd libav-12.3 # ./configure --disable-yasm; make; make install # avconv -f video4linux2 -input_format nv12 -s 1920x1080 -i /dev/video0 -qscale 10 out.mpeg Input #0, video4linux2, from '/dev/video0': Duration: N/A, start: 1240.062083, bitrate: 1492992 kb/s nv12, 1920x1080, 1492992 kb/s 60 fps, 1000k tbn # ffmpeg -f v4l2 -list_formats all -i /dev/video0 [video4linux2,v4l2 @ 0x24114c0] Raw : yuyv422 : YUV 4:2:2 (YUYV) : 640x360 640x480 720x480 720x576 768x576 800x600 856x480 960x540 1024x576 1024x768 1280x720 1280x800 1280x960 1280x1024 1368x768 1440x900 1600x1200 1680x1050 1920x1080 1920x1200 2048x1080 2560x1440 3840x2160 4096x2160 [video4linux2,v4l2 @ 0x24114c0] Raw : nv12 : YUV 4:2:0 (NV12) : 640x360 640x480 720x480 720x576 768x576 800x600 856x480 960x540 1024x576 1024x768 1280x720 1280x800 1280x960 1280x1024 1368x768 1440x900 1600x1200 1680x1050 1920x1080 1920x1200 2048x1080 2560x1440 3840x2160 4096x2160 © 2018, Nanjing Magewell Electronics Co., Ltd SERVERSERVER HDMI output SERVER SERVER HDMI CAPTURE SERVER HDMI CAPTURE HDMI Loop-Trough HDMI Loop-Trough HDMI Loop-TroughHDMI Loop-Trough POWER ON/OS DOWN POWER ON/OS DOWN HDMI CAPTURE HDMI CAPTURE USB 3.0 BUS POWER USB 3.0 BUS POWER USB 3.0 BUS POWER USB 3.0 BUS POWER USB 3.0 BUS POWER ORIGINAL READ once COPY COPY
  21. 21. Appendix: SSD DC P4800X and cost/performance analysis 21 (Cost) 512GB DDR4 DRAM (2666Hz/ECC) $6,399.68 SOURCE: © 2016 Colfax International. , © 2000-2017 Newegg Inc. / SAKURA Internet Research Center. (08/2017) Project Sprig. 750GB 3D XPOINT/NVMe SSD (P4800X x2) $3,790.00 30GB (300M records) sort: 296 sec 200GB (2,000M records) sort: 4,648 sec 192GB DDR4 DRAM (2666Hz/ECC) $2,399.88- In-Memory Computing All Flash Computing Processing Size: 6.7x Processing Cost: 1.5x Processing Time: 15x In-Memory Computing # gensort -a 2000000000 test # time sort --parallel=52 -T /memdrv test -o out # gensort -a 300000000 test # time sort --parallel=52 -T /ramdisk test -o out Processing Size: 2.7x Processing Cost: 2.7x Processing Time: N/A
  22. 22. Appendix: stream_openmp performance check 22 Xeon Phi AMD RYZEN Xeon Xeon Special Thanks: Takefumi Miyoshi
  23. 23. Appendix: Network Application Benchmark result (iperf with 20 servers) 23
  24. 24. まとめ 24 政府統計の総合窓口 / 平成28年社会生活基本調査 / 第1-2表 男女,年齢,行動の種類別総平均時間・行動者平均時間・行動者率-平日(分)より 人間の時間割合(年齢別 / 平日) 通勤+仕事 睡眠+身の回り+食事 平均7.5h 平均10h 平均6.5h 自由時間 (年齢) 生産性(質/量)の向上 生活(質)の改善 計算機の活用 未来のカタチ (年齢問わず) 計算機を用いたデータ解析技術の発展/進化が、私たちの生活を豊かにする源泉 新たな製品 サービス等

×