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

機械学習を使ったサービスのプロダクションコードを書く話 /ml-production

機械学習を使ったサービスのプロダクションコードを書く話 /ml-production

第8回 Machine Learning 15minutes! 2017/01/21

Tweet

More Decks by Yuichiro Tachibana (Tsuchiya)

Other Decks in Programming

Transcript

  1. I am… ౔԰༞Ұ࿠ yuichiroTCY • ~2016/03 2015೥౓IPAະ౿ (εʔύʔΫϦΤʔλ) • 2016/07~

    PKSHA Technology • BEDORE։ൃνʔϜ ର࿩Τϯδϯ୲౰ ػցֶश / Web / ૊ΈࠐΈ etc…
  2. What’s BEDORE? νϟοτʹΑΔAIҰ࣍Ԡ౴Λ࣮ࢪ
 ΦϖϨʔλʔͱ૊Έ߹Θͤɺ
 ߴ඼࣭௿ίετରԠ Ի੠ղੳπʔϧͱ࿈ܞͨ͠
 ΦϖϨʔλʔͷφϨοδαϙʔτ Web্ͷFAQϖʔδʹ
 AIΤʔδΣϯτΛઃஔ͠ɺ
 ࣗݾղܾ཰޲্

    ೔ຊޠʹಛԽͨ͠ର࿩ΤϯδϯͰ͢ɻ νϟοτ΍ΦϖϨʔλʔαϙʔτͷྖҬͰ͝׆༻͍͍͍ͨͩͯ·͢ɻ େखϝσΟΞاۀ༷ɺେखECاۀ༷ͳͲɺ෯޿͘ಋೖ௖͍͓ͯΓ·͢
  3. ࠓ೔࿩͢͜ͱ ιϑτ΢ΣΞ ΤϯδχΞ ΞϧΰϦζϜ ΤϯδχΞ • ػցֶशαʔϏεͷϓϩμΫγϣϯߏ੒ͷҰྫ ✴ Πϯϑϥ ✴

    γεςϜઃܭ • ΞϧΰϦζϜ / ιϑτ΢ΣΞΤϯδχΞͷք໘Λ
 ͍͔ʹͯ͠ઃܭ͢Δ͔ ✴ ιʔείʔυ ✴ ςετ ✴ ૊৫ ίίʂ
  4. BEDOREͷର࿩γεςϜུ֓ #&%03&TZTUFN API Gateway Web Interface Reply server Database ΞΧ΢ϯτ

    Φʔφʔ \lSFRVFTUzl#&%03&ͬͯͳʹʁz^ ˣ \lSFTQPOTFzl͋ͳͨͷ͓ख఻͍Λ
 ͍ͤͯͨͩ͘͞ձ࿩ΤϯδϯͰ͢ʂz^ ֎෦API
  5. ΞΧ΢ϯτ Φʔφʔ ֶशαʔό͸෼͚Δ #&%03&TZTUFN API Gateway Web Interface Database Learning

    servers Invoke Save models Storage Load models Training Prediction ୹࣌ؒɾߴෛՙ ৗ࣌ɾ௿ʙதෛՙ ฒྻ࣮ߦ ଱ো֐ੑ Reply server ֎෦API
  6. BEDOREࣜɾػցֶशσβΠϯύλʔϯʢҊʣ .PEFM .FUIPET w QSFQSPDFTT  w USBJO  w

    QSFEJDU  w TBWF  w SFTUPSF 1BSBNT ྫ  w IJEEFO@MBZFST w ESPQPVU FUDʜ 5SBJOFS 1BSBNT ྫ  w O@TUFQT w PQUJNJ[FS FUDʜ .FUIPET w USBJO %BUB1SPWJEFS .FUIPET w HFU@USBJOJOH@EBUB ʢྫɿNeural NetworksΛ࢖ͬͨϞσϧͷ৔߹ʣ
  7. ੹຿Λ෼཭͢Δ • Model • train, predict, preprocess, save, restore
 ͱ͍͏ΠϯλϑΣʔε͚ͩఆΊΔ

    • த਎͸ΞϧΰϦζϜΤϯδχΞ୲౰ • DataProvider • ֶशσʔλΛఏڙ͢Δget_training_dataͱ͍͏ΠϯλϑΣʔε͚ͩ ఆΊΔ • DB͔ΒಡΜͰ΋APIୟ͍ͯ΋CSVಡΜͰ΋OKɻ࢖͏ଆ͸ؔ஌͠ͳ͍ • Trainer • DataProvider͔ΒֶशσʔλΛऔಘͯ͠ɺ
 ֶशύϥϝʔλͱҰॹʹModelΫϥεͷtrain()ʹ౉͚ͩ͢
  8. Training .PEFM .FUIPET w QSFQSPDFTT  w USBJO  w

    QSFEJDU  w TBWF  w SFTUPSF 1BSBNT ྫ  w IJEEFO@MBZFST w ESPQPVU FUDʜ 5SBJOFS 1BSBNT ྫ  w O@TUFQT w PQUJNJ[FS FUDʜ .FUIPET w USBJO data_provider = DataProvider() trainer = Trainer(data_provider, train_params) model = Model(model_params) trainer.train(model) model.save(‘path/to/save’) %BUB1SPWJEFS .FUIPET w HFU@USBJOJOH@EBUB w %BUB1SPWJEFSHFU@USBJOJOH@EBUB ͔Β
 ֶशσʔλΛऔಘ͠ɺ w .PEFMUSBJO Λݺͼग़ͯ͠౉͢ɻ w ड͚औͬͨσʔλΛ
 QSFQSPDFTT Ͱલॲཧ͠ɺ w ֶशΛߦ͏
  9. Prediction .PEFM .FUIPET w QSFQSPDFTT  w USBJO  w

    QSFEJDU  w TBWF  w SFTUPSF 1BSBNT ྫ  w IJEEFO@MBZFST w ESPQPVU FUDʜ 5SBJOFS 1BSBNT ྫ  w O@TUFQT w PQUJNJ[FS FUDʜ .FUIPET w USBJO model = Model.restore(‘path/to/load’) result = model.predict(‘Hello, BEDORE!’) %BUB1SPWJEFS .FUIPET w HFU@USBJOJOH@EBUB w ड͚औͬͨσʔλΛ
 QSFQSPDFTT Ͱલॲཧ͠ɺ w ࣝผΛߦ͏
  10. ModelͷՄൖੑ .PEFM 1BSBNT ྫ  w IJEEFO@MBZFST<b `> w ESPQPVU

    FUDʜ 5SBJOFENPEFM w /FUXPSLQBSBNFUFST FUDʜ save() .PEFM 1BSBNT ྫ  w IJEEFO@MBZFST<b `> w ESPQPVU FUDʜ 5SBJOFENPEFM w /FUXPSLQBSBNFUFST FUDʜ restore()
  11. ModelͷՄൖੑ .PEFM 1BSBNT ྫ  w IJEEFO@MBZFST<b `> w ESPQPVU

    FUDʜ 5SBJOFENPEFM w /FUXPSLQBSBNFUFST FUDʜ save() .PEFM 1BSBNT ྫ  w IJEEFO@MBZFST<b `> w ESPQPVU FUDʜ 5SBJOFENPEFM w /FUXPSLQBSBNFUFST FUDʜ restore() TBWF SFTUPSF  w .PEFMΫϥε͕࣋ͭ͋ΒΏΔύϥϝʔλ
 ʢϋΠύʔύϥϝʔλɾֶशࡁΈϞσϧɾલॲཧ༻ࣙॻͳͲʣΛ
 ̍σΟϨΫτϦʹύοΫˍϦετΞ w 1JDLMFͳͲͷγϦΞϥΠβ΍
 ϥΠϒϥϦ 5FOTPS'MPXͳͲ ͷTBWFSFTUPSFΛ׆༻
  12. BEDOREγεςϜʹ͓͚ΔModelϑΝΠϧͷऔΓճ͠ #&%03&TZTUFN API Gateway Web Interface Database Learning servers Invoke

    Save models Storage Load models ֶश͸ઐ༻αʔόͰߦ͍ɺ
 ֶशࡁϞσϧ ϑΥϧμݸʂ Λ
 4UPSBHFʹอଘɺ 3FQMZαʔόʹϩʔυ͢Δɻ w ෛՙͷେֶ͖͍शॲཧ
 ʹઐ༻ͷߴՐྗΠϯελϯε
 ɹΛεϙοτతʹ࢖༻ w աڈͷϞσϧ͸શͯอଘ͞ΕΔ
 ʹϩʔϧόοΫՄೳ Reply server
  13. ࣮ݧ΋ָʹ .PEFM .FUIPET w QSFQSPDFTT  w USBJO  w

    QSFEJDU  w TBWF  w SFTUPSF 1BSBNT ྫ  w IJEEFO@MBZFST w ESPQPVU FUDʜ 5SBJOFS 1BSBNT ྫ  w O@TUFQT w PQUJNJ[FS FUDʜ .FUIPET w USBJO  w FWBM %BUB1SPWJEFS .FUIPET w HFU@USBJOJOH@EBUB 1. DataProvider.get_training_data()͔ΒಘΒΕͨσʔλΛtrain / testʹ෼͚Δ 2. Model.train()Ͱֶश͢Δ 3. Model.predict()Ͱςετ͢Δ
  14. ࣮ݧ΋ϓϩμΫγϣϯͷֶशͱಉ༷ͷॲཧɾΠϯϑϥͰ #&%03&TZTUFN Web Interface Database Experiment servers Invoke Save models

    Storage ࣮ݧ΋ֶशαʔόͱಉ༷ʹ
 ΦϯσϚϯυΠϯελϯεͰ w σʔλಡΈࠐΈॲཧ౳͸
 ֶशͱಉ͡΋ͷΛར༻
 ʹϩδοΫ΍ύϥϝʔλͷ
 ɹมߋʹઐ೦
 ʹσʔλ͸ຊ൪ͱಉ͡΋ͷ Reply server
  15. .PEFM Model mixins ػցֶशͷຊ࣭Ͱ͸ͳ͍͕ศརͳػೳ͸
 Mixinͱͯࠩ͠͠ࠐΊΔΑ͏ʹ͓ͯ͘͠ .JYJO .FUIPET w QSFQSPDFTT 

    w USBJO  w QSFEJDU  w TBWF  w SFTUPSF 1BSBNT w IJEEFO@MBZFST w ESPQPVU FUDʜ .JYJO .JYJO
  16. Model mixins • Label Transformer • ೚ҙͷ؅ཧIDΛ࿈൪ͷIntegerʹม׵ • Cache Loader

    • restore() ʹΩϟογϡػೳΛ෇͚Δ Mixinͱͯ͠༻ҙ͓ͯ͘͠ͱศརͩͬͨػೳͷྫ
  17. ModelͷΧϓηϧԽ • train, predict, save, restore (, preprocess) ͕
 ࢖͑Ε͹ྑ͍

    • ΠϯλϑΣʔε෦෼͸
 ιϑτ΢ΣΞ / ΞϧΰϦζϜΤϯδχΞͷ
 ڠۀ͕ඞཁ͔΋
  18. Ξ ϧ ΰ Ϧ ζ Ϝ Τ ϯ δ χ

    Ξ ื ू த ͝ڵຯ͕͋Δํ͸ࢲ΁ɺ·ͨ͸Wantedly͔Β͝࿈བྷ͍ͩ͘͞