Mạng nơron YaLM 100B trong thực tế.

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

Vào cuối tháng 6, Yandex
đã phát hành một mạng nơ-ron với 100 tỷ tham số có tên YaLM 100B cho công chúng . Đây là mạng nơ-ron giống GPT lớn nhất trong miền công cộng. Nó kể về cách họ đã dạy, chỉ ra những ví dụ tốt nhất và khả năng của tế bào thần kinh. Nhưng liệu nó có tốt trong thực tế và áp dụng tại nhà không? Bài báo không nói về điều này, hơn nữa, việc chạy và kiểm tra nó không dễ dàng như vậy, vì cần có khoảng 200 Gb RAM GPU. Nhận xét này về Habré
tiết lộ tình hình một cách chính xác nhất
.

Theo cáo buộc, ở Yandex, tất cả những người thông minh như vậy, và họ thậm chí không đăng Hướng dẫn thông thường. Không có api cho một mô hình lớn, không có một mô hình trung bình hoặc nhỏ được làm sẵn cho người bình thường (trong Google Colab). Không có ví dụ nào được đưa ra về cách thiết lập mô hình, cách tạo văn bản. Chỉ là bài báo chỉ ra một vài sắc thái cho những kẻ mọt sách và thế là xong. Nó là đủ để xem xét kỹ hơn cách ngân hàng đã làm điều đó với chữ “C” và làm tương tự. Tôi có ấn tượng rằng mô hình này chỉ là một trong những thử nghiệm thất bại, thật đáng tiếc khi ném nó vào thùng rác, vì vậy nó đã được đăng trong Nguồn mở để hiển thị những mô hình tuyệt vời mà Yandex tạo ra, và hơn nữa, nó là mã nguồn mở!

Có rất nhiều câu hỏi trên Internet về cách chạy yalm hoặc thậm chí thử trực tuyến, nhưng không có câu trả lời cho điều này. Tôi là một trong số những người dùng đã hỏi những câu hỏi này. Và bắt đầu tìm ra nó. Vì tôi thực sự cần một cách để tạo văn bản cho rô bốt tài chính. Vì vậy, họ có thể dự đoán không chỉ các giá trị mà còn nhận xét về nó bằng văn bản, dựa trên các báo cáo tài chính. Về bản chất, nó sẽ giống như những gì các nhà phân tích tài chính làm, chỉ khác với việc sử dụng trí tuệ nhân tạo. Có hai cách để chạy yalm.
Thuê máy chủ trên đám mâyvới RAM GPU 200 Gb trở lên hoặc hoàn thiện mã và chạy nó bằng cách sử dụng giảm tốc độ sâu bằng 0 (khi GPU xử lý tuần tự một phần của mạng thần kinh và phần còn lại được lưu trữ trong RAM CPU hoặc NVMe). Cái đầu tiên rất đắt, khoảng 2500 rúp mỗi giờ hoặc 1,7 triệu mỗi tháng. Điều thứ hai chưa biết, bởi vì mã trong kho không được cung cấp, chỉ
gợi ý về vấn đề của kho, điều này không khó để thực hiện. Hãy bắt đầu đơn giản.

Hướng dẫn khởi chạy YaLM 100B

1. Chúng tôi cho thuê RAM GPU 200 GB, chẳng hạn ở đây .

Mạng nơron YaLM 100B trong thực tế.

Bạn cần tổng bộ nhớ video ít nhất 200 GB. 8×40 = 320 GB. Chỉ cái này phù hợp. Ít hơn 200 là không thể, nhiều hơn là có thể. Mũi tên cho biết RAM CPU, chúng tôi không nhìn vào nó. Cô ấy có thể là bất cứ ai.

Chúng tôi chỉ ra một đĩa có dung lượng khoảng 300 GB, do đó, với một đĩa dự phòng và tốt nhất là một đĩa nhanh, bởi vì. hàng chục gigabyte dữ liệu sẽ được chuyển đến và đi từ nó.

Mạng nơron YaLM 100B trong thực tế. Khi tạo trong các nguồn, hãy chọn Ubuntu ML (Máy học). Điều này là bắt buộc để các thẻ video được định cấu hình và không cần phải cài đặt thêm.

Sau khi máy chủ được kích hoạt (có thể mất 5-10 phút), kết nối với máy chủ qua ssh hoặc trực tiếp trong bảng điều khiển web trên trang máy chủ và thực hiện lệnh.

nvidia-smi

Kết quả sẽ là một bảng với thẻ video, phiên bản trình điều khiển và cuda. Khoảng như thế này.
Mạng nơron YaLM 100B trong thực tế. Trong tiêu đề phiên bản trình điều khiển và ở đâu. Ở phía bên trái là số thiết bị, ở giữa là kích thước của bộ nhớ thiết bị. Nếu bạn không có thông tin này, thì bạn đã thu thập máy chủ từ nguồn sai. Ubuntu ML (Machine Learnong) là bắt buộc, như được mô tả ở trên.

2. Sao chép kho lưu trữ với YaLM

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

Sao chép vào thư mục chính của bạn để bạn không phải chỉnh sửa cấu hình docker sau đó. Nếu được nhân bản ở một nơi khác,
hãy truy cập vào đây và thêm đường dẫn đến nơi được nhân bản.

3. Tải xuống các điểm kiểm tra (thông tin đào tạo mô hình cơ bản)

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

Quá trình này sẽ mất khoảng một giờ. Để không lãng phí thời gian một cách vô ích, chúng tôi tạo một kết nối ssh mới và song song đó chúng tôi bắt đầu xây dựng một docker container.

4. Cài đặt nvidiadocker 2

Docker thông thường không phù hợp,
cần có nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Xây dựng một thùng chứa cho YaLM

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

Nó cũng khoảng một giờ.

Hack cuộc sống. Bạn có thể tải xuống các trạm kiểm soát, cài đặt docker và xây dựng vùng chứa trên một máy chủ giá rẻ với một card màn hình. Nó sẽ giống nhau trong thời gian, vì vậy bạn có thể tiết kiệm một chút. Sau khi lắp ráp trên một máy chủ giá rẻ, chúng tôi xóa nó và tạo một máy chủ chiến đấu bằng cách sử dụng đĩa từ một máy chủ giá rẻ. Sau đó, bạn sẽ không phải trả quá nhiều thời gian chờ lắp ráp và bơm ra các trạm kiểm soát.

6. Chuẩn bị nội dung

6.1 Các điểm kiểm tra

Sau khi quá trình tải xuống các trạm kiểm soát kết thúc, bạn cần đưa chúng vào cấu hình. Có hai cách, thông số chính xác hoặc chuyển điểm kiểm tra. Mọi nơi dự kiến ​​rằng các điểm kiểm tra sẽ nằm trong thư mục chính của dự án, những gì được tải xuống phải được chuyển từ thư mục tải xuống ở trên. Đang ở trong thư mục yalm thực thi

mv ./download/yalm100b_checkpoint ./

Hoặc thay đổi đường dẫn đến các tệp trong tệp mẫu
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Thẻ video

Chúng tôi kiểm tra xem các thẻ video đã được đặt đúng chưa. Nếu bạn có tám thẻ video, thì không cần thay đổi gì. Nếu số khác nhau, thì chúng tôi thay đổi các dòng này
Mạng nơron YaLM 100B trong thực tế. Ở dòng thứ hai, số thiết bị được sử dụng (bạn có thể xem chúng trong nvidia-smi, mà bạn đã khởi chạy). Trong thứ tư, số lượng của họ.

7. Chạy bộ chứa docker

Đang ở trong thư mục yalm, thực hiện lệnh

sudo bash ./docker/run.sh

Nếu mọi thứ đều ổn, thì bạn sẽ được đưa đến một vùng chứa trong đó bạn cần chuyển đến thư mục yalm trong thư mục chính của mình.

cd ~ / yalm

8. Chạy ví dụ từ YaLM 100B

Chúng tôi đã sẵn sàng để khởi chạy một trong những ví dụ. Chúng được mô tả
ở đây .

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

