Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機械学習基盤の本番運用とその取り組み / ML platform in production
Search
Kohei Ota
December 08, 2019
Technology
2.1k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
機械学習基盤の本番運用とその取り組み / ML platform in production
Kohei Ota
December 08, 2019
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.6k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
180
Cracking the KubeCon CfP
inductor
2
920
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
600
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
28
6.6k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
990
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7.7k
Other Decks in Technology
See All in Technology
AICoEでAIネイティブ組織への進化
yukiogawa
0
170
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
1
390
公式ドキュメントの歩き方etc
coco_se
0
100
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
380
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.4k
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
710
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
180
世界、断片、モデル。そして理解
ardbeg1958
1
110
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
550
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
630
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
270
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to Ace a Technical Interview
jacobian
281
24k
Designing for humans not robots
tammielis
254
26k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Transcript
ػցֶशج൫ͷຊ൪ӡ༻ͱ ͦͷऔΓΈ 1SFTFOUFECZ,PIFJ0UB !JOEVDUPS +VMZ5FDI'FTUB
ࣗݾհ w ଠాߤฏ !@JOEVDUPS@ !JOEVDUPS w %PDLFS.FFUVQ5PLZP0SHBOJ[FS w *OGSBTUSVDUVSF&OHJOFFS
.-0QT5FBN!;0;05FDIOPMPHJFT *OD
;0;0508/ͷը૾ݕࡧػೳʹΈΔ ,VCFSOFUFTΛͬͨػցֶशج൫ӡ༻ͷཪଆ $MPVE/BUJWF%BZT,BOTBJ $PQZSJHIU;0;05FDIOPMPHJFT *OD גࣜձࣾ;0;0ςΫϊϩδʔζ ։ൃ෦ .-0QTνʔϜ ଠా
ߤฏ
;0;0508/ͷը૾ݕࡧػೳʹΈΔ ,VCFSOFUFTΛͬͨػցֶशج൫ӡ༻ͷཪଆ $MPVE/BUJWF%BZT,BOTBJ $PQZSJHIU;0;05FDIOPMPHJFT *OD גࣜձࣾ;0;0ςΫϊϩδʔζ ։ൃ෦ .-0QTνʔϜ ଠా
ߤฏ ৄ͘͠4QFBLFSEFDLͷεϥΠυͰʂ
ࠓͷλʔήοτ w Πϯϑϥ%FW0QT43&తͳ͜ͱΛ͍ͬͯΔਓ w ػցֶशʹ͍ͭͯ͋·Γྑ͔͍ͬͯ͘ͳ͍ਓ શʹཧղ͍ͯ͠Δਓ w ಥવৼΒΕΔṖͷλεΫʹରԠͰ͖Δ͔Θ͔Βͳ͍ਓ
͋Δ͜Μͳ͜ͱΛݴΘΕΔͱ ߟ͑ͯΈ͍ͯͩ͘͞
ܦӦऀʮ͜Ε͔Β"*ͩʂʂʯ
"*ʁػցֶशʁͲ͏ҧ͏ͷʁ
ػցֶशͬͯͳʹʁʁ
ػցֶशʁʁ w σʔλΛೖྗɺ͋Δ͖݁ՌΛग़ྗͱͯ͠ w ෳͷσʔλ͔Βڞ௨ͷϧʔϧಛɺஅج४Λநग़ w ໌ࣔతʹϓϩάϥϜϩδοΫΛॻ͔ͣʹ݁ՌΛग़ͨ͢ΊͷΈ
ػցֶशʁʁ w σʔλΛೖྗɺ͋Δ͖݁ՌΛग़ྗͱͯ͠ w ෳͷσʔλ͔Βڞ௨ͷϧʔϧಛɺஅج४Λநग़ w ໌ࣔతʹϓϩάϥϜϩδοΫΛॻ͔ͣʹ݁ՌΛग़ͨ͢ΊͷΈ ϩδοΫͷநԽ
ͳͥػցֶश͕ٻΊΒΕΔͷ͔ w ϞόΠϧΠϯλʔωοτ͕ීٴ͖ͬͨ͠ࠓɺࣄͷঢ়گٸܹʹมΘΔ w ͦͷมԽΛϓϩάϥϜͰද͢ͷେม w *GGPSͰઃఆͨ͠ύϥϝʔλʔΛॻ͖͑Δ͚ͩͷվमΛՃ͑Δͷ ͍͠͠ɺޮՌଌఆେมʢ͍ΘΏΔzਓແೳzͱ͍͏ݺΕΔͭʣ w ͜Ε·Ͱͷ͔Β࣍ͷ݁ՌΛ༧ଌ͢Δࣄ͕Ͱ͖Δശ͕͋Ε
ຊ࣭తʹαʔϏεͷϩδοΫͰͳ͍ͣ
ͳͥػցֶश͕ٻΊΒΕΔͷ͔ w ϞόΠϧΠϯλʔωοτ͕ීٴ͖ͬͨ͠ࠓɺࣄͷঢ়گٸܹʹมΘΔ w ͦͷมԽΛϓϩάϥϜͰද͢ͷେม w *GGPSͰઃఆͨ͠ύϥϝʔλʔΛॻ͖͑Δ͚ͩͷվमΛՃ͑Δͷ ͍͠͠ɺޮՌଌఆେมʢ͍ΘΏΔzਓແೳzͱ͍͏ݺΕΔͭʣ w ͜Ε·Ͱͷ͔Β࣍ͷ݁ՌΛ༧ଌ͢Δࣄ͕Ͱ͖Δശ͕͋Ε
ຊ࣭తʹαʔϏεͷϩδοΫͰͳ͍ͣ ػցֶशʹΑͬͯಘΒΕͨϞσϧ ϒϥοΫϘοΫε Λ ೖΕସ͑Δ͚ͩͰΞϓϦέʔγϣϯ͕ੈͷதͷ χʔζʹରԠͰ͖ΔͷͰͳ͍͔ʂͱ͍͏ൃ
ػցֶशͷԠ༻ྫ w ݕࡧΤϯδϯͷϦίϝϯσʔγϣϯ w ؞ʹ͓͚ΔෆྑͳͲͷҟৗݕ w Իೝࣝɺը૾ೝࣝ w גՁ༧ଌ
ػցֶशͷԠ༻ྫ w ݕࡧΤϯδϯͷϦίϝϯσʔγϣϯ w ؞ʹ͓͚ΔෆྑͳͲͷҟৗݕ w Իೝࣝɺը૾ೝࣝ w גՁ༧ଌ ϦΞϧλΠϜͰมԽ͢Δͷ
ਓؒͷखΛհ͢Δͱେมͳͷʹରͯ͠ಛʹ༗ޮ
ػցֶशͷར༻Πϝʔδ
ػցֶशͷར༻Πϝʔδ Ϟσϧ
ػցֶशͷར༻Πϝʔδ ֶश ਪ ਪϞσϧ
ֶशͱਪ w ֶश w σʔλΛҰఆͷنଇ ΞϧΰϦζϜ ʹैͬͯϞσϧʹม w σʔλιʔε͕ॏཁͳͷͰɺʑೖΕସΘΔͷఆৗతʹֶश͢Δ w
ਪ w ϞσϧΛͬͯɺ͋Δσʔλ͕Ͳͷύλʔϯʹ࠷͍͔ۙΛஅ͢Δ w ਪʹ͏Ϟσϧͷσʔλ͕ॏཁ
ֶशͱਪ w ֶश w σʔλΛҰఆͷنଇ ΞϧΰϦζϜ ʹैͬͯϞσϧʹม w σʔλιʔε͕ॏཁͳͷͰɺʑೖΕସΘΔͷఆৗతʹֶश͢Δ w
ਪ w ϞσϧΛͬͯɺ͋Δσʔλ͕Ͳͷύλʔϯʹ࠷͍͔ۙΛஅ͢Δ w ਪʹ͏Ϟσϧͷσʔλ͕ॏཁ 8FCʹͳ͍ػցֶशج൫ͷϙΠϯτ Ϟσϧ͕ػցֶशʹ͓͚Δ಄ ϒϥοΫϘοΫε ϞσϧͷೖΕସ͑ͱɺֶशසͳͲͷఆ͕ٛॏཁ
Πϯϑϥج൫ͷ
ྫ͑͜ΜͳΞϓϦ͕͋ͬͨͱͯ͠ 8FC "QQ %#
ΞϓϦʹػցֶशΛͬͨ ػೳΛ૿͢͜ͱΛߟ͑ͯΈΔ
Πϝʔδ͜͏ 8FC "QQ %# ਪϞσϧ ਪ"1*ͷ αʔϏϯά
Πϝʔδ͜͏ 8FC "QQ %# ਪϞσϧ ਪ"1*ͷ αʔϏϯά ͜ΕͰಈ͘ʹಈ͚͘Ͳɾɾɾ
Πϝʔδ͜͏ 8FC "QQ %# ਪϞσϧ ਪ"1*ͷ αʔϏϯά Ϟσϧͷߋ৽Ͳ͏͢Δͷʁ ΞϓϦͷߋ৽ͱύΠϓϥΠϯ͚Δͷʁ Πϯϑϥઃܭ୭͕͢Δͷʁ
ػցֶशʹؔΘΔਓͨͪ ࣾൺ w ϦαʔνϟʔˠΞϧΰϦζϜͱϞσϧධՁΛ୲ w .-ΤϯδχΞ
ػցֶशʹؔΘΔਓͨͪ ࣾൺ w Ϧαʔνϟʔ w .-ΤϯδχΞˠϞσϧΛͬͨ"1*ΞϓϦͷϓϩτλΠϐϯάͳͲ
ػցֶशʹؔΘΔਓͨͪ ࣾൺ w Ϧαʔνϟʔ w .-ΤϯδχΞˠϞσϧΛͬͨ"1*ΞϓϦͷϓϩτλΠϐϯάͳͲ ࣗಈԽͲͬͪͷࣄʁ ΠϯϑϥઃܭͩΕ͕Δʁ ύϑΥʔϚϯενϡʔχϯάʁ
Two Big Problems Data Scientist Machine Learning Engineer vs
Ϟσϧ࡞ͱαʔϏϯάͷ ֞ࠜΛແͯ͘͠ ࣮ӡ༻ʹ͑͏Δج൫Λ࡞Γ͍ͨ
%FWY0QT
.-Y0QT
.-0QTνʔϜͷϛογϣϯ ࣾൺ w .-ΤϯδχΞݚڀऀ͕ػցֶशϞσϧͷ։ൃʹूதͰ͖ΔڥΛఏڙ͢Δ w ϓϩτλΠϓΛϓϩμΫγϣϯϨϕϧʹҾ্͖͛Δ ˠݚڀऀɺ.-ΤϯδχΞ͕ͨͪ࡞ͬͨͷΛ࣮ࡍʹαʔϏεΠϯ͠ӡ༻·Ͱߦ͏
.-0QTͰิ͑Δ͜ͱ w ݚڀऀιϑτΣΞΤϯδχΞϦϯάͷݟ͕ͳ͍ w +VQZUFS/PUFCPPL͚ͩ͋Ε͍͍ɻ%PDLFSΠϯϑϥΒͳ͍͜ͱଟ͍ w .-ΤϯδχΞϓϩτλΠϐϯά͕ಘҙͰܧଓతͳΞϓϦέʔγϣϯͷվળ ࣗಈԽͷλεΫઐ֎ͳ͜ͱଟ͍ w $*$%ઃܭɺֶशϫʔΫϑϩʔͷ࠷దԽͳͲ༏ઌ͕͍
.-0QTͰิ͑Δ͜ͱ w %FW0QTͰഓͬͨϊϋΛػցֶशʹద༻͍ͯ͘͠ w (16$16ΛͬͨϫʔΫϑϩʔΠϯϑϥઃܭͳͲɺͦͦΠϯϑϥͷ ͕ࣝཁٻ͞ΕΔ w ຊ൪ʹ͚ͨΞϓϦέʔγϣϯͷվળ w ίϯςφԽɺϘτϧωοΫͷվળͳͲ
࣮ྫΛோΊͯΈΔ
;0;05FDIOPMPHJFT *OD ΞʔΩςΫνϟશମ $MPVE-PBE #BMBODJOH $MPVE"SNPS ,VCFSOFUFT &OHJOF $MPVE
4UPSBHF $POUBJOFS 3FHJTUSZ $MPVE .FNPSZTUPSF %FWFMPQFS ը૾ετϨʔδ ϞσϧετϨʔδ ίϯςφΠϝʔδ Ωϟογϡ $MPVE $PNQPTFS ֶश ,VCFSOFUFT &OHJOF "//JOEFY Ϟσϧ 6TFS ֶश ਪ (16 $MPVE 'JMFTUPSF
None
.-0QTͷ୲ྖҬ ࣾൺ w Πϯϑϥͷߏཧ $*$%ύΠϓϥΠϯؚΉ w ΞϓϦέʔγϣϯͷ$*$%ίϯςφԽɺνϡʔχϯά w ֶशϫʔΫϑϩʔͷվળӡ༻
શ෦Ͱ͖ͳ͍ͱ͍͚ͳ͍ͷ͔ʁ
:FTBOEOP
νʔϜͷଟ༷ੑ w 43&ʹ͓͍ͯඞཁͱ͞ΕΔνʔϜͷଟ༷ੑ.-0QTͰॏཁ w ۀϓϩμΫτɺج൫ʹ͓͍ͯΘΕΔٕज़શͯแׅతʹཧղ͢Δ ͜ͱ͕ॏཁͳͷݴ͏·Ͱͳ͍ w ಘҙྖҬ͕ҧ͏ΤϯδχΞ͕ෳ͍Δ͜ͱʹΑͬͯνʔϜͱͯ͠ ΑΓେ͖ͳൣғΛΧόʔͰ͖Δ w
ҧ͏ࢹͷΤϯδχΞ͕͏·͘ಈ͍͍ͯ͘ʹɺݸʑͷνʔϜΛҙࣝͨ͠ ಈ͖༏लͳϦʔμʔͷଘࡏॏཁ
νʔϜͷଟ༷ੑ w 43&ʹ͓͍ͯඞཁͱ͞ΕΔνʔϜͷଟ༷ੑ.-0QTͰॏཁ w ۀϓϩμΫτɺج൫ʹ͓͍ͯΘΕΔٕज़શͯแׅతʹཧղ͢Δ ͜ͱ͕ॏཁͳͷݴ͏·Ͱͳ͍ w ಘҙྖҬ͕ҧ͏ΤϯδχΞ͕ෳ͍Δ͜ͱʹΑͬͯνʔϜͱͯ͠ ΑΓେ͖ͳൣғΛΧόʔͰ͖Δ w
ҧ͏ࢹͷΤϯδχΞ͕͏·͘ಈ͍͍ͯ͘ʹɺݸʑͷνʔϜΛҙࣝͨ͠ ಈ͖༏लͳϦʔμʔͷଘࡏॏཁ ɾνʔϜͷ౷ ɾνʔϜͷଟ༷ੑ ͜ΕΒཁૉͷཱ͕྆ॏཁ
͏গ࣮͠ࡍͷऔΈʹ͍ͭͯ ۷ΓԼ͛ͯΈ·͠ΐ͏
.-0QTͷ୲ྖҬ ࣾൺ w Πϯϑϥͷߏཧ $*$%ύΠϓϥΠϯؚΉ w ΞϓϦέʔγϣϯͷ$*$%ίϯςφԽɺνϡʔχϯά w ֶशϫʔΫϑϩʔͷվળӡ༻
8FC։ൃͱڞ௨෦͕େ͖͍λεΫ ػցֶशʹݻ༗ͷ෦͕େ͖͍λεΫ
ΞϓϦͷνϡʔχϯά w ϏδωεϩδοΫΛม͑ͳ͍ൣғͰਪ"1*ͷΛ্͛Δ w "1.֎ܗࢹͳͲΛ͔ͭͬͯఆৗࢹ͠ɺϘτϧωοΫΛݟ͚ͭΔ w ϞσϧͰѻ͏ϕΫτϧͷύϥϝʔλʔσʔλͷྔʹΑͬͯɺ$16 (16ͲͪΒΛ͏͖͔͕ܾ·Δ ෛՙࢼݧͳͲͰݕূ͢Δ
w (16ศར͕ͩɺίϯςΩετεΠονʹऑ͍ͷͰΞϓϦέʔγϣϯͰ ۃྗ͍ͨ͘ͳ͍
ΞϓϦͷνϡʔχϯά w ϏδωεϩδοΫΛม͑ͳ͍ൣғͰਪ"1*ͷΛ্͛Δ w "1.֎ܗࢹͳͲΛ͔ͭͬͯఆৗࢹ͠ɺϘτϧωοΫΛݟ͚ͭΔ w ϞσϧͰѻ͏ϕΫτϧͷύϥϝʔλʔσʔλͷྔʹΑͬͯɺ$16 (16ͲͪΒΛ͏͖͔͕ܾ·Δ ෛՙࢼݧͳͲͰݕূ͢Δ
w (16ศར͕ͩɺίϯςΩετεΠονʹऑ͍ͷͰΞϓϦέʔγϣϯͰ ۃྗ͍ͨ͘ͳ͍ *46$0/ͨͪʹେͳ͜ͱΛڭ͑ͯ͘Εͨ
ֶशϫʔΫϑϩʔͷӡ༻ͱվળ w ݚڀऀ.-ΤϯδχΞ͕ϞσϧΛ࡞͞ΕΔҰ࿈ͷྲྀΕΛ ϑϩʔʹམͱ͠ࠐΈɺࣗಈԽ͢Δ w ຖɺຖ࣌ؒใ͕มΘΔΑ͏ͳσʔλʹରͯ͠ܧଓͯ͠ՁΛ ఏڙ͢ΔͨΊʹඞཁෆՄܽ w ฒྻ࣮ߦੑ͕Ͳ͜·ͰߴΊΒΕΔ͔ w
ΞϧΰϦζϜɺ͍ͬͯΔख๏ʹର͢Δཧղ͕ॏཁ
;0;05FDIOPMPHJFT *OD ը૾ݕࡧʹΘΕΔҰൠతͳΞϧΰϦζϜ ମݕग़ΞϧΰϦζϜ • ը૾͔Βମͷݕग़ͱΫϥεྨΛ͢Δ ಛྔநग़ΞϧΰϦζϜ • ը૾͔Βଟ࣍ݩϕΫτϧͷಛྔΛநग़͢Δ
ۙࣅ࠶࠷ۙ୳ࡧ "// • ߴʹଟ࣍ݩͷϕΫτϧΛ୳ࡧ͢Δ IUUQTHJUIVCDPNTQPUJGZBOOPZ $// 'FBUVSF
.-ϓϩμΫγϣϯ·ͰͷྲྀΕ ਪϞσϧ࡞ͬͨΑ ϞσϧσϓϩΠͯ͠ ਪ"1*࡞ΔΑʂ
.-ϓϩμΫγϣϯ·ͰͷྲྀΕ ਪϞσϧ࡞ͬͨΑ ϞσϧσϓϩΠͯ͠ ਪ"1*࡞ΔΑʂ ϫʔΫϑϩʔͰ ਪϞσϧͷੜΛࣗಈԽ ΞϓϦέʔγϣϯͷ $*$%ύΠϓϥΠϯ ਪϞσϧͷ ࣗಈσϓϩΠ
.-ϓϩμΫγϣϯ·ͰͷྲྀΕ ਪϞσϧ࡞ͬͨΑ ϞσϧσϓϩΠͯ͠ ਪ"1*࡞ΔΑʂ ϫʔΫϑϩʔͰ ਪϞσϧͷੜΛࣗಈԽ ΞϓϦέʔγϣϯͷ $*$%ύΠϓϥΠϯ ਪϞσϧͷ ࣗಈσϓϩΠ
࣮ɺ͍ͬͯΔ͜ͱͷຊ࣭ ࠓ·Ͱͷ43&%FW0QTͷख๏ͱͦΜͳʹҧ͍͕ͳ͍
վΊͯ.-0QTͷ ϛογϣϯʹ͍ͭͯৼΓฦΔ
.-0QTνʔϜͷϛογϣϯ ࣾൺ w .-ΤϯδχΞݚڀऀ͕ػցֶशϞσϧͷ։ൃʹूதͰ͖ΔڥΛఏڙ͢Δ w ϓϩτλΠϓΛϓϩμΫγϣϯϨϕϧʹҾ্͖͛Δ ˠݚڀऀɺ.-ΤϯδχΞ͕ͨͪ࡞ͬͨͷΛ࣮ࡍʹαʔϏεΠϯ͠ӡ༻·Ͱߦ͏
.-0QTνʔϜͷϛογϣϯ ࣾൺ w .-ΤϯδχΞݚڀऀ͕ػցֶशϞσϧͷ։ൃʹूதͰ͖ΔڥΛఏڙ͢Δ w ϓϩτλΠϓΛϓϩμΫγϣϯϨϕϧʹҾ্͖͛Δ ˠݚڀऀɺ.-ΤϯδχΞ͕ͨͪ࡞ͬͨͷΛ࣮ࡍʹαʔϏεΠϯ͠ӡ༻·Ͱߦ͏ Ϟσϧ"1*ͷʑͷ։ൃऀ ମݧͷ্ 43&తͳΞϓϩʔν
·ͱΊ w %FW0QT։ൃͱӡ༻ͷ֞ࠜΛແ͘͠ɺϏδωεʹߩݙ͢ΔεϐʔυײΛߴΊΔͨΊ ͷऔΓΈɺจԽվֵͷϚΠϯυηοτͩͬͨ w 43&%FW0QTΛؚΉɺαʔϏεͷఏڙՁΛߴΊΔ࣮ફతͳΞϓϩʔν w .-0QT྆ऀͷ࣋ͭಛੑΛػցֶशͷεϐʔυײ৴པੑΛߴΊΔͨΊͷऔΓΈ
5IBOLZPVGPSZPVSBUUFOUJPO