Share
Embed
watsonx.ai Dojo #1 生成AIと向き合うための準備編
IBM watsonx.aiを活用するにあたり、生成AIと向き合うために知っておくと良い技術について、広く浅く学びます。特に前提知識は不要ですが、Python言語を知っておくと、理解が深まります。オープンソースや既存のライブラリを使って生成AIを動作させるための環境の全体像を知ることで、AIプラットフォームであるIBM watsonx.ai の主要な技術要素を学んでいきましょう。
2024/9/24更新:
スライド29にある、手順8、Ubuntu上のPython 3.10.14インストール手順がわかりづらいというフィードバックがありましたので、修正を加えています。
Pythonのビルド環境を整えるために、sudo apt installコマンドを使って、build-essential他、必要なパッケージをインストールしてください。
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Akira Onishi (IBM) PRO
August 20, 2024
Transcript
46 slides
-
ࣗݾհ 1SPQFSUZ 7BMVF ࢯ໊ େ জ Y-JOLFE*O POJBL *5ۀքྺ
ۙͷ৬ྺ Microsoft *#. ࠓͷ݄͔Β )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆RVBOUJD ࠲ӈͷ ౿·Εͯͳ্ཱ͓͕ͪΔಓͷ Α͘͏ٕ มͰࣗΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ -
%FNPΛݟͯײ͡·͠ΐ͏ εϥΠυ͚ͩͷߨԋͰͳ͘ɺ%FNPΛަ͑ͨηογϣϯΛఏڙ͠·͢ श͏ΑΓ׳Ε·͠ΐ͏ ٕज़Λମݧ͢ΔͨΊͷԋशΛ௨ͯ͡ɺٕज़ΛֶͿ͖͔͚ͬΛ࡞Γ·͢ ࣭େܴɺηογϣϯΛҰॹʹ࡞Γ·͠ΐ͏ ߨࢣֶࣗͼͳ͕ΒηογϣϯΛ࣮ࢪ͍ͯ͠·͢ օ͞Μ͔Βؾ͖ϑΟʔυόοΫΛͲΜͲΜڞ༗͍ͯͩ͘͠͞
ػցֶशϞσϧ"*ϞσϧɺXBUTPOYBJΛ༑ୡʹ͠Α͏ ࠷ऴඪɺօ͞Μ͕طଘͷϞσϧΛͬͯɺ"*ΞϓϦΛ։ൃ͠ɺར༻ ͢Δ͜ͱͰ͢ ୭͕࣮ߦͰ͖ͳ͍ɾқ͕ߴ͍ςʔϚʹ৮Ε·ͤΜ ػցֶशϞσϧ"*ϞσϧΛθϩ͔Β։ൃ͢ΔੈքऔΓ্͛·ͤΜ XBUTPOYBJ%PKPͷάϥϯυɾϧʔϧ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ੜ"*ͱ͖߹͏ͨΊͷ४උฤ ਫ *#.XBUTPOYBJΛ׆༻͢Δʹ͋ͨΓɺੜ"*ͱ ͖߹͏ͨΊʹ͓ͬͯ͘ͱྑ͍ٕज़ʹ͍ͭͯɺ
͘ઙֶ͘ͼ·͢ɻಛʹલఏࣝෆཁͰ͕͢ɺ 1ZUIPOݴޠΛ͓ͬͯ͘ͱɺཧղ͕ਂ·Γ·͢ɻ ΦʔϓϯιʔεطଘͷϥΠϒϥϦΛͬͯੜ "*Λಈ࡞ͤ͞ΔͨΊͷڥͷશମ૾ΛΔ͜ͱͰɺ "*ϓϥοτϑΥʔϜͰ͋Δ*#. XBUTPOYBJͷओ ཁͳٕज़ཁૉΛֶΜͰ͍͖·͠ΐ͏ɻ ੜ"*ΛͬͨΞϓϦ։ൃɺೖฤ ਫ *#.XBUTPOYBJͷϓϩϯϓτϥϘΛͬͯେن ݴޠϞσϧΛૢ࡞͢Δํ๏ɺग़དྷ্͕ͬͨϓϩϯ ϓτΛΞϓϦ͔Βݺͼग़͢ํ๏Λֶͼ·͢ɻ *#. XBUTPOYBJʹଂ͞Ε͍ͯΔେنݴޠϞσ ϧΛΓɺ͍ΖΜͳϞσϧΛ࣮ࡍʹࢼ͍͖ͯ͠· ͠ΐ͏ɻ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ϓϩϯϓτΤϯδχΞϦϯάೖ ਫ େنݴޠϞσϧΛૢ࡞͢ΔͨΊͷϓϩϯϓτΛ ࡞͢Δ্ͰɺิॿతͳใΛՃ࣭͑ͯͷҙਤ
Λ໌֬ʹ͢Δํ๏ɺྫࣔʹΑΓճͷਫ਼ΛߴΊ Δํ๏ͳͲʹֶ͍ͭͯͼ·͢ɻେنݴޠϞσϧ ʹվྑΛՃ͑ͣʹɺظͨ͠ճʹ͚ۙͮΔํ๏ Λࢼ͍͖ͯ͠·͠ΐ͏ɻ ੜ"*ΛͬͨΞϓϦ։ൃɺԠ༻ ฤ ਫ େنݴޠϞσϧͷ੍ࣄ߲ΛΓӽ͑ΔͨΊʹɺ 3"(-BOH$IBJOΛͬͨ"*ΞϓϦͷ։ൃʹͭ ֶ͍ͯͼ·͢ɻ͜Ε·ͰͷճΑΓएׯқ͕ ্͕Γ·͕͢ɺαϯϓϧίʔυΛݟͳ͕Βɺงғ ؾΛ௫Έɺօ͞Μ͕։ൃ͍ͨ͠"*ΞϓϦͷ ΛߴΊ͍͖ͯ·͠ΐ͏ɻ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ϑΝΠϯνϡʔχϯάͱ *OTUSVDU-BC ਫ ࣭ͱ͑Λ༻ҙ͢Δ͜ͱͰɺେنݴޠϞσ
ϧʹ৽͍ࣝ͠ΛՃ͢ΔͨΊͷϑΝΠϯ νϡʔχϯάͷํ๏Λֶͼ·͢ɻ·ͨɺاۀಠ ࣗͷେنݴޠϞσϧͷܧଓతͳվྑʹ࠷దͳ *OTUSVDU-BCʹֶ͍ͭͯͼ·͢ɻ ܧଓతͳ"*ΞϓϦ։ൃͱల։ ਫ ͜Ε·Ͱֶश͖ͯͨ͜͠ͱΛΈ߹Θͤͯɺେ نݴޠϞσϧΛར༻ͨ͠"*ΞϓϦͷܧଓతͳ ։ൃͱల։ͷํ๏Λֶͼ·͢ɻاۀಠࣗͷ"*Ξ ϓϦ͚ͩͰͳ͘ɺ"*ΛΈࠐΜͩιϦϡʔ γϣϯͷܧଓతͳൃలɺύʔτφʔΤίγες ϜͷൃలͳͲΛҰॹʹߟ͍͖͑ͯ·͢ɻ -
օ͞Μɺੜ"*ΛͬͯɺͲΜͳະདྷΛ࡞Γ͍ͨͰ͔͢ʁ օ͞Μͷؾ࣋ͪʹ͍ۙͷΛҰͭɺνϟοτཝʹࣈͰճ͍ͯͩ͘͠͞ɻ "*ΞγελϯτΛ࡞ΓɺۀΛΑΓޮΑ͘ਐΊ͍ͨ ίʔσΟϯάΛࢧԉ͢Δ"*Λ࡞Γɺ։ൃظؒΛॖ͍ͨ͠ ઐՈͷࣝΛूΊͨ"*Λ࡞Γɺ͋ΒΏΔੜ࢈ੑΛ্͍ͨ͠ اۀσʔλΛֶΜͩ"*ϞσϧΛ࡞ΓɺϏδωεͷՁʹܨ͍͛ͨ
ଞͷاۀͱڠۀͯ͠"*ιϦϡʔγϣϯΛ։ൃ͠ɺൢച͍ͨ͠ ੜ"*ΛͬͯΈ͍͕ͨɺԿ͔Β࢝Ίͯྑ͍͔Θ͔Βͳ͍ ·͕ͣࣗࣗੜ"*Λֶͼɺ"*ਓࡐʹͳ͍͖͍ͬͯͨ ࣭ -
γϯϓϧͳϢʔεέʔεͰখ͘͞"*Λ׆༻͠ͳ͕Βɺ"*ΞϓϦΛ։ൃ͠ɺ ஈ֊తʹൃలͤ͞ɺۀͷσδλϧԽΛਐԽͤ͞Δ ϏδωεͷͨΊͷ"*ɺϢʔεέʔε จॻੜ ࣭ٙԠ ίʔυੜ ྨ ݴ༿ͷநग़ ཁ ݕࡧʴཁ
3"( ࣗಈԽ 3"(3FUSJFWBM"VHNFOUFE(FOFSBUJPOɺ"*Ϟσϧ͕Βͳ͍ใΛݕࡧ͠ɺͦͷ݁ՌΛͬͯ"*ϞσϧͰςΩετΛੜ͢Δ ςΩετ ੜ ༁ -
நԽ͞Εͨ"*ΞϓϦͷߏ ೖྗ ΫΤϦʔ ग़ྗ "*--.ΞϓϦ ϏδωεɾϩδοΫ "*Ϟσϧ ػցֶशϞσϧ ϥΠϒϥϦ"1* খ࢝͘͞Ίͯɺ
ར༻͠ͳ͕Βൃలͤ͞Δ ຊޠϞσϧ͚ͩʹ߆Βͳ͍ ·ͨϞσϧਐԽ͢Δ "*ΞϓϦͷ࣮ߦڥ ʢ"*ϓϥοτϑΥʔϜʣ ΞϓϦΛ ίϯςφԽ͓ͯ͘͠ͱ ཧ͕؆୯ʹͳΔ -
ֶशࡁΈͷσʔλΛͬͯɺςΩετը૾ͳͲΛੜ͢Δ"*ΞϓϦ ੜʹ"*ϞσϧΛͬͨܭࢉʢ"*ਪʣ͕ඞਢɺ(16/16Λར༻ ୯ͳΔνϟοτϘοτσʔλϕʔεͰͳ͍͜ͱʹҙ ੜ"*ɺͦͷ࣮ମ"*ΞϓϦ ೖྗ ΫΤϦʔ ग़ྗ ճ "*ΞϓϦ ϏδωεɾϩδοΫ
"*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦͷ࣮ߦڥ ʢ"*ϓϥοτϑΥʔϜϋʔυΣΞͱιϑτΣΞʣ ೖྗ ग़ྗ લॲཧ ޙॲཧ ϓϩϯϓτ ։ൃ ΞϓϦ։ൃͱల։ όʔδϣϯཧ ΞϓϦͷධՁ ϞσϧͷධՁ Ϟσϧͷཧ "1*࡞ -
ήʔϜΤϯλʔςΠϯϝϯτ ݐஙۀɺߴͳࢹ֮ԽɾՄࢹԽΛཁ͢Δۀ "*σʔλαΠΤϯεɺ(1(16 (FOFSBM1VSQPTF(16 ͷԠ༻ (16 (SBQIJDT1SPDFTTJOH6OJU 𝑎!! ⋯ 𝑎!"
⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝! ⋮ 𝑝" = ? 𝑎!! ⋯ 𝑎!" ⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝!! ⋯ 𝑝!$ ⋮ ⋱ ⋮ 𝑝"! ⋯ 𝑝"$ = ? (16%ը໘ͷඳըͷΈͳΒͣɺ ߦྻԋࢉɺฒྻॲཧ͕ಘҙ ˣ "*ϞσϧʹΑΔܭࢉ ਪ ಘҙ (16ʹՃ͑ͯɺ"*ਪʹಛԽͨ͠ /16 /FVSBM1SPDFTTJOH6OJU ͷ ར༻͞Ε͍ͯΔ -
Ұൠ͚(16ͷྫ/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/ -
8JOEPXT%JSFDU.- /16(16 *OUFM/16 "*#PPTU Λಈ͔͢ 8JOEPXTΞϓϦ 0//9SVOUJNF %JSFDU.- *OUFM/16 "*#PPTU
8JOEPXTΞϓϦ %JSFDU.- (16 %JSFDU% ಈըͷϦΞϧλΠϜղ૾දࣔ IUUQTMFBSONJDSPTPGUDPNKBKQXJOEPXTBJEJSFDUNMENM -
"*ਪͷ࣮ߦڥɺશମΛ၆ᛌ͢Δ IUUQTQZQJPSH IUUQTIVHHJOHGBDFDP ίϯϐϡʔλʔ 8JOEPXT-JOVY04 1ZUIPO 1Z5PSDIͳͲ $16 (16ϝϞϦ ϝϞϦ
(16 ϝϞϦ (16ϝϞϦ /7.F 44% (16υϥΠό (1(16ԋࢉϥΠϒϥϦ ྫ/7*%*"$6%" "*ϞσϧΛར༻ͨ͠ΞϓϦ ϋʔυΣΞநԽϨΠϠʔ )BSEXBSF"CTUSBDUJPO-BZFS $IJQ ηοτ /FUXPSL *OUFSGBDF طଘͷ"*Ϟσϧ ࢲ͕࣮ͨͪ͢Δਪ༻ͷίʔυ "*ϞσϧΛͬͨܭࢉ طଘͷϥΠϒϥϦ ిݯϢχοτ -
1ZUIPOݴޠͷϓϩάϥϛϯά
IUUQTXXXQZUIPOPSH -
.JDSPTPGU4UPSFΛ։͖ɺ8JOEPXTλʔϛφϧΛΠϯετʔϧ IUUQTBQQTNJDSPTPGUDPNEFUBJMOEYIL 8JOEPXT4VCTZTUFNGPS-JOVYΛΠϯετʔϧɺ6CVOUVڥΛ࡞ ཧऀݖݶͰ1PXFS4IFMMΛ։͍ͯɺ࣍ͷίϚϯυΛ࣮ߦ wsl --install -d Ubuntu-22.04 ΠϯετʔϧޙʹγεςϜΛ࠶ىಈ͠ɺ1PXFS4IFMM͔Β࣍ͷίϚϯυΛೖྗͯ͠ɺ6CVOUVΛ࣮ߦ wsl
-d Ubuntu-22.04 6CVOUV͕ىಈͨ͠ΒɺϢʔβʔ໊ͱύεϫʔυΛઃఆ ͖ͳ໊લͱύεϫʔυͰ0,ɺϝϞΛΕͣʹ Enter new UNIX username: ilab New password: llm Retype password: llm ڥͷΞοϓσʔτ ύεϫʔυೖྗ͕ඞཁ sudo apt update sudo apt upgrade 1ZUIPOͷόʔδϣϯ֬ೝ python3 --version 1ZUIPOͷ࣮ߦڥΛ͑Δ 8JOEPXT8JOEPXT ɿ1ZUIPOͷ࠷৽όʔδϣϯ ͜ͷ%PKPͰΛ͍͖ͬͯ·͢ 7JTVBM4UVEJP$PEFΛΠϯετʔϧ https://code.visualstudio.com/Download 7JTVBM4UVEJP$PEF༻ͷ֦ுػೳ 1ZUIPOͱ84-ΛΠϯετʔϧ -
ଓ͖ 1ZUIPOͷ࣮ߦڥΛ͑Δ8JOEPXT8JOEPXT QZFOWͷΠϯετʔϧ curl https://pyenv.run | bash echo 'export PYENV_ROOT="$HOME/.pyenv"'
>> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc 1ZUIPOͷΠϯετʔϧ TVEPBQUJOTUBMMCVJMEFTTFOUJBMMJCTTMEFW[MJCHEFWMJCC[EFWMJCSFBEMJOFEFWMJCTRMJUFEFWDVSMMJCODVSTFTXEFWY[VUJMTULEFWMJCYNMEFWMJCYNMTFDEFWMJCGGJEFWMJCM[NBEFW pyenv install 3.10.14 pyenv global 3.10.14 python --version # ʮPython 3.10.14ʯ͕දࣔ͞Ε͍ͯΕɺOK -
λʔϛφϧΛ্ཱͪ͛ɺ9DPEFDPNNBOEMJOFUPPMΛΠϯετʔϧ xcode-select –install )PNFCSFXΛΠϯετʔϧ ࣮ߦޙʹදࣔ͞ΕΔ/FYUTUFQTΛ࣮ߦͯ͠ɺ1"5)Λ௨͢͜ͱ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
)PNFCSFXΛͬͯɺQZFOWΛΠϯετʔϧ brew update brew install pyenv ڥมͷઃఆ (zsh͚) echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc QZFOWΛͬͯɺ1ZUIPOΛΠϯετʔϧ brew install openssl readline sqlite3 xz zlib tcl-tk pyenv install 3.10.14 )PNFCSFXΛͬͯɺ7JTVBM4UVEJP$PEFΛΠϯετʔϧ brew install --cask visual-studio-code 1ZUIPOͷ࣮ߦڥΛ͑Δ NBD04 -
ϗʔϜσΟϨΫτϦͷԼʹ࡞ۀ༻ϑΥϧμͱͯ͠XYBJΛ࡞Δ cd ~ mkdir wxai cd wxai 1ZUIPOͷԾڥWFOWΛ࡞Δ python -m
venv venv 1ZUIPOͷԾڥWFOWΛ༗ޮԽ͢Δ source venv/bin/activate 1ZUIPOͷԾڥΛ࡞Δ -JOVYNBDڞ௨ -
1ZUPSDI ଟʹΑΔχϡʔϥϧωοτϫʔΫΛ ༻ͨ͠ػցֶशͷϑϨʔϜϫʔΫ 'BDFCPPL"*3FTFBSDI ݱ.FUB ͕։ൃ ʹΦʔϓϯιʔεԽ ʹ1ZUPSDI'PVOEBUJPO͕ཧ -JOVY'PVOEBUJPOͷҰ෦
ͦͷޙɺ*#.1ZUPSDI'PVOEBUJPOͷ ϝϯόʔͱͳΓ1ZUPSDIͷൃలʹߩݙத IUUQTQZUPSDIPSHHFUTUBSUFEMPDBMMZ -
-JOVY 6CVOUVPO8JOEPXT WFSTJPO # CPU (ར༻͍ͯ͠ΔPCʹNVIDIA GPU͕ࡌ͞Ε͍ͯͳ͍߹) pip install torch==2.3.1
torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cpu # CUDA 12.1 (NVIDIA GPUΛ͑ΔPCͷ߹) wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run sudo sh cuda_12.1.0_530.30.02_linux.run pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 –index-url https://download.pytorch.org/whl/cu121 NBD04 "QQMF4JMJDPO... pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 NBD04 *OUFM$16 # Intel CPUΛࡌͨ͠mac͚ͷ࠷ऴϦϦʔε Pytorch 2.2·Ͱ ৄࡉͪ͜Β pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 1ZUPSDIͷΠϯετʔϧ -
import time from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda"
# Apple Siliconࡌͷmacڥʹ͓͚Δҙ: # device = "mps" ͷ߹λʔϛφϧ্Ͱ࣍ͷڥม͕ඞཁ # export PYTORCH_ENABLE_MPS_FALLBACK=1 model_path = "ibm-granite/granite-3b-code-instruct" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path) model.to(device) def generate_code(prompt): start = time.perf_counter() # change input text as desired chat = [ { "role": "user", "content": prompt }, ] chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True) # tokenize the text input_tokens = tokenizer(chat, return_tensors="pt") # transfer tokenized inputs to the device for i in input_tokens: input_tokens[i] = input_tokens[i].to(device) ࢀߟHSBOJUFCDPEFJOTUSVDUΛͬͨίʔυੜྫ # generate output tokens # Θ͔Γ͍͢Α͏ʹύϥϝʔλ࠷ݶͷΈ # generateϝιουʹ͢ύϥϝʔλదٓमਖ਼͍ͯͩ͘͠͞ output = model.generate(**input_tokens, max_new_tokens=1000) # decode output tokens into text output = tokenizer.batch_decode(output) # ݁Ռग़ྗ for i in output: print(i) end = time.perf_counter() print(">>>task completed:"+str(end-start)) return output def do_conversation(): text = input("Granite Code>") if text == "end": return False result = generate_code(text) return True while True: res = do_conversation() if res == False: break -
"*ΞϓϦͱͷΓऔΓɺओʹจࣈྻͰɺਓ͕ཧղͰ͖Δͷ "*ϞσϧΛར༻͢ΔܭࢉʮԋࢉʯɺจࣈτʔΫϯʹมͯ͠ར༻ จࣈ͕τʔΫϯͰͳ͍͜ͱʹҙ ˞͜ͷ༷ʹΑΓੜ݁ՌΛԿจࣈҎͰग़ྗɺͱ͍͏໋ྩʹ͔ͳ͍ จࣈྻͱτʔΫϯ 5PLFO ਓγεςϜ͕ ೖྗͨ͠ςΩετ จࣈྻ͔Β τʔΫϯ
τʔΫϯ͔Β จࣈྻ ਪͰར༻͢Δ "*Ϟσϧ ೖྗ ग़ྗ 𝑒! ⋮ 𝑒" 𝑟! ⋮ 𝑟" ੜ͞Εͨ ςΩετ ϕΫτϧ ϕΫτϧ IUUQTXXXJCNDPNEPDTKBXBUTPOYTBBT UPQJDTPMVUJPOTUPLFOT IUUQTIVHHJOHGBDFDPEPDTUSBOTGPSNFSTNBJO@DMBTTFTUPLFOJ[FS -
# t.py ͱͯ͠อଘ from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
encoded = tokenizer("We are very happy to show you the 🤗 Transformers library.") print(encoded) ࣮ߦ݁Ռ Downloading tokenizer_config.json: 100%|█| 48.0/48.0 [00:00<00:00, Downloading config.json: 100%|████| 570/570 [00:00<00:00, 4.90MB/s] Downloading vocab.txt: 100%|█████| 232k/232k [00:00<00:00, 745kB/s] Downloading tokenizer.json: 100%|█| 466k/466k [00:00<00:00, 1.03MB/ {'input_ids': [101, 2057, 2024, 2200, 3407, 2000, 2265, 2017, 1996, 100, 19081, 3075, 1012, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]} ࢀߟจࣈྻͷτʔΫϯԽ -
XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ͍߹Θͤ
ੜ݁Ռ ཤྺ σʔλ ༻ྔ σʔλ "*ͷ࣮ݧΦʔϓϯιʔεͰՄೳ ҰํɺاۀϨϕϧͷల։՝͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ͑ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ -
ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉɺ*#.·ͨηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛөͨ͠ͷͰ͢ɻͦΕΒใ ఏڙͷతͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠๏త·ͨͦͷଞͷࢦಋॿݴΛҙਤͨ͠ͷͰͳ͘ɺ·ͨ*#.αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢ΔͷͰ͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔใʹ͍ͭͯɺશੑͱਖ਼֬ੑΛظ͢ΔΑ͏ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨࣔʹ͔͔ΘΒͣɺۀੑɺಛఆͷతͷద߹ੑɺඇ৵ੑΛؚΊɺ͍͔ͳΔอূΘͳ͍ ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨͦͷଞͷࢿྉͷ༻ʹΑͬͯɺ͋Δ͍ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ͕ੜͨ͡߹ɺ*#.ΛෛΘͳ͍ ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.ɺϓϩάϥϜɺ·ͨαʔϏεɺ*#.͕ϏδωεΛߦ͍ͬͯΔͯ͢ͷࠃɾҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷలʢϦϦʔεػೳΛؚΉʣɺࢢػձ·ͨͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ͍ͬͯͭͰมߋͰ͖Δͷͱ͠ɺকདྷͷ·ͨػೳ͕༻ՄೳʹͳΔ͜ͱɺ͘͠ಛఆͷ݁ՌΛ֬͢Δ͜ͱΛҙਤ͢ΔͷͰ͋Γ ·ͤΜɻຊߨԋࢿྉɺݴٴ͞ΕΔ
*#.·ͨαʔϏεʹద༻͋Δܖ݅Λมߋ͢ΔͷͰɺՃͷද໌·ͨอূΛҙਤ͢ΔͷͰ͋Γ· ͤΜɻ ຊߨԋࢿྉʹؚ·Ε͍ͯΔ༰ɺࢀՃऀͷ׆ಈʹΑͬͯಛఆͷ݁Ռ͕ੜ͡Δͱड़Δɺ·ͨ҉ࣔ͢Δ͜ͱΛҙਤͨ͠ͷͰɺ·ͨͦͷΑ͏ͳ݁Ռ ΛੜΉͷͰ͋Γ·ͤΜɻ ύϑΥʔϚϯεɺཧ͞Εͨڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ༻ͨ͠ଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτύϑΥʔϚϯεɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥϛϯάͷྔɺೖग़ྗߏɺετϨʔδߏɺ ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺݸʑͷϢʔβʔ͕͜͜Ͱड़ΒΕ͍ͯΔͷͱ ಉ༷ͷ݁ՌΛಘΒΕΔͱ֬͢ΔͷͰ͋Γ·ͤΜɻهड़͞Ε͍ͯΔͯ͢ͷ͓٬༷ࣄྫɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.Λ༻͔ͨ͠ɺ· ͨͦΕΒͷ͓٬༷͕ୡͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞ΕͨͷͰ͢ɻ࣮ࡍͷڥίετ͓ΑͼύϑΥʔϚϯεಛੑɺ͓٬༷͝ͱʹҟͳΔ߹͕͋Γ·͢ɻ • *#.ɺ*#.ϩΰɺJCNDPNɺ%C *#.XBUTPOYɺ ੈքͷଟ͘ͷࠃͰొ͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷඪͰ͢ɻଞͷ໊͓Αͼ αʔϏε໊ɺͦΕͧΕ*#.·֤ͨࣾͷඪͰ͋Δ߹͕͋Γ·͢ɻݱ࣌Ͱͷ *#.ͷඪϦετʹ͍ͭͯɺXXXJCNDPNMFHBMDPQZUSBEFTIUNMΛ͝ཡ͘ ͍ͩ͞ɻ • 3FE)BUɺ3FE)BU0QFO4IJGUɺ3FE)BU"OTJCMFɺ3FE)BU*OD·ͨࢠձࣾͷถࠃ͓Αͼͦͷଞͷࠃʹ͓͚Δඪ·ͨొඪͰ͢ • .JDSPTPGU 8JOEPXT "[VSF.BJB %JSFDU9 %JSFDU% .JDSPTPGU#VJME .JDSPTPGU$PSQPSBUJPOͷถࠃ͓Αͼͦͷଞͷࠃʹ͓͚ΔඪͰ͢ • "84 "845SBJOJVN"NB[PO8FC4FSWJDFT *ODͷඪͰ͢ɻ • (PPHMF (FNJOJ (PPHMF--$ͷඪ·ͨొඪͰ͢ɻ • /7*%*" /7*%*"(F'PSDF/7*%*"$PSQPSBUJPOͷඪ·ͨొඪͰ͢ɻ • ".% ".%3Z[FO"EWBODFE.JDSP%FWJDFT *ODͷඪ·ͨొඪͰ͢ɻ • "QQMF .BDCPPL NBD04 9DPEF "QQMF*OUFMMJHFODF"QQMF*ODͷඪ·ͨొඪͰ͢ɻ