โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ

Программирование

ณ สิ้นเดือนมิถุนายน Yandex
ได้เปิดตัว โครงข่ายประสาทเทียมที่มีพารามิเตอร์ 100 พันล้านตัวที่เรียกว่า YaLM 100B สู่สาธารณะ เป็นโครงข่ายประสาทเทียมคล้าย GPT ที่ใหญ่ที่สุดในสาธารณสมบัติ มันบอกเกี่ยวกับวิธีที่พวกเขาสอน แสดงตัวอย่างที่ดีที่สุด และความสามารถของเซลล์ประสาท แต่ในทางปฏิบัติและที่บ้านนั้นดีหรือไม่? บทความนี้ไม่ได้กล่าวถึงเรื่องนี้ ยิ่งกว่านั้น การเรียกใช้และตรวจสอบไม่ใช่เรื่องง่าย เนื่องจากต้องใช้ GPU RAM ประมาณ 200 Gb ความคิดเห็นเกี่ยวกับ Habré
นี้ เผยให้เห็นสถานการณ์ได้แม่นยำที่สุด

ถูกกล่าวหาว่าเป็นคนฉลาดทุกคนในยานเดกซ์และพวกเขาไม่ได้โพสต์ฮาวทูปกติด้วยซ้ำ ไม่มี API สำหรับรุ่นใหญ่ ไม่มีรุ่นกลางหรือรุ่นเล็กแบบแยกส่วนสำเร็จรูปสำหรับคนธรรมดา (ใน Google Colab) ไม่มีตัวอย่างเกี่ยวกับวิธีการตั้งค่าแบบจำลอง วิธีสร้างข้อความ เป็นเพียงว่าบทความระบุความแตกต่างสองสามประการสำหรับผู้สนใจและเท่านั้น การพิจารณาให้ละเอียดยิ่งขึ้นว่าธนาคารทำอย่างไรกับตัวอักษร “C” และทำเช่นเดียวกัน ฉันได้รับความประทับใจว่าโมเดลนี้เป็นเพียงหนึ่งในการทดลองที่ล้มเหลวซึ่งน่าเสียดายที่ต้องทิ้งลงในถังขยะ ดังนั้นจึงโพสต์ในโอเพ่นซอร์สเพื่อแสดงให้เห็นว่าโมเดลที่ยอดเยี่ยมที่ยานเดกซ์สร้างขึ้นคืออะไร และยิ่งกว่านั้น ยังเป็นโอเพ่นซอร์สอีกด้วย!

มีคำถามมากมายบนอินเทอร์เน็ตเกี่ยวกับวิธีเรียกใช้ yalm หรือแม้แต่ลองออนไลน์ แต่ไม่มีคำตอบสำหรับเรื่องนี้ ฉันเป็นหนึ่งในผู้ใช้ที่ถามคำถามเหล่านี้ และตั้งหน้าตั้งตาหามัน เนื่องจากฉันต้องการวิธีสร้างข้อความสำหรับหุ่นยนต์ทางการเงินจริงๆ เพื่อให้พวกเขาสามารถทำนายค่าได้ไม่เพียงเท่านั้น แต่ยังแสดงความคิดเห็นในข้อความตามรายงานทางการเงิน โดยพื้นฐานแล้ว มันจะเหมือนกับสิ่งที่นักวิเคราะห์ทางการเงินทำ ด้วยการใช้ปัญญาประดิษฐ์เท่านั้น มีสองวิธีในการเรียกใช้ yalm
เช่าเซิร์ฟเวอร์ในระบบคลาวด์ด้วย 200+ Gb GPU RAM หรือแก้ไขโค้ดและรันด้วย deepspeed zero offload (เมื่อ GPU ประมวลผลส่วนหนึ่งของเครือข่ายประสาทตามลำดับและส่วนที่เหลือจะถูกเก็บไว้ใน CPU RAM หรือ NVMe) อันแรกมีราคาแพงมากประมาณ 2,500 รูเบิลต่อชั่วโมงหรือ 1.7 ล้านต่อเดือน ที่สองที่ไม่รู้จักเพราะ ไม่ได้ระบุรหัสในที่เก็บ มีเพียง
คำแนะนำเกี่ยวกับปัญหาของที่เก็บ ซึ่งทำได้ไม่ยาก มาเริ่มกันง่ายๆ

