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

AIアプリ Dojo #1 [入門者歓迎] GPUを活用して生成系AIに触れてみよう

AIアプリ Dojo #1 [入門者歓迎] GPUを活用して生成系AIに触れてみよう

https://ibm-developer.connpass.com/event/285217/ のセッション資料です。

生成系AIが一般に広まりつつある中で、企業内で独自の生成系AIを動かせる環境を作りたいというニーズが高まっています。 このセッションでは、NVIDIAのGPUを利用して、既存の生成系AIモデルを動かしてみる、という観点で、日本語での対話モデル、Stable Diffusionによる画像生成を実行するためにどうすればいいのか、モデルが実行される時にCPU、メモリ、GPUがどのように動くのかについて、デモを交えてご紹介します。加えて、IBM Cloudから利用できるGPUサーバーについてもご紹介します。

Akira Onishi (IBM)

June 15, 2023
Tweet

More Decks by Akira Onishi (IBM)

Other Decks in Technology

Transcript

  1. ೔ຊΞΠɾϏʔɾΤϜגࣜձࣾ
    ςΫϊϩδʔࣄۀຊ෦
    ΧελϚʔɾαΫηε ϓϦϯγύϧɾϚωʔδϟʔ
    ݉ 8JOEPXT$POUBJOFS1PSUJOH1SPHSBNਪਐϦʔμʔ
    େ੢ জ "LJSB0OJTIJ!JCNDPN 5XJUUFS!POJBL

    IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ
    IUUQTXXXMJOLFEJODPNJOPOJBL
    "*ΞϓϦ %PKPୈճ <ೖ໳ऀ׻ܴ>
    (16Λ׆༻ͯ͠ੜ੒ܥ"*ʹ৮ΕͯΈΑ͏

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. "*ͱର࿩͢ΔαʔϏεͷߏ੒
    8FCϒϥ΢β
    ΞϓϦ
    8FCαΠτ
    8FC "1*
    αʔϏε

    AIモデル
    計算処理
    ࠓ೔͸͜͜ͷ࿩
    ͜ͷܭࢉΛ
    "*ਪ࿦ॲཧͱ΋ݴ͏

    View full-size slide

  6. "*ֶशͱ"*ਪ࿦Λ෼͚ͯߟ͑Α͏
    "*ֶश
    Ϟσϧͷ࡞੒ɺվྑ
    "*ਪ࿦
    ϞσϧΛར༻ͨ͠ܭࢉ
    ֶश
    σʔλ
    ਂ૚ֶश
    ʢܭࢉʣ
    ཧ࿦తͳԾઆɺݚڀɺ
    ࣮ূ͔Βͷཪ෇͚
    େن໛ͳܭࢉࢿݯ
    )1$)JHI1FSGPSNBODF
    $PNQVUJOH
    "*Ϟσϧ
    "*ਪ࿦ʹదͨ͠
    ίϯϐϡʔλʔ
    ඞཁͳ౤ࢿ

    "*ਪ࿦ʹదͨ͠
    04ɺϥϯλΠϜ
    "*ϞσϧΛ࢖ͬͨܭࢉ
    ϞσϧʹΑΔ࣮ݧɺݕূ
    "*ίϛϡχςΟͷϥΠϒϥϦΛར༻ͯ͠
    ୯ମͰ΋࢝ΊΒΕΔ
    සൟʹߋ৽͕ൃੜ͢ΔલఏͰͷ
    ։ൃɾӡ༻͕ཧ૝త
    ϑΟʔυόοΫ
    ڊେͳσʔλϨΠΫϋ΢εɺ
    σʔλαΠΤϯςΟετɺ
    )1$؀ڥ΁ͷ౤ࢿ͕ඞཁ
    IUUQTIVHHJOHGBDFDP

    View full-size slide

  7. "*ਪ࿦ͷ࣮ߦ؀ڥ
    IUUQTQZQJPSH
    IUUQTIVHHJOHGBDFDP
    ίϯϐϡʔλʔ
    8JOEPXT-JOVY04
    1ZUIPO 1Z5PSDI ͳͲ
    $16
    (16ϝϞϦ
    ϝϞϦ
    (16
    ϝϞϦ
    (16ϝϞϦ
    /7.F
    44%
    (16υϥΠό
    (1(16ԋࢉϥΠϒϥϦ
    "*ϞσϧΛར༻ͨ͠ΞϓϦ
    ϋʔυ΢ΣΞந৅ԽϨΠϠʔ )BSEXBSF"CTUSBDUJPO-BZFS

    $IJQ
    ηοτ
    /FUXPSL
    *OUFSGBDF
    طଘͷ"*Ϟσϧ
    ࢲ͕࣮ͨͪ૷͢Δਪ࿦༻ͷίʔυ
    "*ϞσϧΛ࢖ͬͨܭࢉ
    طଘͷϥΠϒϥϦ
    IUUQTXXXOWJEJBDPNKBKQ
    ిݯϢχοτ

    View full-size slide

  8. (16 (SBQIJDT1SPDFTTJOH6OJU

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

    View full-size slide

  9. ߦྻͱϕΫτϧͷੵɺ̎ͭͷߦྻͷੵ
    𝑎!!
    ⋯ 𝑎!"
    ⋮ ⋱ ⋮
    𝑎#!
    ⋯ 𝑎#"
    𝑝!

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

    View full-size slide

  10. (1(16 (FOFSBM1VSQPTF(16

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

    View full-size slide

  11. ྫ/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/

    View full-size slide

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

    View full-size slide

  13. (16Λ࢖ͬͯܭࢉΛ࣮ߦ͢ΔͨΊʹ͸ʁ
    (16ϋʔυ΢ΣΞʹରԠͨ͠σόΠευϥΠό

    /7*%*"$6%"
    .JDSPTPGU%JSFDU$PNQVUF
    0QFO$-
    ".%30$N
    $".1
    ʜ

    View full-size slide

  14. /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

    View full-size slide

  15. /7*%*"$6%"
    $6%" $PNQVUF6OJGJFE%FWJDF"SDIJUFDUVSF

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. 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
    メモリ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. ೔ຊޠಛԽͷݴޠϞσϧΛ࣮ߦͯ͠ΈΔ
    ؀ڥ8JOEPXT1SP
    1ZUPSDI $6%"/7*%*"(F'PSDF359 (#ϝϞϦ

    ؀ڥ8JOEPXT4FSWFS
    1ZUPSDI $6%"/7*%*"5FTMB5 (#ϝϞϦ

    ԯύϥϝʔλ೔ຊޠର࿩(15ݴޠϞσϧ
    IUUQTIVHHJOHGBDFDPSJOOBKBQBOFTFHQUOFPYCJOTUSVDUJPOTGU

    View full-size slide

  26. 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

    View full-size slide

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

    IUUQTHJUIVCDPN"650."5*$TUBCMFEJGGVTJPOXFCVJ
    https://github.com/Stability-AI/stablediffusion

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide