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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kohei Ota
December 08, 2019
Technology
8
2.1k
機械学習基盤の本番運用とその取り組み / ML platform in production
Kohei Ota
December 08, 2019
Tweet
Share
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.3k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
160
Cracking the KubeCon CfP
inductor
2
750
KubeCon Recap -Platform migration at Scale-
inductor
1
1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
560
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
29
6.5k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
930
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.3k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7k
Other Decks in Technology
See All in Technology
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
190
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
120
Amazon Bedrock AgentCore 認証・認可入門
hironobuiga
2
480
Werner Vogelsが14年間 問い続けてきたこと
yusukeshimizu
2
300
2026年はチャンキングを極める!
shibuiwilliam
8
1.8k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
170
無ければ作る! バイブコーディングで作ったものを一気に紹介
tatsuya1970
0
110
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
350
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
140
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
260
エンジニアとマネジメントの距離/Engineering and Management
ikuodanaka
3
700
KubeCon + CloudNativeCon NA ‘25 Recap, Extensibility: Gateway API / NRI
ladicle
0
170
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
77
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
36k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
110
Building Applications with DynamoDB
mza
96
6.9k
[SF Ruby Conf 2025] Rails X
palkan
0
740
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
260
Darren the Foodie - Storyboard
khoart
PRO
2
2.3k
Producing Creativity
orderedlist
PRO
348
40k
Why Our Code Smells
bkeepers
PRO
340
58k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
120
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
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