Slide 1

Slide 1 text

೔ຊΞΠɾϏʔɾΤϜגࣜձࣾ ςΫϊϩδʔࣄۀຊ෦ ΧελϚʔɾαΫηε ϓϦϯγύϧɾϚωʔδϟʔ ݉ 8JOEPXT$POUBJOFS1PSUJOH1SPHSBNਪਐϦʔμʔ େ੢ জ "LJSB0OJTIJ!JCNDPN 5XJUUFS!POJBL  IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ IUUQTXXXMJOLFEJODPNJOPOJBL "*ΞϓϦ %PKPୈճ <ೖ໳ऀ׻ܴ> (16Λ׆༻ͯ͠ੜ੒ܥ"*ʹ৮ΕͯΈΑ͏ 

Slide 2

Slide 2 text

ࣗݾ঺հ 1SPQFSUZ 7BMVF ࢯ໊ େ੢ জ 5XJUUFS-JOLFE*O POJBL *5ۀքྺ ೥໨ ϚΠϒʔϜ μΠΤοτ )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆ ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲ Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ

Slide 3

Slide 3 text

"*ΞϓϦ%PKPୈճͷൣғ اۀ಺ͷ"*׆༻ʹܨ͍͛ͯͨ͘Ίɺ طଘͷϞσϧΛͦͷ··ར༻͢Δཱ৔Ͱग़ൃ͠ɺ ੜ੒ܥ"*Λࢼͯ͠ΈΔ ˞ମݧ͕த৺ͷͨΊɺͦΕͧΕͷٕज़Λ ໢ཏతʹղઆ͢ΔηογϣϯͰ͸͋Γ·ͤΜɻ

Slide 4

Slide 4 text

ࠓ೔ͷ࿩୊ 8JOEPXTͱ/7*%*"(16Λར༻ͯ͠ɺެ։͞Ε͍ͯΔϞσϧΛಈ͔͢ 1$ϋʔυ΢ΣΞͱιϑτ΢ΣΞ͕ͲͷΑ͏ʹܨ͕͍ͬͯΔ͔Λ஌Δ ϩʔΧϧϋʔυ΢ΣΞ 8JOEPXT 1ZUIPO 1Z5PSDI $6%" ର࿩ܕ"* ΞϓϦ ը૾ੜ੒ ΞϓϦ *#.$MPVE্ͷϕΞϝλϧ 8JOEPXT4FSWFS 1ZUIPO 1Z5PSDI $6%" ର࿩ܕ"* ΞϓϦ ը૾ੜ੒ ΞϓϦ

Slide 5

Slide 5 text

"*ͱର࿩͢ΔαʔϏεͷߏ੒ 8FCϒϥ΢β ΞϓϦ 8FCαΠτ 8FC "1* αʔϏε AIモデル 計算処理 ࠓ೔͸͜͜ͷ࿩ ͜ͷܭࢉΛ "*ਪ࿦ॲཧͱ΋ݴ͏

Slide 6

Slide 6 text

"*ֶशͱ"*ਪ࿦Λ෼͚ͯߟ͑Α͏ "*ֶश Ϟσϧͷ࡞੒ɺվྑ "*ਪ࿦ ϞσϧΛར༻ͨ͠ܭࢉ ֶश σʔλ ਂ૚ֶश ʢܭࢉʣ ཧ࿦తͳԾઆɺݚڀɺ ࣮ূ͔Βͷཪ෇͚ େن໛ͳܭࢉࢿݯ )1$)JHI1FSGPSNBODF $PNQVUJOH "*Ϟσϧ "*ਪ࿦ʹదͨ͠ ίϯϐϡʔλʔ ඞཁͳ౤ࢿ "*ਪ࿦ʹదͨ͠ 04ɺϥϯλΠϜ "*ϞσϧΛ࢖ͬͨܭࢉ ϞσϧʹΑΔ࣮ݧɺݕূ "*ίϛϡχςΟͷϥΠϒϥϦΛར༻ͯ͠ ୯ମͰ΋࢝ΊΒΕΔ සൟʹߋ৽͕ൃੜ͢ΔલఏͰͷ ։ൃɾӡ༻͕ཧ૝త ϑΟʔυόοΫ ڊେͳσʔλϨΠΫϋ΢εɺ σʔλαΠΤϯςΟετɺ )1$؀ڥ΁ͷ౤ࢿ͕ඞཁ IUUQTIVHHJOHGBDFDP

