Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Distributed Processing in Python

Distributed Processing in Python

chie8842

July 14, 2019
Tweet

More Decks by chie8842

Other Decks in Technology

Transcript

  1. Understanding distributed processing in Python Chie Hayashida

  2. $IJF)BZBTIJEB !DIJF) • 4PGUXBSF&OHJOFFSBU$PPLQBE GSPN+BQBO! • EFWFMPQBOEDPOUSJCVUFUPTPNF044 XSJUFBSUJDMFT BOENBLF QSFTFOUBUJPOT

    • 8POGJSTUQSJ[FBUSF*OWFOU (BNF%BZ • XPOUI QSJ[F 5PQ BU1FUGJOEFS ,BHHMFDPNQFUJUJPOJOXFFLDIBMMFOHF $IJF)BZBTIJEB !DIJF • 4PGUXBSF&OHJOFFSBU$PPLQBE GSPN+BQBO! • EFWFMPQBOEDPOUSJCVUFUPTPNF044 XSJUFBSUJDMFT BOENBLF QSFTFOUBUJPOT • 8POGJSTUQSJ[FBUSF*OWFOU (BNF%BZ" • XPOUI QSJ[F 5PQ BU1FUGJOEFS ,BHHMFDPNQFUJUJPOJOXFFLDIBMMFOHF
  3. $PPLQBE ‒ worldʼs largest recipe sharing platform Try cooking with

    it
  4. $PPLQBE JTHMPCBMTFSWJDF Bristol Office

  5. "HFOEB •CBTJDLOPXMFEHFPGQBSBMMFMEJTUSJCVUFE QSPDFTTJOH •QBSBMMFMQSPDFTTJOHJO1ZUIPO •EJTUSJCVUFEQSPDFTTJOHJO1ZUIPO

  6. %JTDMBJNFS • 8IBUEP*UBML • CBTJDBSDIJUFDUVSFPGQBSBMMFMEJTUSJCVUFE QSPDFTTJOH DPNQVUJOH MJCSBSJFTJO1ZUIPO • 8IBUEP*OPU

    UBML • IPXUPJOTUBMMBOETFUVQFBDIMJCSBSJFT • VTBHFTPGEFUBJMFE"1*TPGXIBUXFJOUSPEVDF
  7. )PXEPXFEFDJEFXIFUIFSUPVTF QBSBMMFMEJTUSJCVUFEQSPDFTTJOH FH •8IFOXFVTFMBSHFEBUB XIJDIDBOOPU IBOEMFJOPOFQSPDFTTPSPOFNBDIJOF •8IFOXFSVOPVSQSPHSBNTXJUIMBSHF EBUB JOTIPSUFSUJNF

  8. 28IJDIJTMBSHFEBUB 100MB 10GB 1TB

  9. *U`TDBTFCZDBTF •5IFXPSEMBSHFJTSFMBUJWF •$VSSFOUMZ 1BOEBTXPSLTFGGJDJFOUMZXJUI d(#EBUBXJUIVTVBMNBDIJOFT

  10. TDBMFVQTPMWFTMBDLPGSFTPVSDFT UPP #VUʜ • 8FTPNFUJNFTCFOPU BCMFUPVTFGVMMPGNBDIJOF SFTPVSDFTXJUIPOFQSPDFTT • 5IFSFTPVSDFTUIBUDBOCFNPVOUFEPOPOFNBDIJOFBSF MJNJUFE

  11. 4PMFU`TMFBSOQBSBMMFM QSPDFTTJOHBOEEJTUSJCVUFE QSPDFTTJOHUPQSPDFTTMBSHF EBUBFGGJDJFOUMZ

  12. 28IBUJT UIFEJGGFSFODFPGCFMPX •1BSBMMFMQSPDFTTJOH •%JTUSJCVUFEQSPDFTTJOH

  13. l1BSBMMFMQSPDFTTJOHzBOEl%JTUSJCVUFEQSPDFTTJOHz • 1BSBMMFMQSPDFTTJOH 1SPDFTTPS T .FNPSZ 1SPDFTTPS T .FNPSZ 1SPDFTTPS

    T .FNPSZ 1SPDFTTPS 1SPDFTTPS 1SPDFTTPS .FNPSZ • %JTUSJCVUFEQSPDFTTJOH /8 /8 /8 QSPDFTTPSTIBSFTNFNPSZ*OQBSBMMFMQSPDFTTJOH POUIFPUIFSIBOEQSPDFTTPSTIBTPXONFNPSJFTJOEJTUSJCVUFEQSPDFTTJOH
  14. -JCSBSJFTUPEBZ*JOUSPEVDF • QBSBMMFMQSPDFTTJOH • UISFBEJOH • NVMUJQSPDFTTJOH • KPCMJC •

    EJTUSJCVUFEQSPDFTTJOH • DFMFSZ • EBTL • 1Z4QBSL
  15. -JCSBSJFTUPEBZ*JOUSPEVDF • QBSBMMFMQSPDFTTJOH • UISFBEJOH • NVMUJQSPDFTTJOH • KPCMJC •

    EJTUSJCVUFEQSPDFTTJOH • DFMFSZ • EBTL • 1Z4QBSL
  16. UISFBEJOHBOENVMUJQSPDFTTJOH •1ZUIPOIBTPGGJDJBMNPEVMFTGPSQBSBMMFMQSPDFTTJOH • l#BUUFSZJODMVEFEz •8FDBOQBSBMMFMJ[FPVSQSPHSBNXJUIPVUBOZUIJSE QBSUZMJCSBSJFT

  17. UISFBEJOH • UISFBEJOHNPEVMFEJWJEFTPOFQSPDFTTJOUPNVMUJQMF UISFBET .BJO5ISFBE 5ISFBE 5ISFBE 1SPDFTT

  18. UISFBEJOH • (*- (MPCBM *OUFSQSFUFS-PDL MJNJUTPOMZPOFUISFBEDBOCF JOBTUBUFPGFYFDVUJPOBUBOZQPJOUJOUJNFJO$1ZUIPO 1SPDFTT 5ISFBE 

    5ISFBE  5ISFBE  SVO BXBJU BXBJU SVO BXBJU SVO SVO SVO BXBJU BXBJU SVO "DRVJSF-PDL
  19. 8IZ(*- • 5ISFBETJOQSPDFTTVTFTTBNFNFNPSZTQBDF • (*-XBTDIPTFOUPQSPUFDUUIFJOUFSOBMNFNPSZVTFECZ UIFJOUFSQSFUFS • 1&1QSPQPTFTTVCJOUFSQSFUFS UPPCTDVSF(*- QSPDFTT

    UISFBE UISFBE .FNPSZ4QBDF
  20. *OXIBUTJUVBUJPOTJTUISFBEJOH FGGFDUJWF • 5BTLTXIJDIJT*0 CPVOETVDIBT • SFBEXSJUFGJMFT • %#DPOOFDUJPO •

    %PXOMPBEEBUBGSPN/8 1SPDFTT 5ISFBE  5ISFBE  5ISFBE  SVO BXBJU BXBJU SVO BXBJU SVO SVO SVO BXBJU BXBJU SVO "DRVJSF-PDL
  21. *OXIBUTJUVBUJPOTJTUISFBEJOH FGGFDUJWF • 5BTLTXIJDIJT*0 CPVOETVDIBT • SFBEXSJUFGJMFT • %#DPOOFDUJPO •

    %PXOMPBEEBUBGSPN/8 1SPDFTT 5ISFBE  5ISFBE  5ISFBE  SVO BXBJU BXBJU SVO BXBJU SVO SVO SVO *0 BXBJU SVO "DRVJSF -PDL *0 *0 *0 VTF$16 EPOPUVTF$16
  22. NVMUJQSPDFTTJOH •NVMUJQSPDFTTJOHTQBXOTQSPDFTTFTGPS QBSBMMFMJ[BUJPO •QBSBMMFMJ[FJOCPUIMPDBMBOESFNPUF .BJO1SPDFTT $IJME1SPDFTT $IJME1SPDFTT

  23. NVMUJQSPDFTTJOH • FBDIQSPDFTTFTIBTJUTPXONFNPSZTQBDF • /PUBGGFDUFECZ(*- • -FTTMJLFMZUPDBVTFFSSPSTEVFUPEBUBDPSSVQUJPOPS EFBEMPDL .BJO1SPDFTT $IJME1SPDFTT

    $IJME1SPDFTT PTGPSL .FNPSZ4QBDF .FNPSZ4QBDF $PQZ .FNPSZ4QBDF $PQZ
  24. *OXIBUTJUVBUJPOTJTNVMUJQSPDFTTJOH FGGFDUJWF • 5BTLTXIJDIJT$16CPVOETVDIBT • /VNFSJDBMDBMDVSBUJPO • 3FHVMBSFYQSFTTJPOQSPDFTTJOH • #VUUIFQFSGPSNBODFJO1ZUIPO`TNVMUJQSPDFTTJOHEPFTO`U

    JODSFBTFMJOFBSMZ
  25. NVMUJQSPDFTTJOH • 5IFSFJTPWFSIFBEEVFUPDPNNVOJDBUJPO CFUXFFOQBSFOUQSPDFTTBOEDIJMEQSPDFTT .BJO1SPDFTT $IJME1SPDFTT $IJME1SPDFTT PTGPSL .FNPSZ4QBDF .FNPSZ4QBDF

    $PQZ .FNPSZ4QBDF $PQZ
  26. NVMUJQSPDFTTJOH •UIFNBYJNVNOVNCFSPGUBTLTXIJDIDBOCF SVOTJNVMUBOFPVTMZJTSFTUSJDUFEUP$16 OVNCFS 5BTL 5BTL 5BTL 5BTL 5BTL 5BTL

    $16 $16
  27. +PCMJC • UIJSEQBSUZMJCSBSZGPSQBSBMMFMQSPDFTTJOHJO1ZUIPO • +PCMJC DBOVTF UISFBEJOHPSNVMUJQSPDFTTJOHGPSCBDLFOE • MB[ZFWBMVBUJPOVTJOHUSBOTQBSFOUEJTLDBDIJOHPGUIF PVUQVU

    • FBTZBOETJNQMFDPEJOH • MPHHJOHBOEUSBDJOHPGUIFFYFDVUJPO https://joblib.readthedocs.io/
  28. 4VNNBSZVQUPIFSF • 1ZUIPOIBTPGGJDJBMNPEVMFTGPSQBSBMMFMQSPDFTTJOH • UISFBEJOHJTFGGFDUJWFUP*0CPVOEQSPDFTTJOH • NVMUJQSPDFTTJOHJTFGGFDUJWFUP$16CPVOEQSPDFTTJOH • CPUIPGUXPBSFNBJOMZGPSPOMZGPSQSPDFTTFTSVOBUPOMZ POFNBDIJOF

    • 8FDBOVTFUISFBEJOHBOENVMUJQSPDFTTJOHGVODUJPOTXJUI KPCMJC NPSFTJNQMZ • TPNFPGEBUBMJCSBSJFTUSBOTQBSFOUMZVTFUIFTFQBSBMMFM QSPDFTTJOHMJCSBSJFT
  29. -JCSBSJFTUPEBZ*JOUSPEVDF • QBSBMMFMQSPDFTTJOH • UISFBEJOH • NVMUJQSPDFTTJOH • KPCMJC •

    EJTUSJCVUFEQSPDFTTJOH • DFMFSZ • %BTL • 1Z4QBSL
  30. %JTUSJCVUFEQSPDFTTJOHJO1ZUIPO • 8IFOXFVTFMBSHFEBUBXIJDIDPVMEO`UQSPDFTTJOPOF NBDIJOF XFIBWFUPDPOTJEFSBCPVUEJTUSJCVUFE QSPDFTTJOH • QSPQFSUJFTXIJDITIPVMECFJODMVEFEJOEJTUSJCVUFE GSBNFXPSL •

    "VUPNBUJDSFDPWFSZ GSPNFSSPS • 5BTLEJWJTJPO KPCTDIFEVMJOH • 5PPMTGPS.POJUPSJOH %FCVHHBCJMJUZ
  31. $FMFSZ •EJTUSJCVUFEUBTLRVFVFCVJMUJO1ZUIPO •TJNQMFBOEGMFYJCMFBSDIJUFDUVSF • &WFSZQBSUTDBOCFFYUFOE • IFBWJMZVTFEGPSUBTLCBTFEXPSLMPBETJO 1ZUIPO • XJUI%KBOHP

    • "JSGMPXCBDLFOE
  32. $FMFSZ"SDIJUFDUVSF $MJFOU CSPLFS 3BCCJU.2 3FEJT  424 FUD 2VFVF 2VFVF

    2VFVF 8PSLFS $POTVNFS 8PSLFS $POTVNFS #BDLFOE 3FTVMUT 3FEJT FUD 8PSLFS $POTVNFS 8PSLFS $POTVNFS
  33. *OXIBUTJUVBUJPOTJTDFMFSZFGGFDUJWF  • 8IFOUIFUBTLJTTJNQMFCVUUIFBNPVOUPGEBUBJTUPP NVDIGPSPOFNBDIJOF • 8IFOZPVXBOUUPVTFJUXJUIBOPUIFSGSBNFXPSLTVDIBT %KBOHP

  34. %BTL • EJTUSJCVUFEQSPDFTTJOHGSBNFXPSLCVJMUJO1ZUIPO • CFBCMFUPVTF/VN1Z1BOEBT-JTUTMJLFQBSBMMFM PCKFDUT EBTLBSSBZ EBTLEBUBGSBNF EBTLCBH BOE"1*T

    • 4DIFEVMFSJTDVTUPNJ[BCMFUPHFUHPPEQFSGPSNBODFGPS CPUIGPSQBSBMMFMQSPDFTTJOHPOMPDBMNBDIJOFBOEGPS EJTUSJCVUFEQSPDFTTJOHPODMVTUFS • )BTHPPE8FC*OUFSGBDFGPSSFBMUJNFKPCNPOJUPSJOH
  35. %BTL TDIFEVMFS http://docs.dask.org/en/latest/scheduling.html

  36. %BTL 8FC*OUFSGBDF

  37. *OXIBUTJUVBUJPOTJT%BTL FGGFDUJWF  • 8IFOXFXBOUUPQBSBMMFMJ[F/VN1ZPSQBOEBTQSPDFTTJOH • 8IFOUIFEBUBTJ[FGJUTPOFUP NBDIJOFT

  38. 1Z4QBSL • CVJMEJO+BWBBOEIBT1ZUIPO*OUFSGBDF • DBOCFNPSFTDBMFPVUUIBODFMFSZBOE%BTL • 0SJHJOBMMZCVJMUUPSVOPOB)BEPPQDMVTUFS • GBTUBOEDPTUFGGJDJFOUQSPDFTTJOH •

    )BTHPPE8FC*OUFSGBDFGPSSFBMUJNFKPCNPOJUPSJOH • FBTZUPXSJUFDPNQSFY QSPHSBNXJUISJDIPQFSBUPST • NVMUJGVODUJPOBM • TUSFBN "1* • NBDIJOFMFBSOJOH"1* • DBOCFVTFJONBOBHFNFOUTFSWJDFJODMPVETFSWJDF
  39. 1Z4QBSL • CVJMEJO+BWBBOEIBT1ZUIPO*OUFSGBDF only with partial API

  40. 1Z4QBSL • DBOCFNPSFTDBMFPVUUIBODFMFSZBOE%BTL node number 1 4-5 thousands

  41. *OXIBUTJUVBUJPOTJT1Z4QBSL FGGFDUJWF  • 8IFOXFXBOUUPSVODPNQMFYUBTLTXJUIBMBSHFBNPVOU PGEBUB • 8IFOXFIBWF)BEPPQDMVTUFS

  42. 0WFSIFBEPGQBSBMMFMEJTUSJCVUFE QSPDFTTJOH •TFSJBMJ[FEFTFSJBMJ[F •UBTLTDIFEVMJOH •EBUBUSBOTGFS

  43. "NEBIM`TMBX • .BYJNVNFYQFDUFEJNQSPWFNFOUPGQBSBMMFMDPNQVUJOHJT MJNJUFECZUIFUJNFOFFEFEGPSUIFTFRVFOUJBMGSBDUJPOPG UIFQSPHSBN

  44. *U`TOPUBTJMWFSCVMMFU

  45. $PODMVTJPO • 8FDBOVTFNBDIJOFSFTPVSDFTFGGJDJFOUMZBOETQFFEVQ PVSQSPHSBNXJUIQBSBMMFMEJTUSJCVUFEQSPDFTTJOH • 5IFSFBSFTFWFSBMQBSBMMFMQSPDFTTJOHMJCSBSJFTBWBJMBCMFJO 1ZUIPO • *SFDPNNFOE •

    KPCMJC GPSHFOFSBMVTBHFPGQBSBMMFMJ[N JOPOFNBDIJOF • %BTL GPSQBSBMMFMJ[FQBOEBT%BUB'SBNF QSPHSBN • 1Z4QBSL GPSIVHFEBUBXIJDIDBOOPUIBOEMFJOPOFNBDIJOF
  46. %PObUCFBGSBJEUPVTF QBSBMMFMEJTUSJCVUFEQSPDFTTJOHNPSF

  47. 2VFTUJPO

  48. 28IBUJT UIFEJGGFSFODFPGCFMPX •$PODVSSFOUQSPDFTTJOH •1BSBMMFMQSPDFTTJOH

  49. l$PODVSSFOUQSPDFTTJOHzBOE l1BSBMMFM1SPDFTTJOHz $PODVSSFODZJTBCPVU EFBMJOHXJUI MPUTPG UIJOHTBUPODF 1BSBMMFMJTNJTBCPVU EPJOH MPUTPGUIJOHTBUPODF 

    3PC1JLFIUUQTUBMLTHPMBOHPSHXB[BTMJEF
  50. 8IFOBOEIPXTIPVMEXF VTFQBSBMMFMEJTUSJCVUFE BSDIJUFDUVSFJO1ZUIPO

  51. l$PODVSSFOUQSPDFTTJOHzBOE l1BSBMMFM1SPDFTTJOHz )FSFJT$PODVSSFOU )FSFJTQBSBMMFMBOEBMTPDPODVSSFOU

  52. $PODVSSFOUBOEQBSBMMFMQSPHSBNTDIFNF •$PODVSSFOUQSPHSBNTDIFNF $PODVSSFOU 1SPHSBN 1SPDFTT 1SPDFTT TDIFEVMFS $16 1SPDFTT 2VFVF

    1BSBMMFM 1SPHSBN 1SPDFTT 1SPDFTT $16 $16 •1BSBMMFMQSPHSBNTDIFNF
  53. %JTUSJCVUFEQSPDFTTJOHJO1ZUIPO *JOUSPEVDFUISFFGBNPVTMJCSBSJFTGPS EJTUSJCVUFEQSPDFTTJOHJO1ZUIPO •$FMFSZ •%BTL •1Z4QBSL

  54. MPI • It is a low-level API and faster than

    other libraries, but it is difficult to use MPI to create software that can be used at the production level • MPI is a low level API. MPI can calcrate faster than Python Libraries with proper integration • MPI doesnʼt have rich partition-tolerance functions like PySpark or other libraries • • PyTorch and ChainerMN use it internally for Distributed DeepLearning
  55. DPVMEO`UJOUSPEVDF • BTZODJP • DPODVSSFOUGVUVSF • "OPUIFSUIJSEQBSUZMJCSBSJFT