ทัวร์ชมพร้อมคำแนะนำเกี่ยวกับวิธีการติดตั้ง pytorch
ที่ได้รับการปรับปรุงและตัวเลือก MLX
ใหม่ของ Apple และ/หรือ tensorflow
ของ Google หรือ JAX
บน Apple Silicon Macs และวิธีใช้โมเดลภาษาขนาดใหญ่ HuggingFace
สำหรับการทดลองของคุณเอง Mac รุ่นล่าสุดแสดงประสิทธิภาพที่ดีสำหรับงานการเรียนรู้ของเครื่อง
เราจะดำเนินการตามขั้นตอนต่อไปนี้:
homebrew
pytorch
พร้อมรองรับ MPS (ตัวเชเดอร์ประสิทธิภาพโลหะ) โดยใช้ Apple Silicon GPUmlx
ใหม่ของ AppleJAX
ด้วยไดรเวอร์โลหะของ Apple (อยู่ในช่วงทดลอง (2024-07) และไม่ได้อัปเดตเสมอไป)tensorflow
และการเพิ่มประสิทธิภาพไดรเวอร์โลหะแบบเสียบได้ของ Applejupyter lab
เพื่อรันโน้ตบุ๊กhuggingface
และรันโมเดลภาษาที่ได้รับการฝึกมาแล้วบางส่วนโดยใช้ transformers
และโค้ดเพียงไม่กี่บรรทัดภายใน Jupyter Labจากนั้นเราจะจัดเตรียม HowTos เพิ่มเติมสำหรับ:
(ข้ามไปที่ 1. การเตรียมการ หากคุณรู้ว่าคุณกำลังจะใช้เฟรมเวิร์กใด)
Tensorflow, JAX, Pytorch และ MLX เป็นเฟรมเวิร์กการเรียนรู้เชิงลึกที่ให้ไลบรารีที่จำเป็นในการดำเนินการเทนเซอร์ที่ได้รับการปรับปรุงให้เหมาะสมซึ่งใช้ในการฝึกอบรมและการอนุมาน ในระดับสูงฟังก์ชันการทำงานของทั้งสี่จะเทียบเท่ากัน Huggingface สร้างขึ้นจากเฟรมเวิร์กใดๆ เหล่านั้น และจัดเตรียมไลบรารีแบบจำลองที่ได้รับการฝึกไว้ล่วงหน้าขนาดใหญ่สำหรับกรณีการใช้งานต่างๆ มากมาย พร้อมใช้งานหรือปรับแต่งได้ พร้อมด้วยไลบรารีอำนวยความสะดวกจำนวนหนึ่งและโค้ดตัวอย่างเพื่อการเริ่มต้นใช้งานที่ง่ายดาย
jax-metal
นั้นไม่ได้อัปเดตด้วย JAX
เวอร์ชันล่าสุดเสมอไปHuggingFace เผยแพร่ภาพรวมของการรองรับโมเดลสำหรับแต่ละเฟรมเวิร์ก ปัจจุบัน Pytorch เป็นมาตรฐาน defacto หากคุณต้องการใช้โมเดลที่มีอยู่
สำหรับคำตอบ (อาจง่ายเกินไป) สำหรับคำถาม "อะไรเร็วที่สุด" ดู Jupyter notebook 02-Benchmarks และเมื่อคุณติดตั้งเสร็จแล้ว คุณสามารถทดสอบสภาพแวดล้อมของคุณเองได้ โน้ตบุ๊กช่วยให้สามารถเปรียบเทียบความเร็วของการคูณเมทริกซ์สำหรับเฟรมเวิร์กที่แตกต่างกัน อย่างไรก็ตาม ความแตกต่างระหว่างเฟรมเวิร์กเมื่อดำเนินการฝึกอบรมโมเดล 'มาตรฐาน' หรืองานการอนุมานมักจะเด่นชัดน้อยกว่า
หากคุณยังไม่ได้ดำเนินการ ให้ไปที่ https://brew.sh/ แล้วทำตามคำแนะนำเพื่อติดตั้ง homebrew เมื่อเสร็จแล้ว ให้เปิดเทอร์มินัลแล้วพิมพ์ brew --version
เพื่อตรวจสอบว่าติดตั้งอย่างถูกต้อง
ตอนนี้ใช้ brew
เพื่อติดตั้ง python
และ git
เวอร์ชันล่าสุด คำแนะนำคือใช้ Python 3.12 เริ่มต้นของ Homebrew หากคุณไม่ได้วางแผนที่จะใช้ Tensorflow กับการเพิ่มประสิทธิภาพ Metal (ยังต้องการ 3.11 (ณ 2024-04))
brew install [email protected] git
brew install [email protected] git
คุณสามารถติดตั้ง Python ทั้งสองเวอร์ชัน จากนั้นสร้างสภาพแวดล้อมเสมือนโดยใช้เวอร์ชัน Python เฉพาะที่คุณต้องการสำหรับแต่ละกรณี
หากคุณวางแผนที่จะใช้ Linux ด้วย โปรดทราบว่าบางครั้งการรองรับเวอร์ชัน Python จะแตกต่างกันระหว่างเฟรมเวิร์กเวอร์ชัน Mac และ Linux
Apple ไม่ได้ทุ่มเทพลังงานมากเกินไปในการทำให้ Python ของ MacOS อัปเดตอยู่เสมอ หากคุณต้องการใช้ python เริ่มต้นที่เป็นปัจจุบัน ก็สมเหตุสมผลแล้วที่จะทำให้ homebrew's python กลายเป็น python ของระบบเริ่มต้น ดังนั้น หากคุณต้องการใช้ระบบ Python 3.11 หรือ 3.12 ของ homebrew ทั่วโลก วิธีที่ง่ายที่สุดในการดำเนินการ (หลังจาก
brew install [email protected]
หรือ3.11
):
แก้ไข ~/.zshrc
และแทรก:
# This is OPTIONAL and only required if you want to make homebrew's Python 3.12 as the global version:
export PATH= " /opt/homebrew/opt/[email protected]/bin: $PATH "
export PATH=/opt/homebrew/opt/[email protected]/libexec/bin: $PATH
เปลี่ยนการอ้างอิงทั้งหมดของ 3.12
เป็น 3.11
เมื่อต้องการสร้างหลามมาตรฐานระบบ Python 3.11 ของ homebrew
(รีสตาร์ทเทอร์มินัลของคุณเพื่อเปิดใช้งานการเปลี่ยนแปลงพาธ หรือป้อน source ~/.zshrc
ในเซสชันเทอร์มินัลปัจจุบันของคุณ)
ไม่ว่า Python จะใช้ระบบจะเป็นอย่างไรก็ตาม เมื่อสร้างสภาพแวดล้อมเสมือน คุณสามารถเลือกเวอร์ชันของ Python ที่ต้องการใช้ใน
venv
ได้ตลอดเวลา โดยสร้างvenv
ด้วย Python นั้นทุกประการ เช่น/usr/bin/python3 -m venv my_venv_name
สร้างสภาพแวดล้อมเสมือนโดยใช้ macOS python ของ Apple (ซึ่งในขณะที่เขียนบทความนี้ 2024-07 ยังคงติดอยู่ที่ 3.9.6) ดูด้านล่าง สภาพแวดล้อมเสมือน สำหรับรายละเอียดเพิ่มเติม
ตอนนี้ทำการโคลนโปรเจ็กต์นี้เป็นโปรเจ็กต์ทดสอบ:
git clone https://github.com/domschl/HuggingFaceGuidedTourForMac
ซึ่งจะเป็นการโคลนโครงการทดสอบลงในไดเร็กทอรี HuggingFaceGuidedTourForMac
ตอนนี้สร้างสภาพแวดล้อม Python 3.12 สำหรับโปรเจ็กต์นี้และเปิดใช้งาน:
(อีกครั้ง: แทนที่ด้วย 3.11
หากคุณต้องการ)
python3.12 -m venv HuggingFaceGuidedTourForMac
การสร้าง venv จะเพิ่มไฟล์ที่ต้องการ (ไบนารีหลาม, ไลบรารี, การกำหนดค่า) สำหรับสภาพแวดล้อมหลามเสมือนไปยังโฟลเดอร์โปรเจ็กต์ที่เราเพิ่งโคลน โดยใช้ไดเร็กทอรีเดียวกันอีกครั้ง HuggingFaceGuidedTourForMac
เข้าสู่ไดเร็กทอรีและเปิดใช้งานสภาพแวดล้อมเสมือน:
cd HuggingFaceGuidedTourForMac
source bin/activate
ตอนนี้ไดเร็กทอรี HuggingFaceGuidedTourForMac
มีเนื้อหาของที่เก็บ github (เช่น 00-SystemCheck.ipynb
) และ ไฟล์สำหรับ env เสมือน (เช่น bin
, lib
etc
include
, share
, pyvenv.cfg
):
ทางเลือก: หากคุณติดตั้งเวอร์ชันหลามที่แตกต่างกันหลายเวอร์ชัน คุณสามารถสร้างสภาพแวดล้อมที่ใช้เวอร์ชันเฉพาะได้โดยการระบุเส้นทางของหลามที่ใช้ในการสร้าง venv
เช่น:
/opt/homebrew/opt/[email protected]/bin/python3.12 -m venv my_new_312_env
ใช้ python ของ homebrew อย่างชัดเจนเพื่อสร้าง venv
ใหม่ในขณะที่
/usr/bin/python3 -m venv my_old_system_venv
จะใช้เวอร์ชัน macOS python ของ Apple สำหรับสภาพแวดล้อมใหม่
ปิดการใช้งานสภาพแวดล้อมเสมือนนี้ เพียงใช้:
deactivate
หากต้องการเปิดใช้งานอีกครั้ง ให้ป้อนไดเร็กทอรีที่มี venv
ที่นี่: HuggingFaceGuidedTourForMac
และใช้:
source bin/activate
venv
คุณสมบัติที่ใช้งานง่ายของ
venv
คือข้อเท็จจริง: ในขณะที่คุณเข้าสู่สภาพแวดล้อมโดยเปิดใช้งานมันในไดเร็กทอรีย่อยของโปรเจ็กต์ของคุณ (ด้วยsource bin/activate
)venv
จะยังคงทำงานอยู่ เมื่อคุณออกจากโฟลเดอร์โปรเจ็กต์และเริ่มทำงานกับสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิง จนกระทั่ง คุณปิด การใช้venv
อย่างชัดเจนด้วยdeactivate
มีเครื่องมือจำนวนหนึ่งที่ปรับเปลี่ยนระบบเทอร์มินัลให้แสดง
venv
ที่ใช้งานอยู่ในปัจจุบัน ซึ่งมีประโยชน์มาก ลองดูยานอวกาศ (แนะนำ) หรือถ้าคุณชอบของตกแต่งOh My Zsh
ตัวอย่างที่ติดตั้ง powerlevel10k
ด้านซ้ายของพรอมต์ระบบจะแสดงไดเร็กทอรีปัจจุบัน ด้านขวาจะแสดงชื่อของ venv
ขณะนี้ไม่มี venv
ใช้งานอยู่
หลังจากเปิดใช้งาน venv
ใน HuggingFaceGuidedTourForMac
:
แม้ว่าไดเร็กทอรีการทำงานจะเปลี่ยนไป (ที่นี่ไปที่ home
) เนื่องจาก venv
ยังคงทำงานอยู่ ชื่อของมันจึงแสดงทางด้านขวาโดย powerlevel10k
มีประโยชน์มาก
ดูhttps://docs.python.org/3/tutorial/venv.htmlสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสภาพแวดล้อมเสมือน Python
pytorch
ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนของคุณใช้งานด้วย pip -V
(V ตัวพิมพ์ใหญ่) ซึ่งควรแสดงเส้นทางสำหรับ pip
ภายในโปรเจ็กต์ของคุณ:
<your-path>/HuggingFaceGuidedTourForMac/lib/python3.12/site-packages/pip (python 3.12)
หลังจาก https://pytorch.org
เราจะติดตั้ง Pytorch ด้วย pip
คุณต้องมีเวอร์ชัน 2.x เป็นอย่างน้อย (ค่าเริ่มต้นตั้งแต่ปี 2023) เพื่อรับการรองรับ MPS (Metal Performance Shaders) ภายใน pytorch ซึ่งมอบข้อได้เปรียบด้านประสิทธิภาพที่สำคัญบน Apple Silicon
วิธีติดตั้ง pytorch
ลงใน venv
:
pip install -U torch numpy torchvision torchaudio
หากต้องการทดสอบว่ามีการติดตั้ง pytorch
อย่างถูกต้อง และมีตัวเชเดอร์ประสิทธิภาพโลหะ MPS ให้เปิดเทอร์มินัล พิมพ์ python
และภายใน python shell ให้ป้อน:
import torch
# check if MPS is available:
torch . backends . mps . is_available ()
สิ่งนี้ควรส่งคืน True
MLX
pip install -U mlx
เริ่ม python
อีกครั้งแล้วป้อน:
import mlx . core as mx
print ( mx . __version__ )
สิ่งนี้ควรพิมพ์เวอร์ชันเช่น 0.16.1
(2024-07)
JAX
JAX เป็นตัวเลือกที่ยอดเยี่ยม หากการเพิ่มประสิทธิภาพอัลกอริธึมในระดับต่ำและการวิจัยที่เกินขอบเขตของอัลกอริธึมการเรียนรู้เชิงลึกที่กำหนดไว้คือจุดมุ่งเน้นของคุณ สร้างแบบจำลองตาม numpy
รองรับการสร้างความแตกต่างอัตโนมัติของ 'ทุกสิ่ง' (สำหรับปัญหาการปรับให้เหมาะสม) และรองรับ vectorization และการขนานของอัลกอริธึม python นอกเหนือจากการเรียนรู้เชิงลึก หากต้องการรับฟังก์ชันการทำงานที่คาดหวังจากเฟรมเวิร์กการเรียนรู้เชิงลึกอื่นๆ (เลเยอร์ ฟังก์ชันลูปการฝึกอบรม และ 'ระดับสูง' ที่คล้ายกัน) ให้พิจารณาติดตั้งไลบรารีโครงข่ายประสาทเทียมเพิ่มเติม เช่น: flax
น่าเสียดายที่ไดรเวอร์ JAX
metal เริ่มล้าหลังรุ่น JAX ดังนั้นคุณจึงต้องตรวจสอบตารางความเข้ากันได้เพื่อดูเวอร์ชันที่รองรับของ JAX
ที่ตรงกับไดรเวอร์ jax-metal
ที่มีอยู่
หากต้องการติดตั้ง JAX
เวอร์ชันเฉพาะและ jax-metal
ล่าสุดพร้อม pip
ลงในสภาพแวดล้อมที่ใช้งานอยู่:
# The version 0.4.26 is taken from the compatibility table mentioned above. Update as required.
pip install -U jax==0.4.26 jaxlib==0.4.26 jax-metal
เริ่ม python
(รองรับ 3.12) และป้อน:
import jax
print ( jax . devices ()[ 0 ])
สิ่งนี้ควรแสดง (ในการรันครั้งแรกเท่านั้น):
Platform 'METAL' is experimental and not all JAX functionality may be correctly supported!
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
W0000 00:00:1721975334.430133 43061 mps_client.cc:510] WARNING: JAX Apple GPU support is experimental and not all JAX functionality is correctly supported!
Metal device set to: Apple M2 Max
systemMemory: 32.00 GB
maxCacheSize: 10.67 GB
I0000 00:00:1721975334.446739 43061 service.cc:145] XLA service 0x60000031d100 initialized for platform METAL (this does not guarantee that XLA will be used). Devices:
I0000 00:00:1721975334.446771 43061 service.cc:153] StreamExecutor device (0): Metal, <undefined>
I0000 00:00:1721975334.448269 43061 mps_client.cc:406] Using Simple allocator.
I0000 00:00:1721975334.448308 43061 mps_client.cc:384] XLA backend will use up to 22906109952 bytes on device 0 for SimpleAllocator.
[METAL(id=0)]
METAL:0
คืออุปกรณ์ที่ JAX จะใช้ในการคำนวณ และรองรับ Apple Silicon
หากคุณเห็นข้อผิดพลาดเช่น:
RuntimeError: Unable to initialize backend 'METAL': INVALID_ARGUMENT: Mismatched PJRT plugin PJRT API version (0.47) and framework PJRT API version 0.54). (you may need to uninstall the failing plugin package, or set JAX_PLATFORMS=cpu to skip this backend.)
jax
และ jaxlib
เวอร์ชันของคุณเข้ากันไม่ได้กับ jax-metal
ตรวจสอบตารางความเข้ากันได้สำหรับ jax-metal
และติดตั้งเวอร์ชันที่ต้องการตามที่ระบุในตาราง
tensorflow
Tensorflow สูญเสียการสนับสนุนอย่างรวดเร็ว และแม้แต่ Google ก็ยังไม่เผยแพร่โมเดลใหม่สำหรับ Tensorflow แนะนำให้ใช้แผนการย้ายข้อมูล หากคุณวางแผนที่จะใช้สิ่งนี้
แม้ว่า Tensorflow รองรับ Python 3.12 ตั้งแต่ 2.16 แต่ macOS
tensorflow-metal
accelerator ยังไม่ได้รับการอัปเดตตั้งแต่ปี 2023-09 (สถานะปี 2024-07) และต้องใช้ Python 3.11:
ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนของคุณใช้งานด้วย pip -V
(V ตัวพิมพ์ใหญ่) ซึ่งควรแสดงเส้นทางสำหรับ pip
ภายในโปรเจ็กต์ของคุณ:
<your-path>/HuggingFaceGuidedTourForMac/lib/python3.11/site-packages/pip (python 3.11)
ติดตามhttps://developer.apple.com/metal/tensorflow-plugin/ เราจะติดตั้ง tensorflow
ด้วย pip
ภายใน venv
ของเรา:
pip install -U tensorflow tensorflow-metal
หากต้องการทดสอบว่ามีการติดตั้ง tensorflow
อย่างถูกต้อง ให้เปิดเทอร์มินัล พิมพ์ python
และภายใน python shell ให้ป้อน:
import tensorflow as tf
tf . config . list_physical_devices ( 'GPU' )
คุณควรเห็นสิ่งที่ชอบ:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
ณ จุดนี้ Apple Silicon Mac ของคุณควรพร้อมที่จะรัน pytorch
และอาจเป็นทางเลือก MLX
และ/หรือ JAX
หรือ tensorflow
พร้อมรองรับการเร่งความเร็วด้วยฮาร์ดแวร์ โดยใช้เฟรมเวิร์ก Apple Metal
เพื่อทดสอบสิ่งนี้ คุณสามารถใช้ jupyter lab
เพื่อเรียกใช้โน้ตบุ๊กบางเครื่องได้ หากต้องการติดตั้ง jupyter lab
ขั้นแรกตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนที่คุณต้องการใช้นั้นทำงานอยู่ ( pip -V
) และพิมพ์:
pip install -U jupyterlab ipywidgets
หากคุณติดตั้ง Jupyter เวอร์ชันอื่นไว้ เส้นทางไปยังเวอร์ชัน Jupyter ที่ติดตั้งใหม่ภายใน
venv
มักจะไม่ได้รับการอัปเดตอย่างถูกต้อง ให้เปิดใช้งานสภาพแวดล้อมอีกครั้งเพื่อให้แน่ใจว่ามีการใช้เวอร์ชัน Jupyter ในเครื่องที่ถูกต้อง:
deactivate
source bin/activate
หากต้องการเริ่ม Jupyter lab ให้พิมพ์:
jupyter lab
นี่ควรเปิดหน้าต่างเบราว์เซอร์โดยที่ jupyter lab
ทำงานอยู่ จากนั้นคุณสามารถสร้างโน้ตบุ๊ก Python ใหม่และรันโค้ดเพื่อทดสอบว่า tensorflow
และ pytorch
ทำงานอย่างถูกต้อง:
import torch
print ( "Pytorch version:" , torch . __version__ )
หากการดำเนินการนี้สำเร็จ แสดงว่า Mac ของคุณพร้อมสำหรับการทดลองการเรียนรู้เชิงลึกแล้ว
HuggingFace เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการทดลอง NLP และ Deep Learning มีโมเดลภาษาที่ได้รับการฝึกอบรมล่วงหน้าจำนวนมากและมี API แบบง่ายสำหรับการใช้งาน มันจะช่วยให้เราเริ่มต้นการทดลอง Deep Learning ได้อย่างรวดเร็ว
transformers
จากคำแนะนำในการติดตั้ง Huggingface เราใช้ pip
เพื่อติดตั้ง transformers
:
pip install -U transformers accelerate " huggingface_hub[cli] "
เมื่อทดลองใช้ HuggingFace คุณจะดาวน์โหลดโมเดลขนาดใหญ่ที่จะถูกเก็บไว้ในโฮมไดเร็กตอรี่ของคุณที่:
~/.cache/huggingface/hub
คุณสามารถลบโมเดลเหล่านี้ได้ตลอดเวลาโดยการลบไดเร็กทอรีนี้หรือบางส่วนของเนื้อหา
accelerate
เป็นทางเลือก แต่ใช้เพื่อรันโมเดลขนาดใหญ่บางรุ่น ผลข้างเคียงของการติดตั้ง accelerate
อาจเกิดจากการดาวน์เกรดโมดูลอื่น ๆ เช่น numpy
"huggingface_hub[cli]"
จะติดตั้งเครื่องมือบรรทัดคำสั่ง Huggingface ซึ่งบางครั้งจำเป็นต้องดาวน์โหลดโมเดล (ได้รับอนุญาตบางส่วน) เช่น Llama 3 ภายในไดเร็กทอรี HuggingFaceGuidedTourForMac
และ venv
ที่ใช้งานอยู่ ให้เริ่ม jupyter lab
และโหลดสมุดบันทึก 00-SystemCheck.ipynb
โน้ตบุ๊กจะตรวจสอบเฟรมเวิร์กการเรียนรู้เชิงลึกทั้งหมดก่อนและให้ข้อมูลหากติดตั้งอย่างถูกต้อง หลังจากนั้น Pytorch จะใช้สำหรับการทดลองง่ายๆ
ใช้ <Shift>-Enter
เพื่อเรียกใช้เซลล์ของสมุดบันทึก
หากคุณเริ่ม Jupyter Lab ก่อนที่จะติดตั้ง Huggingface คุณจะต้องรีสตาร์ทเคอร์เนล python ใน Jupyter หรือเพียงรีสตาร์ท Jupyter Lab ไม่เช่นนั้นจะไม่พบไลบรารี Transformers
หลังจากการทดสอบต่าง ๆ ในที่สุดคุณก็ควรเห็นสิ่งนี้:
หากคุณได้รับการจัดประเภทป้ายกำกับเป็น POSITIVE
ด้วยคะแนน 0.99
คุณก็พร้อมที่จะเริ่มทดลองกับ HuggingFace แล้ว!
คุณจะเห็นว่าไลบรารี
HuggingFace
กำลังดาวน์โหลดไบนารี่ขนาดใหญ่ทุกประเภทที่มีข้อมูลโมเดลที่ผ่านการฝึกอบรม ข้อมูลนั้นถูกเก็บไว้ในโฮมไดเร็กตอรี่ของคุณที่:~/.cache/huggingface/hub
คุณสามารถลบโมเดลเหล่านี้ได้ตลอดเวลาโดยการลบไดเร็กทอรีนี้หรือบางส่วนของเนื้อหา
คุณสามารถเปิดสมุดบันทึก 01-ChatBot.ipynb
เพื่อลองใช้แชทบอทที่เรียบง่ายบน Mac ของคุณ
รหัสหลามที่ใช้คือ:
import torch
from transformers import AutoModelForCausalLM , AutoTokenizer
from transformers . utils import logging
# Disable warnings about padding_side that cannot be rectified with current software:
logging . set_verbosity_error ()
model_names = [ "microsoft/DialoGPT-small" , "microsoft/DialoGPT-medium" , "microsoft/DialoGPT-large" ]
use_model_index = 1 # Change 0: small model, 1: medium, 2: large model (requires most resources!)
model_name = model_names [ use_model_index ]
tokenizer = AutoTokenizer . from_pretrained ( model_name ) # , padding_side='left')
model = AutoModelForCausalLM . from_pretrained ( model_name )
# The chat function: received a user input and chat-history and returns the model's reply and chat-history:
def reply ( input_text , history = None ):
# encode the new user input, add the eos_token and return a tensor in Pytorch
new_user_input_ids = tokenizer . encode ( input_text + tokenizer . eos_token , return_tensors = 'pt' )
# append the new user input tokens to the chat history
bot_input_ids = torch . cat ([ history , new_user_input_ids ], dim = - 1 ) if history is not None else new_user_input_ids
# generated a response while limiting the total chat history to 1000 tokens,
chat_history_ids = model . generate ( bot_input_ids , max_length = 1000 , pad_token_id = tokenizer . eos_token_id )
# pretty print last ouput tokens from bot
return tokenizer . decode ( chat_history_ids [:, bot_input_ids . shape [ - 1 ]:][ 0 ], skip_special_tokens = True ), chat_history_ids
history = None
while True :
input_text = input ( "> " )
if input_text in [ "" , "bye" , "quit" , "exit" ]:
break
reply_text , history_new = reply ( input_text , history )
history = history_new
if history . shape [ 1 ] > 80 :
old_shape = history . shape
history = history [:, - 80 :]
print ( f"History cut from { old_shape } to { history . shape } " )
# history_text = tokenizer.decode(history[0])
# print(f"Current history: {history_text}")
print ( f"D_GPT: { reply_text } " )
นี่แสดงแชทบอท (ค่อนข้างจำกัดและซ้ำซาก) โดยใช้โมเดล DialoGPT ของ Microsoft
สิ่งที่ต้องลอง:
use_model_index
ระหว่าง 0..2
คุณสามารถเลือกโมเดลภาษาขนาดเล็ก กลาง หรือใหญ่ได้history_text
สองบรรทัดด้านบนได้~/.cache/huggingface/hub
ข้อมูลที่ขาดหายไปจะถูกดาวน์โหลดใหม่โดยอัตโนมัติเมื่อจำเป็น llama.cpp
ที่ใช้โค้ดการอนุมานที่จำเป็นในการรัน LLM ในโค้ด C++ ที่ได้รับการปรับปรุงประสิทธิภาพขั้นสูง ซึ่งสนับสนุน Metal Accuration ของ Macย่อหน้านี้คือการถอนการติดตั้ง conda ที่ใช้ในคู่มือเวอร์ชันเก่านี้:
brew uninstall miniconda
การแก้ไขเพิ่มเติมคือ (ทั้งหมดไม่ได้ใช้งาน เมื่อลบ miniconda แล้ว):
~/.condarc
(รายการช่อง) และ ~/.conda
~/.zshrc
(หรือ .bashrc
) สำหรับการตั้งค่าเส้นทางและสภาพแวดล้อม~/.cache/huggingface/hub
เพียงลบไดเร็กทอรีออก conda
เป็น pip
และ venv
สำหรับ tensorflow 2.13, Pytorch 2, macOS Sonoma เวอร์ชันล่าสุด ตอนนี้การติดตั้งง่ายขึ้นมากpytorch
v2.0 เปิดตัวแล้ว Channel pytorch-nightly
จึงถูกแทนที่ด้วย pytorch
ในคำแนะนำในการติดตั้ง ไม่จำเป็นต้องใช้ช่อง pytorch-nightly
สำหรับการรองรับ MPS อีกต่อไป