Slide 7

Slide 7 text

"*ਪ࿦ͷ࣮ߦ؀ڥ IUUQTQZQJPSH IUUQTIVHHJOHGBDFDP ίϯϐϡʔλʔ 8JOEPXT-JOVY04 1ZUIPO 1Z5PSDI ͳͲ $16 (16ϝϞϦ ϝϞϦ (16 ϝϞϦ (16ϝϞϦ /7.F 44% (16υϥΠό (1(16ԋࢉϥΠϒϥϦ "*ϞσϧΛར༻ͨ͠ΞϓϦ ϋʔυ΢ΣΞந৅ԽϨΠϠʔ )BSEXBSF"CTUSBDUJPO-BZFS $IJQ ηοτ /FUXPSL *OUFSGBDF طଘͷ"*Ϟσϧ ࢲ͕࣮ͨͪ૷͢Δਪ࿦༻ͷίʔυ "*ϞσϧΛ࢖ͬͨܭࢉ طଘͷϥΠϒϥϦ IUUQTXXXOWJEJBDPNKBKQ ిݯϢχοτ

Slide 8

Slide 8 text

(16 (SBQIJDT1SPDFTTJOH6OJU ήʔϜɺΤϯλϝ ݐங΍޻ۀɺߴ౓ͳࢹ֮ԽΛཁ͢ΔϏδωε "*ͱσʔλαΠΤϯε

Slide 9

Slide 9 text

ߦྻͱϕΫτϧͷੵɺ̎ͭͷߦྻͷੵ 𝑎!! ⋯ 𝑎!" ⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝! ⋮ 𝑝" = ? 𝑎!! ⋯ 𝑎!" ⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝!! ⋯ 𝑝!$ ⋮ ⋱ ⋮ 𝑝"! ⋯ 𝑝"$ = ? ͜ΕΒͷܭࢉࣗମ͸ɺ୯७ͳϧʔϓॲཧͰղܾͰ͖Δ O N Jͷ਺͕େ͖͘ͳΕ͹ɺ ܭࢉճ਺͸͞Βʹ૿͑Δ

Slide 10

Slide 10 text

(1(16 (FOFSBM1VSQPTF(16 ը૾ॲཧҎ֎ͷ໨తͰ(16Λ࢖ͬͯܭࢉ ̀ ߦྻԋࢉɺฒྻॲཧ͕ಘҙ ࠷ۙͷ(16͸ɺਂ૚ֶश༻ͷػೳΛ಺ଂ ߦྻԋࢉճ࿏Λ࢖ͬͯߴ଎ʹܭࢉΛ࣮ߦ IUUQTXXXOWJEJBDPNFOVTEBUBDFOUFSUFOTPSDPSFT

Slide 11

Slide 11 text

ྫ/7*%*"(F'PSDF359 https://www.gainward.com/main/vgapro.php?id=1162&lang=jp /7*%*""EB-PWFMBDFʢΤΠμɾϥϒϨεʣ "SDIJUFDUVSF https://www.nvidia.com/ja-jp/geforce/ada-lovelace-architecture/ 主なスペック トランジスタ数 763億 CUDA Core (シェーダプロセッサ) 数 16,384 Tensor Core数 512 RT Core数 128 GPU クロック 2.23GHz (ブースト時 2.52GHz) TDP 450W PCIe 4.0接続 https://www.4gamer.net/games/656/G065603/20221010003/

Slide 12

Slide 12 text

σʔληϯλʔ޲͚ /7*%*"(16 https://www.nvidia.com/ja-jp/data-center/graphics-cards-for-virtualization/ https://www.nvidia.com/ja-jp/data-center/a100/

Slide 13

Slide 13 text

(16Λ࢖ͬͯܭࢉΛ࣮ߦ͢ΔͨΊʹ͸ʁ (16ϋʔυ΢ΣΞʹରԠͨ͠σόΠευϥΠό /7*%*"$6%" .JDSPTPGU%JSFDU$PNQVUF 0QFO$- ".%30$N $ ".1 ʜ

Slide 14

Slide 14 text

/7*%*"(16υϥΠόͷΠϯετʔϧྫ ྫ*#.$MPVE্ͷϕΞϝλϧαʔόʔʹ/7*%*"5FTMB5Λ૊ΈࠐΜͩ؀ڥ NVIDIA Tesla T4: https://www.nvidia.com/ja-jp/data-center/tesla-t4/ GPUメモリ 16GB, 消費電⼒ 70W CUDAコア: 2,560 Turing Tensorコア: 320 FP32 8.1 TFLOPS

Slide 15

Slide 15 text

/7*%*"$6%" $6%" $PNQVUF6OJGJFE%FWJDF"SDIJUFDUVSF /7*%*"͕։ൃɾఏڙ͍ͯ͠Δ(1(16ϓϩάϥϛϯά Ϟσϧ 0QFO$-%JSFDU$PNQVUF͸ɺ/7*%*"ͷ(16Λར༻͠ ͍ͯΔ৔߹͸ɺ$6%"ܦ༝Ͱॲཧ͞ΕΔ 8JOEPXT·ͨ͸-JOVY্Ͱͷ࣮ߦʹݶఆ https://developer.nvidia.com/cuda-zone

Slide 16

Slide 16 text

$6%"5PPMLJUͷΠϯετʔϧ ΠϯετʔϥʔΛμ΢ϯϩʔυ ௨ৗ͸<ߴ଎ ਪ঑ >ͰΠϯετʔϧΛ࣮ߦ ΋͠7JTVBM4UVEJPؔ࿈ͷ&YUFOTJPOͰΤϥʔʹ ͳΔ৔߹͸ɺ<ΧελϜ>ΠϯετʔϧʹΑΓɺ ΤϥʔͱͳΔػೳΛ֎ͯ͠Πϯετʔϧ IUUQTEFWFMPQFSOWJEJBDPNDVEBUPPMLJUBSDIJWF

Slide 17

Slide 17 text

$6%"Πϯετʔϧޙͷ֬ೝ γεςϜ؀ڥม਺Λ֬ೝ͢Δ

Slide 18

Slide 18 text

$6%"Πϯετʔϧޙͷ֬ೝ  ίϚϯυϓϩϯϓτ ͋Δ͍͸1PXFS4IFMM ͔Β OWDD 7Λ࣮ߦ

Slide 19

Slide 19 text

128GB/2 = 64GBを 共有GPUメモリとして利⽤ $16ɺ(16ɺͦΕͧΕͷϝϞϦ CPU AMD Ryzen 9 5950X DDR4 32GBメモリ DDR4 32GBメモリ DDR4 32GBメモリ DDR4 32GBメモリ ྫ೥݄ʹൃച͞Εͨ".%3Z[FO9ͱ(#%%3ϝϞϦɺ(16Λ૊Έ߹Θͤͨ৔߹ GPU NVIDIA GeForce RTX 4090 PCIe 4.0 x 16 GPU⽤GDDR6X 24GB メモリ

Slide 20

Slide 20 text

$6%"ʹΑΔܭࢉͷྲྀΕʢͬ͘͟Γͱʣ  ܭࢉʹ࢖͏σʔλΛ$16ଆͷϝϞϦ͔Β (16ଆͷϝϞϦʹίϐʔ  $16͔Β(16΁ܭࢉॲཧΛࢦࣔ  (16ͰฒྻܭࢉΛ࣮ߦ  (16༻ϝϞϦ͔Β݁ՌΛ$16ଆͷϝϞϦʹίϐʔ ˞(16্Ͱ͸ܭࢉॲཧ͔࣮͠ߦͰ͖ͳ͍ͨΊɺ ϑΝΠϧΞΫηε΍σʔλϕʔεΞΫηε͸ $16ଆͰܭࢉͷࣄલɾࣄޙʹॲཧ͢Δ͜ͱ

Slide 21

Slide 21 text

1ZUIPO ΠϯλϓϦλܕݴޠ ಈతͳܕ෇͚ ։ൃޮ཰ΛߴΊΔϑϨʔϜϫʔΫɺϥΠϒϥϦ https://www.python.org/downloads/release/python-3106/ 今回は Python 3.10.6 を使います

Slide 22

Slide 22 text

ຊ୊"*ਪ࿦ʹ(16Λ࢖͏ʹ͸ʁ ྫ1ZUPSDI "*Ϟσϧ $6%"ͷ૊Έ߹Θͤ IUUQTEFWFMPQFSOWJEJBDPNDVEBUPPMLJUBSDIJWF IUUQTQZUPSDIPSHHFUTUBSUFEMPDBMMZ 1ZUPSDI1ZUIPOͷΦʔϓϯιʔεͷػցֶश ϥΠϒϥϦɺ$6%"ɺ30$NʹରԠ ࢀߟ*#.΋1ZUPSDIϓϩδΣΫτ΁ࢀՃ IUUQTSFTFBSDIJCNDPNCMPHJCNQZUPSDIDMPVEBJFUIFSOFU

Slide 23

Slide 23 text

1ZUPSDI $6%"ͷ؀ڥΛ੔͑Δ https://pytorch.org/get-started/locally/ ͝஫ҙ ࠷৽ͷ$6%"5PPMLJU ͸ରԠͯ͠·ͤΜ $6%"·ͨ͸ΛΠϯετʔϧ ͠·͠ΐ͏

Slide 24

Slide 24 text

)VHHJOH'BDF5SBOTGPSNFST https://github.com/huggingface/transformers/blob/main/README_ja.md pip install transformers ࣗવݴޠͷཧղ ࣗવݴޠͷੜ੒

Slide 25

Slide 25 text

೔ຊޠಛԽͷݴޠϞσϧΛ࣮ߦͯ͠ΈΔ ؀ڥ8JOEPXT1SP 1ZUPSDI $6%" /7*%*"(F'PSDF359 (#ϝϞϦ ؀ڥ8JOEPXT4FSWFS 1ZUPSDI $6%" /7*%*"5FTMB5 (#ϝϞϦ ԯύϥϝʔλ೔ຊޠର࿩(15ݴޠϞσϧ IUUQTIVHHJOHGBDFDPSJOOBKBQBOFTFHQUOFPYCJOTUSVDUJPOTGU

Slide 26

Slide 26 text

import torch import time from transformers import AutoTokenizer, AutoModelForCausalLM prompt_base = "ユーザー: {}システム: " start = time.perf_counter() tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-sft", use_fast=False) end = time.perf_counter() print("Tokenizer loaded:"+str(end-start)) start = time.perf_counter() model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-sft") #GPUメモリが12-16GBの場合、float16でなんとかメモリ内に収める #model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-sft", torch_dtype=torch.float16) end = time.perf_counter() print("CausalLM loaded:"+str(end-start)) if torch.cuda.is_available(): model = model.to("cuda") print ("cuda is available") def encoding(prompt): start = time.perf_counter() token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") with torch.no_grad(): output_ids = model.generate( token_ids.to(model.device), do_sample=True, max_new_tokens=256, temperature=0.9, top_k=50, repetition_penalty=1.0, pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id ) output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):]) output = output.replace("", "¥n") end = time.perf_counter() print("Encoding completed:"+str(end-start)) return output #続き def do_conversation(): text = input("Neox-3.6b>") if text == "end": return False prompt = prompt_base.format(text) result = encoding(prompt) print(result) return True while True: res = do_conversation() if res == False: break

Slide 27

Slide 27 text

4UBCMF%JGGVTJPO ೥ʹެ։͞ΕͨɺςΩετೖྗ͔Βը૾ Λੜ੒͢Δਂ૚ֶशϞσϧ $6%"Λαϙʔτ͍ͯ͠Δ04্Ͱ࣮ߦ 4UBCMF%JGGVTJPOΛ࢖͍΍͘͢͢ΔͨΊͷ8FC6*͸ɺ ༗ࢤʹΑΓ"(1-ϥΠηϯεͰެ։͞Ε͍ͯΔ ϥΠηϯεࣄ߲ʹ஫ҙ IUUQTHJUIVCDPN"650."5*$TUBCMFEJGGVTJPOXFCVJ https://github.com/Stability-AI/stablediffusion

Slide 28

Slide 28 text

*#.$MPVE(164FSWFS ϕΞϝλϧ (16ֹ݄՝ۚ /7*%*"5 1 7 Ծ૝Ϛγϯ 71$(FO  (16࣌ؒ՝ۚ /7*%*"7 ಛผ஫จʹΑΓ" ୆ߏ੒ ͷఏڙ͋Γ ˞ৄࡉ͸4VQQPSU$BTFͰ͓໰͍߹Θ͍ͤͩ͘͞ https://www.ibm.com/cloud/gpu

Slide 29

Slide 29 text

·ͱΊ (16Λ࢖ͬͨੜ੒ܥ"*Ϟσϧͷ࣮ߦ $BMMUP"DUJPO ຊ೔ͷମݧΛଞͷਓʹڞ༗͢Δ ൚༻ܭࢉʹ(16Λ࢖ͬͯΈΔ *#.$MPVE(16$MPVE4FSWFSΛ஌Δ

Slide 30

Slide 30 text

ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉ͸ɺ*#.·ͨ͸ηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛ൓өͨ͠΋ͷͰ͢ɻͦΕΒ͸৘ใ ఏڙͷ໨తͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠΋๏཯త·ͨ͸ͦͷଞͷࢦಋ΍ॿݴΛҙਤͨ͠΋ͷͰ͸ͳ͘ɺ·ͨͦͷΑ͏ͳ݁ՌΛੜΉ΋ ͷͰ΋͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔ৘ใʹ͍ͭͯ͸ɺ׬શੑͱਖ਼֬ੑΛظ͢ΔΑ͏౒ྗ͠·͕ͨ͠ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨ͸҉ ࣔʹ͔͔ΘΒ͍͔ͣͳΔอূ΋൐Θͳ͍΋ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨ͸ͦͷଞͷࢿྉͷ࢖༻ʹΑͬͯɺ͋Δ͍͸ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ֐ ͕ੜͨ͡৔߹΋ɺ*#.͸੹೚ΛෛΘͳ͍΋ͷͱ͠·͢ɻຊߨԋࢿྉʹؚ·Ε͍ͯΔ಺༰͸ɺ*#.·ͨ͸ͦͷαϓϥΠϠʔ΍ϥΠηϯεަ෇ऀ͔Β͍͔ͳ Δอূ·ͨ͸ද໌ΛҾ͖ͩ͢͜ͱΛҙਤͨ͠΋ͷͰ΋ɺ*#.ιϑτ΢ΣΞͷ࢖༻Λنఆ͢Δద༻ϥΠηϯεܖ໿ͷ৚߲Λมߋ͢Δ͜ͱΛҙਤͨ͠΋ͷͰ ΋ͳ͘ɺ·ͨͦͷΑ͏ͳ݁ՌΛੜΉ΋ͷͰ΋͋Γ·ͤΜɻ ຊߨԋࢿྉͰ*#.੡඼ɺϓϩάϥϜɺ·ͨ͸αʔϏεʹݴٴ͍ͯͯ͠΋ɺ*#.͕Ӧۀ׆ಈΛߦ͍ͬͯΔ͢΂ͯͷࠃͰͦΕΒ͕࢖༻ՄೳͰ͋Δ͜ͱΛ҉ࣔ ͢Δ΋ͷͰ͸͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͍ͯ͠Δ੡඼ϦϦʔε೔෇΍੡඼ػೳ͸ɺࢢ৔ػձ·ͨ͸ͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾఆݖΛ΋ͬ ͍ͯͭͰ΋มߋͰ͖Δ΋ͷͱ͠ɺ͍͔ͳΔํ๏ʹ͓͍ͯ΋কདྷͷ੡඼·ͨ͸ػೳ͕࢖༻ՄೳʹͳΔͱ֬໿͢Δ͜ͱΛҙਤͨ͠΋ͷͰ͸͋Γ·ͤΜɻຊߨ ԋࢿྉʹؚ·Ε͍ͯΔ಺༰͸ɺࢀՃऀ͕։࢝͢Δ׆ಈʹΑͬͯಛఆͷൢചɺച্ߴͷ޲্ɺ·ͨ͸ͦͷଞͷ݁Ռ͕ੜ͡Δͱड़΂Δɺ·ͨ͸҉ࣔ͢Δ͜ͱ Λҙਤͨ͠΋ͷͰ΋ɺ·ͨͦͷΑ͏ͳ݁ՌΛੜΉ΋ͷͰ΋͋Γ·ͤΜɻύϑΥʔϚϯε͸ɺ؅ཧ͞Εͨ؀ڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ࢖༻͠ ͨଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτ΍ύϑΥʔϚϯε͸ɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥ ϛϯάͷྔɺೖग़ྗߏ੒ɺετϨʔδߏ੒ɺ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺ਺ଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺ ݸʑͷϢʔβʔ͕͜͜Ͱड़΂ΒΕ͍ͯΔ΋ͷͱಉ༷ͷ݁ՌΛಘΒΕΔͱ֬໿͢Δ΋ͷͰ͸͋Γ·ͤΜɻ هड़͞Ε͍ͯΔ͢΂ͯͷ͓٬༷ࣄྫ͸ɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.੡඼Λ࢖༻͔ͨ͠ɺ·ͨͦΕΒͷ͓٬༷͕ୡ੒ͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞Εͨ ΋ͷͰ͢ɻ࣮ࡍͷ؀ڥίετ͓ΑͼύϑΥʔϚϯεಛੑ͸ɺ͓٬༷͝ͱʹҟͳΔ৔߹͕͋Γ·͢ɻ *#.ɺ*#.ϩΰɺJCNDPNɺ*#.$MPVEɺ*#.$MPVE1BLT͸ɺੈքͷଟ͘ͷࠃͰొ࿥͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷ঎ඪͰ͢ɻ ଞͷ੡඼໊͓ΑͼαʔϏε໊౳͸ɺͦΕͧΕ*#.·ͨ͸֤ࣾͷ঎ඪͰ͋Δ৔߹͕͋Γ·͢ɻݱ࣌఺Ͱͷ*#.ͷ঎ඪϦετʹ͍ͭͯ͸ɺ XXXJCNDPNMFHBMDPQZUSBEFTIUNMΛ͝ཡ͍ͩ͘͞ɻ .JDSPTPGU 8JOEPXT 8JOEPXT4FSWFS /&5'SBNFXPSL /&5 /&5$PSF͸ɺ.JDSPTPGU$PSQPSBUJPOͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ /7*%*" /7*%*"ϩΰ /7*%*"$6%"͸ /7*%*"$PSQPSBUJPOͷͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