คำแนะนำในการเปิดใช้ YaLM 100B

1. เราเช่า GPU RAM 200 GB ตัวอย่างเช่นที่นี่

โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ

คุณต้องมีหน่วยความจำวิดีโอทั้งหมดอย่างน้อย 200 GB 8×40 = 320 GB. ตัวนี้เข้าได้อย่างเดียว น้อยกว่า 200 เป็นไปไม่ได้ มากกว่านั้นเป็นไปได้ ลูกศรบ่งชี้ CPU RAM เราไม่ได้ดูมัน เธอเป็นใครก็ได้

เราระบุดิสก์ประมาณ 300 GB เพื่อให้มีดิสก์สำรองและควรเป็นดิสก์ที่รวดเร็วเพราะ ข้อมูลหลายสิบกิกะไบต์จะถูกโอนเข้าและออกจากข้อมูล

โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติเมื่อสร้างในแหล่งที่มา ให้เลือก Ubuntu ML (การเรียนรู้ของเครื่อง) สิ่งนี้จำเป็นสำหรับการกำหนดค่าการ์ดวิดีโอและไม่จำเป็นต้องติดตั้งเพิ่มเติม

เมื่อสร้างเซิร์ฟเวอร์ โควต้ามีความแตกต่างกัน คุณอาจรู้สึกว่าอุปกรณ์ไม่พร้อมใช้งาน แต่ที่จริงแล้ว คุณเพียงแค่ต้องเพิ่มโควต้าในการตั้งค่า หลังจากเปิดใช้งานเซิร์ฟเวอร์ (อาจใช้เวลา 5-10 นาที) ให้เชื่อมต่อกับเซิร์ฟเวอร์ผ่าน ssh หรือโดยตรงในเว็บคอนโซลบนหน้าเซิร์ฟเวอร์และดำเนินการคำสั่ง

nvidia-smi

ผลลัพธ์ควรเป็นตารางที่มีการ์ดแสดงผล เวอร์ชันไดรเวอร์ และ cuda ประมาณนี้ค่ะ
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติในส่วนหัวของเวอร์ชันไดรเวอร์และตำแหน่ง ทางด้านซ้ายคือหมายเลขเครื่อง ตรงกลางคือขนาดของหน่วยความจำเครื่อง หากคุณไม่มีข้อมูลนี้ แสดงว่าคุณได้รวบรวมเซิร์ฟเวอร์จากแหล่งที่ไม่ถูกต้อง ต้องใช้ Ubuntu ML (Machine Learnong) ตามที่อธิบายไว้ข้างต้น

2. โคลนที่เก็บด้วยYaLM

โคลน sudo git https://github.com/yandex/YaLM-100B/ yalm
cd yalm

โคลนไปยังโฟลเดอร์หลักของคุณ คุณจะได้ไม่ต้องแก้ไขการกำหนดค่านักเทียบท่าในภายหลัง หากโคลนที่อื่น ให้
ไปที่นี่และเพิ่มเส้นทางไปยังตำแหน่งที่โคลน

3. ดาวน์โหลดด่าน (ข้อมูลการฝึกโมเดลพื้นฐาน)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

จะใช้เวลาประมาณหนึ่งชั่วโมง เพื่อไม่ให้เสียเวลาเปล่า ๆ เราสร้างการเชื่อมต่อ ssh ใหม่และพร้อมกัน เราเริ่มสร้างคอนเทนเนอร์นักเทียบท่า

4. ติดตั้งnvidiaนักเทียบท่า2

นักเทียบท่าปกติไม่เหมาะสม
จำเป็นต้อง มี
nvidia-docker2 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. การสร้างคอนเทนเนอร์สำหรับ YaLM

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

มันยังประมาณหนึ่งชั่วโมง

แฮ็คชีวิต คุณสามารถดาวน์โหลดจุดตรวจ ติดตั้งนักเทียบท่า และสร้างคอนเทนเนอร์บนเซิร์ฟเวอร์ราคาถูกด้วยการ์ดแสดงผลเพียงใบเดียว มันจะเหมือนกันในเวลาดังนั้นคุณสามารถประหยัดได้เล็กน้อย หลังจากประกอบบนเซิร์ฟเวอร์ราคาถูก เราจะลบมัน และสร้างเซิร์ฟเวอร์การต่อสู้โดยใช้ดิสก์จากเซิร์ฟเวอร์ราคาถูก แล้วคุณจะไม่ต้องเสียค่าเสียเวลารอการชุมนุมและสูบน้ำออกด่านตรวจมากเกินไป

6. เตรียมเนื้อหา

6.1 จุดตรวจ

หลังจากการดาวน์โหลดจุดตรวจสิ้นสุดลง คุณจะต้องส่งมันเข้าไปในการกำหนดค่า มีสองวิธีคือแก้ไขพารามิเตอร์หรือจุดตรวจการโอน ทุกที่คาดว่าจุดตรวจจะอยู่ในไดเรกทอรีหลักของโครงการตามลำดับสิ่งที่ดาวน์โหลดจะต้องโอนจากโฟลเดอร์ดาวน์โหลดด้านบน อยู่ในโฟลเดอร์ yalm ดำเนินการ

mv ./download/yalm100b_checkpoint ./

หรือเปลี่ยนเส้นทางไปยังไฟล์ในไฟล์ตัวอย่าง
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 การ์ดจอ

เราตรวจสอบว่าการ์ดแสดงผลได้รับการตั้งค่าอย่างถูกต้อง หากคุณมีการ์ดวิดีโอแปดตัว ก็ไม่จำเป็นต้องเปลี่ยนอะไร หากตัวเลขต่างกัน เราก็เปลี่ยนบรรทัดเหล่านี้
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติในบรรทัดที่สอง ตัวเลขของอุปกรณ์ที่ใช้ (คุณสามารถดูได้ใน nvidia-smi ซึ่งคุณเปิดตัวไปแล้ว) ในสี่จำนวนของพวกเขา

7. เรียกใช้คอนเทนเนอร์นักเทียบท่า

อยู่ในโฟลเดอร์ yalm ให้รันคำสั่ง

sudo bash ./docker/run.sh

หากทุกอย่างเรียบร้อย คุณจะถูกนำไปที่คอนเทนเนอร์ที่คุณต้องไปที่โฟลเดอร์ yalm ในโฮมไดเร็กตอรี่ของคุณ

cd ~/yalm

8. เรียกใช้ตัวอย่างจาก YaLM 100B

เราพร้อมที่จะเปิดตัวหนึ่งในตัวอย่าง มีการอธิบายไว้
ที่
นี่

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

อดทนรออีก 10-15 นาทีจนกว่าจะสร้างแบบจำลอง GPT และโหลดตุ้มน้ำหนักจากจุดตรวจ
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ

เมื่อการสร้างเสร็จสิ้น MegatronML จะแจ้งให้คุณป้อนบริบทเพื่อสร้างข้อความ ระวังเมื่อคุณพิมพ์ ในบางกรณี เกิดข้อผิดพลาด โปรแกรมขัดข้อง และคุณจำเป็นต้องเริ่มแอสเซมบลีอีกครั้ง ดังนั้นจึงควรใช้ตัวอย่างที่ดึงข้อความจากไฟล์

9. ผลงาน

โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติดูน่าสนใจ แน่นอนว่านี่เป็นเพียงตัวอย่างที่ดีเท่านั้น ฉันทำการทดสอบกับตัวอย่างต่างๆ ตามที่คาดไว้ ยิ่งบริบทดีขึ้นเท่าใด ข้อความที่มีความหมายก็จะยิ่งถูกสร้างขึ้น สามารถดูชุดเต็มของรุ่นทดลองได้ที่ลิงค์:

สำหรับราคานี้ ฉันเสียค่าใช้จ่ายประมาณ 9,000 รูเบิลสำหรับการเช่าเซิร์ฟเวอร์ที่มีความสามารถต่างกันตั้งแต่การฝึกอบรมและตั้งแต่การเตรียมการจนถึงรุ่น ความผิดหวังอย่างหนึ่งคือคุณไม่สามารถสร้างทุกอย่างได้ทันที ใช้เวลานานมากในการเริ่มต้นและข้อความไม่สามารถสร้างได้เร็วเท่าที่เราต้องการ เนื่องจากต้นทุนของเซิร์ฟเวอร์ต่อชั่วโมง
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ 

จะรัน YaLM โดยไม่มี RAM 200Gb GPU ได้อย่างไร

คุณต้องเพิ่ม deepspeed zero offload ให้กับการกำหนดค่า สำหรับผู้ที่รู้ว่าเรากำลังพูดถึงอะไรมันจะง่ายมากที่จะทำ สำหรับคนอื่น ๆ นี่ไม่ใช่งานเล็กน้อยเลย สิ่งสำคัญคือต้องรู้ว่าออฟโหลดสามารถเป็นได้ทั้งใน CPU RAM หรือ NVMe คุณสามารถลืมเกี่ยวกับ NVMe ได้ในขณะนี้เพราะ กำลังประมวลผลข้อมูลจำนวนมากและดิสก์ไม่สามารถรับมือได้ Zero offload CPU เป็นจริงมากขึ้น จริงอยู่ สำหรับสิ่งนี้ คุณต้องมี CPU RAM 200+ Gb ในสต็อก ซึ่งก็ไม่ถูกเช่นกัน และข้อความหนึ่งจะถูกสร้างขึ้นประมาณ 20-40 นาที เนื่องจากยังไม่สามารถขนานกับการ์ดวิดีโอสองใบได้ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง มีเพียงการ์ดแสดงผลหนึ่งรุ่นเท่านั้นที่มีส่วนเกี่ยวข้องกับรุ่นดังกล่าว และมีเพียงหนึ่งในสี่ของหน่วยความจำเท่านั้น คงต้องดูกันต่อไปว่าทำไมไม่ใช้ 24 GB ทั้งหมด
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติโดยสรุปแล้วฉันจะบอกว่ามันเป็นไปได้ที่จะทำงานแม้ใน RTX 3070 TI ตัวเดียว แต่ไม่มีความหมายเฉพาะในเรื่องนี้เพราะ NVMe จะไม่อนุญาตให้คุณประมวลผลข้อมูล 150 GB อย่างรวดเร็วในการสลับ ซึ่งอยู่ในส่วนท้ายของ RAM 96 GB
โครงข่ายประสาทเทียม YaLM 100B ในทางปฏิบัติ

สรุป

แน่นอน ฉันยังคงพยายามค้นหาเส้นทางการเปิดตัวที่เหมาะสมที่สุด แต่จนถึงตอนนี้ ฉันได้ข้อสรุปว่า YaLM 100b แพงเกินไป/ช้าเกินไปสำหรับงานของฉัน สำหรับเงินเท่าๆ กัน ผู้คนจะเขียนมากขึ้นและดีขึ้นมาก แต่ฉันคิดว่ามันชั่วคราวเราจะเห็น หากคุณต้องการความช่วยเหลือเกี่ยวกับการเปิดตัว การตั้งค่า yalm หรือต้องการดูผลลัพธ์ในตัวอย่างบริบทของคุณ ให้เขียนไปที่อีเมลหรือโทรเลข

pskucherov
Rate author

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    ตอบกลับ
  2. Данила

    Крутая статья! Спасибо автору!

    ตอบกลับ
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    ตอบกลับ