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
なめらかなシステムの実現に向けて/coherently-fittable-system
Search
monochromegane
July 28, 2020
Technology
0
580
なめらかなシステムの実現に向けて/coherently-fittable-system
GMO Developers Day 2020
https://www.gmo.jp/developersday/
monochromegane
July 28, 2020
Tweet
Share
More Decks by monochromegane
See All by monochromegane
ベクトル検索システムの気持ち
monochromegane
33
11k
Go言語での実装を通して学ぶ、高速なベクトル検索を支えるクラスタリング技術/fukuokago-kmeans
monochromegane
1
170
Go言語でターミナルフレンドリーなAIコマンド、afaを作った/fukuokago20_afa
monochromegane
2
240
多様かつ継続的に変化する環境に適応する情報システム/thesis-defense-presentation
monochromegane
1
880
Online Nonstationary and Nonlinear Bandits with Recursive Weighted Gaussian Process
monochromegane
0
530
AIを前提とした体験の実現に向けて/toward_ai_based_experiences
monochromegane
2
950
Go言語でMac GPUプログラミング
monochromegane
1
600
Contextual and Nonstationary Multi-armed Bandits Using the Linear Gaussian State Space Model for the Meta-Recommender System
monochromegane
1
1k
迅速な学習機構を用いて逐次適応性を損なうことなく非線形性を扱う文脈付き多腕バンディット手法/extreme_neural_linear_bandits
monochromegane
0
2.2k
Other Decks in Technology
See All in Technology
AIエージェントデザインパターンの選び方
almondo_event
0
110
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
1
7.1k
OSMnx Galleryの紹介
mopinfish
0
130
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
130
AIのための オンボーディングドキュメントを整備する - hirotea
hirotea
9
2k
AIの電力問題を概観する
rmaruy
1
190
ローカル環境でAIを動かそう!
falken
PRO
0
110
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
11
1.8k
それでもぼくらは貢献をつづけるのだ(たぶん) @FOSS4GLT会#002
furukawayasuto
1
250
Data Hubグループ 紹介資料
sansan33
PRO
0
1.7k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
730
オープンソースのハードウェアのコンテストに参加している話
iotengineer22
0
290
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
It's Worth the Effort
3n
184
28k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Become a Pro
speakerdeck
PRO
28
5.3k
KATA
mclloyd
29
14k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
The Cost Of JavaScript in 2023
addyosmani
49
7.9k
Docker and Python
trallard
44
3.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
How STYLIGHT went responsive
nonsquared
100
5.6k
Transcript
ࡾ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2020.07.28 GMO
Developers Day ͳΊΒ͔ͳγεςϜͷ ࣮ݱʹ͚ͯ
1SJODJQBMFOHJOFFS :VTVLF.*:",&!NPOPDISPNFHBOF 1FQBCP3%*OTUJUVUF (.01FQBCP *OD IUUQTCMPHNPOPDISPNFHBOFDPN
1. ͡Ίʹ 2. ͳΊΒ͔ͳγεςϜ 3. ͳΊΒ͔ͳγεςϜͷ࣮ݱʹ͚ͯ 4. ·ͱΊ 3 ࣍
1. ͡Ίʹ
5 ϖύϘݚڀॴ(ུশʮϖύݚʯ)ɺࣄۀΛࠩผԽ Ͱ͖Δٕज़Λ࡞Γग़ͨ͢ΊʹʮͳΊΒ͔ͳγες Ϝʯͱ͍͏ίϯηϓτͷԼͰݚڀ։ൃʹऔΓΉ ৫Ͱ͢ɻ ❝ ϖύϘݚڀॴʹ͍ͭͯ http://rand.pepabo.com/
6 ΞΧσϛοΫͳਫ४ʹ͓͚Δ৽نੑɾ༗ޮੑɾ৴ པੑΛٻ͢ΔݚڀΛߦ͏ͱͱʹɺݚڀ։ൃ͠ ٕͨज़Λ࣮ࡍͷγεςϜͱ࣮ͯ͠ɾఏڙ͢Δ͜ ͱΛ௨ͯ͠ɺࣄۀͷʹߩݙ͠·͢ɻ ❝ ϖύϘݚڀॴʹ͍ͭͯ http://rand.pepabo.com/
7 ϖύݚͱαʔϏεͷؔ ࣄۀΛࠩผԽ͢ΔͨΊʹɺݚڀॴͱαʔϏεͷ࿈ܞ͕ॏཁ ݚڀ ։ൃ ӡ༻ αʔϏεͷ՝ͷڞ༗ ݚڀʹΑΔ՝ղܾ ݚڀՌಋೖ࣌ͷ αʔϏεͱͷ࿈ܞ
ݚڀ։ൃ݁ՌΛଈ࣌αʔϏεʹಋೖ͢ΔΈͱɺಋೖޙͷϑΟʔυόοΫʹΑΔαΠΫϧͷߴ ԽʹΑͬͯɺݚڀ։ൃͷߴԽͱࣄۀͷࠩผԽʹͭͳ͛Δ ࣄۀ෦
2. ͳΊΒ͔ͳγεςϜ
9 ϖύϘݚڀॴ(ུশʮϖύݚʯ)ɺࣄۀΛࠩผԽ Ͱ͖Δٕज़Λ࡞Γग़ͨ͢ΊʹʮͳΊΒ͔ͳγες Ϝʯͱ͍͏ίϯηϓτͷԼͰݚڀ։ൃʹऔΓΉ ৫Ͱ͢ɻ ❝ ϖύϘݚڀॴʹ͍ͭͯ http://rand.pepabo.com/
• զʑ͕ৗͰ৮ΕΔγεςϜɺར༻ӡ༻ʹ͓͚Δ༷ʑͳোนʢΰπΰπʣ ʹຬͪ͋;Ε͍ͯΔɻ • → ྫʣར༻ऀͷ໌ࣔతͳࢦࣔɺӡ༻ऀͷஅߋ৽ͷհࡏ 10 എܠ • ͜ΕΒͷোนΛऔΓআ͖ɺར༻ӡ༻ͷշద͞ͷ্ʹͭͳ͛ΔͨΊʹɺར༻
ऀͷίϯςΩετʹج͖ͮ࠷దʹৼΔ͏ʮͳΊΒ͔ͳγεςϜʯΛ࣮ݱ͢ Δɻ
• ʮͳΊΒ͔ͳγεςϜʯͱɺใγεςϜͷ͜ͱΛ͍͏ͷΈͳΒͣɺޓ͍ʹ ӨڹΛٴ΅͠߹͏ܧଓతͳؔʹ͋Δར༻ऀʢϢʔβʔ͓Αͼ։ൃӡ༻ऀʣͱ ใγεςϜͱ͔ΒͳΔ૯ମͱͯ͠ͷγεςϜ 11 ͳΊΒ͔ͳγεςϜ <>܀ྛ݈ଠ ࡾ༔հ দຊ྄հ ͳΊΒ͔ͳγεςϜΛࢦͯ͠
ϚϧνϝσΟΞɺࢄɺڠௐͱϞόΠϧʢ%*$0.0ʣγϯϙδϜ # +VM < ><> < >υϛχΫɾνΣϯ(SBQIJDTGPS'VOEBNFOUBM*OGPSNBUJDTΛվมͯ͠࡞
1. ར༻ऀͱใγεςϜͱ͕ܧଓతͳؔΛऔΓ࣋ͭաఔʹ͓͍ͯɺར༻ऀͦ ΕͧΕʹݻ༗ͷίϯςΩετΛݟग़ͨ͠Γɺ৽ͨͳίϯςΩετΛग़ͨ͠ ΓͰ͖Δ͜ͱ 2. ཁ݅1.Λɺར༻ऀʹΑΔ໌ࣔతͳૢ࡞Λ՝͢͜ͱͳ࣮͘ݱͰ͖Δ͜ͱ 3. ཁ݅1.͓Αͼ2.ʹΑͬͯಘΒΕͨίϯςΩετʹج͖ͮɺใγεςϜ͕ར ༻ऀʹରͯ͠࠷దͳαʔϏεΛࣗಈతʹఏڙͰ͖Δ͜ͱ 12
ͳΊΒ͔ͳγεςϜͷཁ݅ • ࣗಈ͔ͭܧଓతʹར༻ऀͷঢ়گΛѲ͠ɺదԠతʹৼΔ͏ใγεςϜ
• ͳΊΒ͔ͳγεςϜΛ࣮ݱ͢ΔͨΊɺ༷ʑͳαʔϏεɺϨΠϠʹ͓͍ͯҎԼͷ ςʔϚͷͱɺݚڀ։ൃΛਐΊ͍ͯΔ[*] • FastContainer: ԠతͰঢ়ଶมԽͷૉૣ͍γεςϜج൫ٕज़ • ΦʔτεέʔϦϯά: ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕ੍ޚܥ •
ͳΊΒ͔ͳϚονϯά: จ຺ʹԠͨ͡ਪનख๏ͷ࠷దԽ • ߦಈݕ: ଟ໘తͳಛྔʹجͮ͘ਫ਼៛ͳߦಈੳ • ͳΊΒ͔ͳηΩϡϦςΟ: ಁաతͳηΩϡϦςΟ্Λ࣮ݱ͢Δ։ൃख๏ 13 ͳΊΒ͔ͳγεςϜʹ͚ͯ < >ϖύϘݚڀॴݚڀ։ൃՌIUUQTSBOEQFQBCPDPNBSDIJWF
3. ͳΊΒ͔ͳγεςϜͷ࣮ݱʹ͚ͯ
ݚڀίϯηϓτ - ใγεςϜͷࣗదԠ -
• ଟ༷͔ͭܧଓతʹมԽ͢ΔڥͷதͰɺใγεςϜ͕ܧଓతʹػೳ͢Δʹ ɺͦͷߏϩδοΫΛߋ৽͠มԽʹै͢Δඞཁ͕͋Δ • → ྫʣใγεςϜͷෛՙঢ়گɺར༻ऀͷߦಈͷมԽ • ͜Ε·Ͱɺ͜ͷैɺӡ༻ҡ࣋ۀͱͯ͠ӡ༻ऀ͕୲͖ͬͯͨ 16 ใγεςϜͱڥมԽ
• ଟ༷͔ͭܧଓతʹมԽ͢ΔڥͷதͰɺใγεςϜ͕ܧଓతʹػೳ͢Δʹ ɺͦͷߏϩδοΫΛߋ৽͠มԽʹै͢Δඞཁ͕͋Δ • → ྫʣใγεςϜͷෛՙঢ়گɺར༻ऀͷߦಈͷมԽ • ͜Ε·Ͱɺ͜ͷैɺӡ༻ҡ࣋ۀͱͯ͠ӡ༻ऀ͕୲͖ͬͯͨ 17 ใγεςϜͱڥมԽ
• ਓखʹΑΔڥͷมԽݕใγεςϜͷߋ৽ɺैͷ࣌ؒࠩΛ͏ • ݁Ռͱͯ͠ɺ҆ఆੑར༻ऀͷຬͷԼɺӡ༻ऀͷෛ୲ͷ૿ՃΛট͘
• ैདྷͷӡ༻ҡ࣋ͷऔΓΈͰɺใγεςϜΛڥͷมԽʹରԠͤ͞Δͨ ΊɺਓʹΑΔܦݧଇஅͱ෦తͳࣗಈԽʹཹ·͍ͬͯΔ • → ྫʣܦݧଇʹΑΔᮢઃఆɺԽͨ͠ར༻ऀͷߦಈୡʹΑΔஅ 18 ڥมԽʹࣗΒదԠ͢ΔใγεςϜʹ͚ͯ • ਓʹΑΔஅߋ৽ͷఔΛࣗಈԽ͠ɺใγεςϜࣗମ͕ڥมԽΛଊ͑ม
Խʹै͢ΔదԠతͳΈͷݚڀ • ͳΒͼʹ࣮ӡ༻ͷద༻ ݚڀίϯηϓτ
ΦʔτεέʔϦϯάख๏
• ใγεςϜͷӡ༻ʹ͓͍ͯɺॲཧੑೳΛอͪͭͭඞཁ࠷খݶͷαʔόΛ༻͍ Δ͜ͱͰӡ༻ίετΛ੍ޚ͢Δ͜ͱॏཁ • มಈ͢Δαʔόधཁʹै͢ΔͨΊΦʔτεέʔϦϯάػೳΛಋೖ 20 എܠ • ॲཧੑೳΛอͭඞཁ࠷খݶͷαʔόܦݧͱಓͳνϡʔχϯάͰݸผʹ ٻΊΔ͕ɺใγεςϜͷมߋཧରͷ૿Ճʹै͍ࠔʹͳΔ
• ·ͨɺͷࢉग़ʹΦʔτεέʔϦϯάͷ࣮ߦ࣌ͷ࣌ؒࠩͷߟྀඞཁ ӡ༻্ͷ՝
• ܧଓతʹมߋ͞Ε͏ΔෳͷใγεςϜʹରͯ͠ɺΕߟྀͨ͠Φʔτε έʔϦϯάͷ࠷దͳ݅Λܧଓͯ͠ٻΊΔ͜ͱ͕ӡ༻ͷෛ୲ • ใγεςϜΛߏ͢ΔαʔόͷॲཧੑೳΛࣗಈͰѲ͠ɺใγεςϜͷॲ ཧੑೳΛอͭඞཁ࠷খݶ͔ͭΕΛߟྀͨ͠αʔόΛࢉग़͍ͨ͠ • αʔόͷॲཧੑೳΛ࣮ߦ࣌ʹࣗಈ͔ͭܧଓతʹਪఆ͠ɺΦʔτεέʔϦϯάͷ Εߟྀͨ͠࠷దͳαʔόΛࢉग़͢Δ੍ޚܥ 21
ݚڀͷతͱఏҊͷࠎࢠ
• ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ[2] 22 ఏҊख๏ (Kaburaya AutoScaler) <>ࡾ༔հ ܀ྛ݈ଠ ,BCVSBZB"VUP4DBMFSଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ Πϯλʔωο
τͱӡ༻ٕज़γϯϙδϜจू QQ /PW
• ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ • M: αʔόॲཧੑೳΛɺ୯Ґ࣌ؒ͋ͨΓͷॲཧͷ্ݶ͔ΒٻΊΔ • D: ༧ΊఆΊͨΕظؒʹର͠ɺݱࡏͷཁٻॲཧͱαʔόॲཧੑೳ͔Βෆ ͢Δͱߟ͑ΒΕΔະॲཧཁٻΛٻΊΔ •
F: ݱࡏͷॲཧཁٻʹະॲཧཁٻΛՃ͑ɺαʔόॲཧੑೳ͔Βඞཁͳ αʔόΛࢉग़ 23 ఏҊख๏ (Kaburaya AutoScaler)
24 ఏҊख๏ͷධՁʢγϛϡϨʔγϣϯʣ αʔόੑೳʢॲཧ্ݶʣͷਪఆධՁ ෛՙ࣌Ұ࣌తʹαʔό͋ͨΓͷෛՙ͕ߴ·Δෛ ՙ૿Ճ࣌Ͱ҆ఆͯ͠ਪఆʢ࣮ઢʣɻ αʔόͷैੑධՁ ੨ઢͷཧαʔόʹैɻΕΛߟྀ͠ɺఆ͞ ΕΔະॲཧͷཁٻΛॲཧՄೳͳαʔόΛೖɻ ະॲཧཁٻͷղফ݁ՌͷධՁ ΕʹΑΓੵ࣮ͨ͠ઢͷະॲཧཁٻΛଈ࣌ղফɻ
ഁઢΕରࡦΛ͠ͳ͍߹ͷਪҠɻ
ਪનγεςϜ
26 എܠ • ใγεςϜʹ͓͚ΔใաଟΛղܾ͢ΔɺਪનγεςϜͷಋೖ • → ͳΜΒ͔ͷํࡦʢ= ਪનख๏ʣʹج͖ͮଟͷબࢶ͔Βར༻ऀ͕ڵຯ Λ࣋ͭͷΛఏҊ͢ΔγεςϜ •
ӡ༻ऀʹͱͬͯɺޮՌతͳʮਪનख๏ʯͷબ͕ॏཁ • ޮՌతͳਪનख๏ঢ়گʹΑͬͯҟͳΔ • ͔͠͠ͳ͕Βɺ࣮ڥͰͷܧଓతͳਪનख๏ͷධՁʹػձଛࣦ͕͏ ӡ༻্ͷ՝
• ਪનख๏ͷ༏ྼଟ͘ͷཁҼ͔ΒͳΔঢ়گʢ=จ຺ʣʹΑͬͯࠨӈ͞ΕΔ • ޮՌతͳਪનख๏Λػձଛࣦ͕ͳ͍Α͏ʹจ຺ʹԠ͍͚͍ͯͨ͡ • ࣄલʹఆΊͨจ຺͝ͱʹਪનख๏ͷબΛࣗಈ͔ͭܧଓతʹ࠷దԽ͢Δ ϝλਪનγεςϜ • → ࠷ળͳਪનख๏ͷબΛଟόϯσΟοτͱΈͳͯ͠ղ͘
27 ݚڀͷతͱఏҊͷࠎࢠ
• ʮʯͱݺΕΔෳͷީิ͔ΒಘΒΕΔใुΛ࠷େԽ͢Δ • ϓϨΠϠʔҰͷࢼߦͰ1ͭͷΛબ͠ɺใुΛಘΔ • ͦΕͧΕͷ͋Δใुʹै͍ใुΛੜ • ͨͩ͠ɺϓϨΠϠʔ͜ͷใुΛࢼߦͷ݁Ռ͔Βਪଌ͢Δඞཁ͕͋Δ 28 ଟόϯσΟοτ
• ϓϨΠϠʔ͋Δ࣌ͷͷධՁʹج͖ͮʮ׆༻ʯͱʮ୳ࡧʯΛฒߦͯ͠ߦ͏ • ͜ͷτϨʔυΦϑΛղফ͢ΔͨΊʹ༷ʑͳղ๏͕ఏҊ͞Ε͍ͯΔ
ଟόϯσΟοτͱͷใुͷ֬ 29 Arm0 Arm1 Arm2 User(s) System ਪఆͨ֬͠ ਅͷ֬ Recommend
Click
• จ຺͝ͱʹਪનख๏ͷબΛࣗಈ͔ͭܧଓతʹ࠷దԽ͢ΔϝλਪનγεςϜ[3] • จ຺͝ͱͷ࠷ળͳબΛɺઢܗͳଟόϯσΟοτͷղ๏Ͱ͋Δ Linear Thompson SamplingΛ༻͍ͯղ͘ • จ຺ͱͯ͠ɺᶃใγεςϜͷ࣌ؒͷܦաɺᶄਪનରͷಛੑͷࠩҟΛ ѻ͏
• จ຺͝ͱʹબͨ͠ਪનख๏ͱ͜Εʹର͢Δར༻ऀͷԠΛه͠ɺબ ͷվળʹ༻͍Δ 30 ఏҊγεςϜ (Synapse) <>ࡾ༔հ ็߃ݑ 4ZOBQTFจ຺ʹԠͯ͡ܧଓతʹਪનख๏ͷબΛ࠷దԽ͢ΔਪનγεςϜ ిࢠใ௨৴ֶձจࢽ% 7PM+% /P QQ /PW UPBQQFBS
31 ఏҊγεςϜ (Synapse)
• ࣮αʔϏεͷӡ༻σʔλΛ༻͍ͨγϛϡϨʔγϣϯʹ͓͍ͯɺจ຺Λߟྀ͠ͳ ͍ͷͱൺֱͯ͠ɺྦྷੵΫϦοΫ͕2%্͢Δ͜ͱΛ֬ೝ[3] • ֘γεςϜ࣮αʔϏεͰՔಇɾܧଓతʹධՁத • ࠓޙɺऔΓѻ͑Δจ຺ɺਪનख๏Λ͍͛ͯ͘[4][5] • ߹ΘͤͯɺڥมԽͷैੑΛ্͍ͤͯ͘͞[6] 32
ఏҊγεςϜͷධՁ <>ࡒେՆɼࡾ༔հɼ&$αΠτʹ͓͚ΔӾཡཤྺΛ༻͍ͨߪങʹܨ͕ΔߦಈͷมԽݕग़ɼݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ *05 ɼ WPM*05ɼQQrɼ <>ଜ໋ɼࡾ༔հɼϋϯυϝΠυ࡞Λରͱͨ͠&$αΠτʹ͓͚Δ୯ޠͷग़ݱසΛ༻͍ͨك᧵ͷݕग़ɼݚڀใࠂΠϯλʔ ωοτͱӡ༻ٕज़ *05 ɼWPM*05ɼQQrɼ <>ࡾ༔հɼ܀ྛ݈ଠɼඇఆৗͳଟόϯσΟοτʹ͓͚ΔมԽݕग़ΞϓϩʔνͷઢܗϞσϧͷ֦ுɼݚڀใࠂΠϯλʔωο τͱӡ༻ٕज़ *05 ɼWPM*05ɼQQrɼ+VMZ
4. ·ͱΊ
• ར༻ऀͷίϯςΩετʹج͖ͮ࠷దʹৼΔ͏ʮͳΊΒ͔ͳγεςϜʯΛհ ͨ͠ • ͜ͷ࣮ݱʹ͚ͨݚڀࣄྫͱͯ͠ɺଟڥͰͷӡ༻ੑΛߟྀͨ͠Φʔτεέʔ Ϧϯά੍ޚܥΛհͨ͠ • ݚڀͳΒͼʹαʔϏεͷಋೖࣄྫͱͯ͠ɺจ຺ʹԠͨ͡ਪનख๏ͷ࠷దԽΛ ߦ͏ਪનγεςϜΛհͨ͠ •
ࠓޙɺ͜ΕΒΛؚΊͨݚڀ։ൃͷҰͷൃలΛ௨ͯ͠ʮͳΊΒ͔ͳγες ϜʯΛ࣮ݱ͍ͯ͘͠ 34 ·ͱΊ
ݚڀһɺੵۃతʹืूதʂ https://rand.pepabo.com/
ิࢿྉ
• ͝ͱʹෳͷจ຺͕͋Γɺจ຺ʹԠͯ͡ใु͕ܾ·ΔଟόϯσΟοτ ͷઃఆ • ຊݚڀใࠂͰɺจ຺ɺෳͷཁҼͷύϥϝʔλͷΈ߹ΘͤͰදݱ͞ Εͨঢ়ଶͷ͜ͱΛࢦ͢ • → ཁҼύϥϝʔλͷ͕{0,1}ͷ߹ɺจ຺ཁҼ ʹରͯ͠
ύλʔϯ d 2d 37 ઢܗͳଟόϯσΟοτ • ઢܗͳଟόϯσΟοτͷղ๏Ͱɺจ຺ͷ֬Ͱͳ͘ɺཁҼ͝ͱ ͷʢઢܗύϥϝʔλʣΛਪఆ͢Δ͜ͱͰ֤จ຺ʹ͓͚ΔใुΛ༧͢Δ
ઢܗͳଟόϯσΟοτ 38 Arm0 Arm1 Arm2 User(s) System ਪఆͨ֬͠ ਅͷ֬ Recommend
Click Context = 0 Context = 0
ઢܗͳଟόϯσΟοτ 39 Arm0 Arm1 Arm2 User(s) System ਪఆͨ֬͠ ਅͷ֬ Recommend
Click Context = 1 Context = 1