Hãy kiên nhẫn, vẫn phải đợi thêm 10-15 phút cho đến khi tạo mô hình GPT2 và tải trọng số từ các điểm kiểm tra.
Mạng nơron YaLM 100B trong thực tế.

Khi quá trình xây dựng hoàn tất, MegatronML sẽ nhắc bạn nhập ngữ cảnh để tạo văn bản. Hãy cẩn thận khi bạn nhập. Trong một số trường hợp nhất định, một lỗi xảy ra, chương trình bị treo và bạn cần bắt đầu lắp ráp lại. Do đó, tốt hơn là sử dụng các ví dụ lấy văn bản từ tệp.

9. Kết quả của công việc

Mạng nơron YaLM 100B trong thực tế.
Mạng nơron YaLM 100B trong thực tế. Trông có vẻ thú vị. Tất nhiên, đây chỉ là những ví dụ điển hình. Tôi đã chạy thử nghiệm trên các mẫu khác nhau. Như mong đợi, ngữ cảnh càng tốt, văn bản có ý nghĩa sẽ được tạo ra. Toàn bộ các thế hệ thử nghiệm có thể xem tại các liên kết:

Về giá cả, tôi mất khoảng 9 nghìn rúp cho việc thuê các máy chủ có công suất khác nhau từ đào tạo và từ chuẩn bị cho đến khi tạo ra. Một sự thất vọng đặc biệt là bạn không thể tạo ra mọi thứ ngay lập tức. Phải mất một thời gian rất dài để bắt đầu và văn bản không tạo ra nhanh như chúng tôi mong muốn, với chi phí của máy chủ mỗi giờ.
Mạng nơron YaLM 100B trong thực tế.  

Làm thế nào để chạy YaLM mà không cần RAM 200Gb GPU?

Bạn cần thêm giảm tải bằng không tốc độ sâu vào cấu hình. Đối với những người biết những gì chúng tôi đang nói về, sẽ rất dễ dàng để làm điều đó. Đối với những người khác, đây không phải là một nhiệm vụ tầm thường chút nào. Điều quan trọng cần biết là giảm tải có thể nằm trong RAM CPU hoặc NVMe. Bạn có thể quên NVMe vào lúc này, bởi vì. một lượng rất lớn dữ liệu đang được xử lý và đĩa không thể đối phó với nó. CPU không tải thực hơn. Đúng vậy, để làm được điều này, bạn cần có RAM CPU 200+ Gb trong kho, đây cũng là mức giá không hề rẻ. Và một văn bản sẽ được tạo trong khoảng 20-40 phút, vì vẫn chưa thể ghép song song nó trên hai card màn hình. Như bạn có thể thấy trong ảnh chụp màn hình bên dưới, chỉ có một card màn hình tham gia vào quá trình tạo và sau đó chỉ chiếm một phần tư bộ nhớ. Vẫn còn phải tìm hiểu lý do tại sao tất cả 24 GB không được sử dụng,
Mạng nơron YaLM 100B trong thực tế. Vâng, kết luận lại, tôi sẽ nói rằng có thể chạy ngay cả trên một RTX 3070 TI. Nhưng không có ý nghĩa đặc biệt trong điều này, bởi vì. NVMe sẽ không cho phép bạn xử lý nhanh 150 GB dữ liệu trong trao đổi, vốn nằm trong phần phụ của 96 GB RAM.
Mạng nơron YaLM 100B trong thực tế.

Tổng hợp

Tất nhiên, tôi vẫn sẽ cố gắng tìm ra những con đường khởi chạy tối ưu. Nhưng cho đến nay tôi đã đi đến kết luận rằng YaLM 100b quá đắt / quá chậm đối với nhiệm vụ của tôi. Đối với cùng một số tiền, mọi người sẽ viết nhiều hơn và tốt hơn nhiều. Nhưng tôi nghĩ đó là tạm thời, chúng ta sẽ xem. Nếu bạn cần trợ giúp về việc khởi chạy, thiết lập yalm hoặc muốn xem kết quả trên các ví dụ ngữ cảnh của mình, hãy viết thư hoặc điện tín.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Trả lời
  2. Данила

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

    Trả lời
  3. Дмитрий

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

    Trả lời