Distributed Processing in Python

Distributed Processing in Python

7f7abff13e7c5ad15bfa3a823313ef9d?s=128

Chie Hayashida

July 14, 2019
Tweet

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