Chạy Điểm chuẩn MLPerf™ Inference v1.0 trên Hệ thống Dell EMC

Blog này là hướng dẫn để chạy điểm chuẩn MLPerf inference v1.0. Thông tin về cách chạy điểm chuẩn suy luận MLPerf v1.0 có sẵn trực tuyến tại các địa điểm khác nhau. Blog này cung cấp tất cả các bước ở một nơi.   

MLPerf là ​​bộ điểm chuẩn đo lường hiệu suất của khối lượng công việc Học máy (ML). Nó tập trung vào các khía cạnh quan trọng nhất của vòng đời ML: đào tạo và suy luận. Để biết thêm thông tin, hãy xem Giới thiệu về MLPerf™ Inference v1.0 Hiệu suất với Máy chủ Dell EMC .

Blog này tập trung vào thiết lập suy luận và mô tả các bước để chạy thử nghiệm suy luận MLPerf phiên bản 1.0 trên các máy chủ Dell Technologies có GPU NVIDIA. Nó cho phép bạn chạy thử nghiệm và tái tạo các kết quả mà chúng tôi đã quan sát được trong HPC và Phòng thí nghiệm đổi mới trí tuệ nhân tạo của chúng tôi. Để biết chi tiết về ngăn xếp phần cứng và phần mềm cho các hệ thống khác nhau trong điểm chuẩn, hãy xem danh sách hệ thống này .

Bộ suy luận MLPerf v1.0 chứa các mô hình sau đây cho điểm chuẩn:

  • mạng lại50 
  • SSD-Resnet34 
  • BERT 
  • DLRM 
  • RNN-T 
  • U-Net 3D

Lưu ý : Các mẫu BERT, DLRM và 3D U-Net có các mục tiêu là 99% (độ chính xác mặc định) và 99,9% (độ chính xác cao).

Blog này mô tả các bước để chạy tất cả các điểm chuẩn này.

1 Bắt đầu

Một hệ thống được kiểm tra bao gồm một tập hợp các tài nguyên phần cứng và phần mềm xác định sẽ được đo lường hiệu suất. Tài nguyên phần cứng có thể bao gồm bộ xử lý, bộ tăng tốc, bộ nhớ, đĩa và kết nối. Tài nguyên phần mềm có thể bao gồm hệ điều hành, trình biên dịch, thư viện và trình điều khiển có ảnh hưởng đáng kể đến thời gian chạy của điểm chuẩn. Trong trường hợp này, hệ thống mà bạn sao chép kho lưu trữ MLPerf và chạy điểm chuẩn được gọi là hệ thống đang thử nghiệm (SUT).

Để lưu trữ, SSD RAID hoặc ổ đĩa NVMe cục bộ được chấp nhận để chạy tất cả các bài kiểm tra phụ mà không bị phạt. Suy luận không có yêu cầu nghiêm ngặt đối với lưu trữ song song nhanh. Tuy nhiên, hệ thống tệp BeeGFS hoặc Lustre, giải pháp lưu trữ PixStor, v.v. giúp tạo nhiều bản sao của bộ dữ liệu lớn.

2 điều kiện tiên quyết

Điều kiện tiên quyết để chạy thử nghiệm suy luận MLPerf v1.0 bao gồm:

  • Một hệ thống x86_64
  • Docker được cài đặt với móc thời gian chạy NVIDIA 
  • GPU NVIDIA dựa trên Ampere (GPU Turing bao gồm hỗ trợ kế thừa, nhưng không còn được duy trì để tối ưu hóa)
  • Trình điều khiển NVIDIA Phiên bản 455.xx trở lên
  • ECC được đặt thành BẬT
    Để đặt ECC thành BẬT, hãy chạy lệnh sau:

    Sudo nvidia-smi --ecc-config=1

3 Chuẩn bị chạy suy luận MLPerf v1.0

Trước khi bạn có thể chạy thử nghiệm suy luận MLPerf v1.0, hãy thực hiện các tác vụ sau để chuẩn bị cho môi trường của bạn.

3.1 Sao chép kho MLPerf 

  1. Sao chép kho lưu trữ vào thư mục chính của bạn hoặc vào một đường dẫn khác có thể chấp nhận được:
     đĩa CD -
     git clone  https://github.com/mlcommons/inference_results_v1.0
  2. Chuyển đến thư mục đã đóng/DellEMC  :
    cd suy luận_results_v1.0/đã đóng/DellEMC
  3. Tạo một thư mục “scratch” với ít nhất 3 TB dung lượng để lưu trữ các mô hình, bộ dữ liệu, dữ liệu đã xử lý trước, v.v.:
    mkdir đầu
  4. Xuất đường dẫn tuyệt đối cho $MLPERF_SCRATCH_PATH bằng thư mục scratch:
    xuất MLPERF_SCRATCH_PATH=/home/user/inference_results_v1.0/closed/DellEMC/scratch

3.2 Thiết lập tập tin cấu hình

Thư mục đã đóng/DellEMC/configs bao gồm một tệp config.json liệt kê các cấu hình cho các máy chủ Dell khác nhau là các hệ thống trong điểm chuẩn MLPerf Inference v1.0. Nếu cần, hãy sửa đổi tệp cấu hình /<benchmark> / <Scenario>/ config.json để bao gồm hệ thống sẽ chạy điểm chuẩn.

Lưu ý : Nếu hệ thống của bạn đã có sẵn trong tệp cấu hình thì không cần thêm cấu hình khác. 

Trong tệp configs /<benchmark> / <Scenario>/ config.json , hãy chọn một cấu hình tương tự và sửa đổi cấu hình đó dựa trên hệ thống hiện tại, phù hợp với số lượng và loại GPU trong hệ thống của bạn.

Đối với blog này, chúng tôi đã sử dụng máy chủ Dell EMC PowerEdge R7525 với một GPU A100 làm ví dụ. Chúng tôi đã chọn R7525_A100-PCIe-40GBx1 làm tên cho hệ thống mới này. Vì hệ thống R7525_A100-PCIe-40GBx1   chưa có trong danh sách hệ thống nên chúng tôi đã thêm cấu hình R7525_A100-PCIe-40GBx1 .

Do hệ thống tham chiếu R7525_A100-PCIe-40GBx2 giống nhất nên chúng tôi đã sửa đổi cấu hình đó và chọn Máy chủ Resnet50 làm điểm chuẩn ví dụ.

Ví dụ sau đây cho thấy cấu hình tham chiếu cho hai GPU cho điểm chuẩn Máy chủ Resnet50 trong tệp configs/resnet50/Server/config.jso n :

"R7525_A100-PCIe-40GBx2": {
         "config_ver": {
         },
         "deque_timeout_us": 2000,
         "gpu_batch_size": 64,
         "gpu_copy_streams": 4,
         "gpu_inference_streams": 3,
         "máy chủ_mục tiêu_qps": 52000,
         "use_cuda_thread_per_device": đúng,
         "use_graphs": đúng
     }, 

Ví dụ này hiển thị cấu hình đã sửa đổi cho một GPU:

"R7525_A100-PCIe-40GBx1": {
         "config_ver": {
         },
         "deque_timeout_us": 2000,
         "gpu_batch_size": 64,
         "gpu_copy_streams": 4,
         "gpu_inference_streams": 3,
         "máy chủ_mục tiêu_qps": 26000,
         "use_cuda_thread_per_device": đúng,
         "use_graphs": đúng
     },

Chúng tôi đã sửa đổi tham số QPS ( server_target_qps ) để phù hợp với số lượng GPU. Tham số server_target_qps có thể mở rộng tuyến tính, do đó, QPS = số lượng GPU x QPS trên mỗi GPU.

Tham số đã sửa đổi là server_target_qps được đặt thành 26000 theo một kỳ vọng về hiệu suất của GPU.

3.3 Thêm hệ thống mới vào danh sách các hệ thống có sẵn

Sau khi bạn thêm hệ thống mới vào tệp config.json như được hiển thị trong phần trước, hãy thêm hệ thống mới vào danh sách các hệ thống khả dụng. Danh sách các hệ thống có sẵn nằm trong tệp ode/common/system_list.py . Mục nhập này cho điểm chuẩn biết rằng có một hệ thống mới và đảm bảo rằng điểm chuẩn chọn đúng cấu hình.

Lưu ý : Nếu hệ thống của bạn đã được thêm vào, thì không cần thêm nó vào tệp code/common/system_list.p y . 

Thêm hệ thống mới vào danh sách các hệ thống khả dụng trong tệp o de/common/system_list.py .

Ở cuối tệp, có một lớp gọi là KnownSystems . Lớp này định nghĩa một danh sách các đối tượng SystemClass  mô tả các hệ thống được hỗ trợ như trong ví dụ sau:

SystemClass(<ID hệ thống>, [<danh sách tên do nvidia-smi báo cáo>], [<ID PCI đã biết của hệ thống này>], <kiến trúc>, [danh sách số lượng gpu được hỗ trợ đã biết>])

Ở đâu:

  • Đối với <system ID> , hãy nhập ID hệ thống mà bạn muốn xác định hệ thống này.
  • Đối với danh sách tên được báo cáo bởi nvidia-smi> , hãy chạy lệnh nvidia-smi -L và sử dụng tên được trả về.
  • Đối với <known PCI IDs of this system> , hãy chạy lệnh sau:
$ CUDA_VISIBLE_ORDER=PCI_BUS_ID nvidia-smi --query-gpu=gpu_name,pci.device_id --format=csv
tên, pci.device_id A100-PCIE-40GB, 0x 20F1 10DE
---

Trường pci.device_id có định dạng 0x <PCI ID> 10DE, trong đó 10DE là ID nhà cung cấp PCI của NVIDIA. Sử dụng bốn chữ số thập lục phân giữa 0x và 10DE làm ID PCI của bạn cho hệ thống. Trong trường hợp này, nó là 20F1.

  • Đối với <architecture> , hãy sử dụng Enum kiến ​​trúc, nằm ở đầu tệp. Trong trường hợp này A100 là kiến ​​trúc Ampe.
  • Đối với <danh sách số lượng GPU đã biết> , hãy nhập số lượng GPU của hệ thống bạn muốn hỗ trợ (nghĩa là [1,2,4] nếu bạn muốn hỗ trợ các biến thể GPU 1x, 2x và 4x của hệ thống này). Vì chúng tôi đã có biến thể 2x trong tệp system_list.py nên chúng tôi chỉ cần thêm số 1 làm mục nhập bổ sung để hỗ trợ hệ thống của chúng tôi.

Lưu ý : Vì đã có cấu hình cho máy chủ PowerEdge R7525 nên chúng tôi đã thêm số 1 cho cấu hình của mình, như minh họa trong ví dụ sau. Nếu hệ thống của bạn không tồn tại trong tệp system_list.p y , cấu hình, hãy thêm toàn bộ cấu hình chứ không chỉ số.

lớp Hệ thống đã biết:
     """
     Danh sách toàn cầu về các hệ thống được hỗ trợ
     """
     # trước khi thêm 1 - cấu hình này chỉ hỗ trợ R7525_A100-PCIe-40GB x2  
     # R7525_A100_PCIE_40GB= SystemClass("R7525_A100-PCIe-40GB", ["A100-PCIe-40GB"], ["20F1"], Architecture.Ampere, [2]) # sau khi bổ sung – cấu hình này hiện hỗ trợ R7525_A100- 
     PCIe- bản 40GB x1 và R7525_A100-PCIe-40GB x2.
     R7525_A100_PCIE_40GB= SystemClass("R7525_A100-PCIe-40GB", ["A100-PCIe-40GB"], ["20F1"], Architecture.Ampere, [ 1 , 2 ] )
     DSS8440_A100_PCIE_40GB = SystemClass("DSS8440_A100-PCIE-40GB", ["A100-PCIE-40GB"], ["20F1"], Architecture.Ampere, [10])
     DSS8440_A40 = SystemClass("DSS8440_A40", ["A40"], ["2235"], Architecture.Ampere, [10])
     R740_A100_PCIe_40GB = SystemClass("R740_A100-PCIe-40GB", ["A100-PCIe-40GB"], ["20F1"], Architecture.Ampere, [3])
     R750xa_A100_PCIE_40GB = SystemClass("R750xa_A100-PCIE-40GB", ["A100-PCIE-40GB"], ["20F1"], Architecture.Ampere, [4])
     ----

Lưu ý : Bạn phải cung cấp các cấu hình khác nhau trong configs/resnet50/Server/config.json cho biến thể x1 và biến thể x2. Trong ví dụ trước, cấu hình R7525_A100-PCIe-40GBx 2 khác với cấu hình R7525_A100-PCIe-40GBx1 .

3.4 Xây dựng Docker image và các thư viện cần thiết

Xây dựng hình ảnh Docker và sau đó khởi chạy vùng chứa tương tác. Sau đó, trong vùng chứa tương tác, hãy xây dựng các thư viện cần thiết để suy luận.

  1. Để xây dựng hình ảnh Docker, hãy chạy lệnh tạo sẵn bên trong thư mục đã đóng/DellEMC Lệnh:
    tạo bản dựng sẵn

    Ví dụ sau đây cho thấy đầu ra mẫu:

    Khởi chạy phiên Docker
    nvidia-docker run --rm -it -w /work \
    -v /home/user/article_inference_v1.0/closed/DellEMC:/work -v /home/user:/mnt//home/user \
    --cap-thêm SYS_ADMIN \
       -e NVIDIA_VISIBLE_DEVICES=0 \
       --shm-size=32gb \
       -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro \
       --security-opt apparmor=unconfined --security-opt seccomp=unconfined \
       --name mlperf-inference-user -h mlperf-inference-user --add-host mlperf-inference-user:127.0.0.1 \
       --user 1002:1002 --net host --device /dev/fuse \
       -v =/home/user/inference_results_v1.0/closed/DellEMC/scratch:/home/user/inference_results_v1.0/closed/DellEMC/scratch \
       -e MLPERF_SCRATCH_PATH=/home/user/inference_results_v1.0/closed/DellEMC/scratch \
       -e HOST_HOSTNAME=node009 
    \
    suy luận mlperf: người dùng        

    Bộ chứa Docker được khởi chạy với tất cả các gói cần thiết đã được cài đặt.

  2. Truy cập thiết bị đầu cuối tương tác trong vùng chứa.
  3. Để xây dựng các thư viện cần thiết cho quá trình suy luận, hãy chạy lệnh make build  bên trong vùng chứa tương tác.Lệnh:
    thực hiện xây dựng

    Ví dụ sau đây cho thấy đầu ra mẫu:

    (mlperf) user@mlperf-inference-user:/work$ make build 
    ……. 
    [ 26%] Liên kết tệp thực thi CXX /work/build/bin/harness_default 
    make[4]: Rời khỏi thư mục '/work/build/harness' 
    make[4]: Rời khỏi thư mục '/work/build/harness' 
    make[4]: Rời khỏi thư mục '/work/build/harness' 
    [ 36%] Target_bert mục tiêu đã xây dựng 
    [ 50%] Harness_default mục tiêu đã tạo 
    [ 55%] Harness_dlrm mục tiêu đã tạo 
    sẵn[4]: Rời khỏi thư mục '/work/build/harness' 
    [ 63%] Harness_triton_mig mục tiêu đã xây 
    dựng[4]: Rời khỏi thư mục '/work/build/harness' 
    [ 81%] Mục tiêu đã xây dựng harness_triton_mig 
    : Rời khỏi thư mục '/work/build/harness' 
    [100%]
    make[3]: Rời khỏi thư mục '/work/build/harness' 
    make[2]: Rời khỏi thư mục '/work/build/harness' 
    Hoàn thành khai thác tòa nhà. 
    make[1]: Rời khỏi thư mục '/work' 
    (mlperf) user@mlperf-inference-user:/work

    Vùng chứa được xây dựng, trong đó bạn có thể chạy các điểm chuẩn.

 3.5 Tải xuống và tiền xử lý dữ liệu và mô hình xác thực

Để chạy suy luận MLPerf v1.0, hãy tải xuống bộ dữ liệu và mô hình, sau đó xử lý trước chúng. MLPerf cung cấp các tập lệnh tải xuống các mô hình được đào tạo. Các tập lệnh cũng tải xuống tập dữ liệu cho các điểm chuẩn khác ngoài Resnet50, DLRM và 3D U-Net. 

Đối với Resnet50, DLRM và 3D U-Net, hãy đăng ký tài khoản rồi tải xuống bộ dữ liệu theo cách thủ công:

Ngoại trừ bộ dữ liệu Resnet50, DLRM và 3D U-Net, hãy chạy các lệnh sau để tải xuống tất cả các mô hình, bộ dữ liệu và sau đó xử lý trước chúng:

$ make download_model # Tải xuống các mô hình và lưu vào $MLPERF_SCRATCH_PATH/models
$ make download_data # Tải bộ dữ liệu xuống và lưu vào $MLPERF_SCRATCH_PATH/data
$ make preprocess_data # Dữ liệu tiền xử lý và lưu vào $MLPERF_SCRATCH_PATH/preprocessed_data

Lưu ý : Các lệnh này tải xuống tất cả các bộ dữ liệu, có thể không bắt buộc nếu mục tiêu là chạy một điểm chuẩn cụ thể. Để chạy một điểm chuẩn cụ thể thay vì tất cả các điểm chuẩn, hãy xem các phần sau để biết thông tin về điểm chuẩn cụ thể.

(mlperf) user@mlperf-inference-user:/work$ tree -d -L 1
.
├── xây dựng
├── mã
├── tuân thủ
├── cấu hình
├── data_maps
├── docker
├── phép đo
├── sức mạnh
├── kết quả
├── kịch bản
└── hệ thống
 
 
 
# thư mục khác nhau như sau
 
├── bản dựng—Nhật ký, dữ liệu được xử lý trước, công cụ, mô hình, plugin, v.v. 
 
├── mã—Mã nguồn cho tất cả các điểm chuẩn
 
├── tuân thủ — Đã qua kiểm tra tuân thủ 
 
├── configs—Cấu hình chạy các điểm chuẩn khác nhau cho các thiết lập hệ thống khác nhau
 
├── data_maps—Bản đồ dữ liệu cho các điểm chuẩn khác nhau
 
├── docker—Các tệp docker để hỗ trợ xây dựng bộ chứa
 
├── các phép đo—Các giá trị đo cho các điểm chuẩn khác nhau
 
├── power—các tệp dành riêng cho việc gửi sức mạnh (chỉ cần thiết cho việc gửi sức mạnh)
 
├── kết quả—Nhật ký kết quả cuối cùng 
 
├── scratch—Bộ nhớ cho các mô hình, dữ liệu được xử lý trước và tập dữ liệu được liên kết tượng trưng với thư mục bản dựng trước đó
 
├── tập lệnh — Tập lệnh hỗ trợ 
 
└── hệ thống—Chi tiết phần cứng và phần mềm của các hệ thống trong điểm chuẩn

4.0 Chạy điểm chuẩn

Sau khi bạn đã thực hiện các tác vụ trước đó để chuẩn bị cho môi trường của mình, hãy chạy bất kỳ điểm chuẩn nào được yêu cầu cho các thử nghiệm của bạn.

Điểm chuẩn Resnet50, SSD-Resnet34 và RNN-T có mục tiêu 99% (độ chính xác mặc định). 

Điểm chuẩn BERT, DLRM và 3D U-Net có mục tiêu 99% (độ chính xác mặc định) và 99,9% (độ chính xác cao). Để biết thông tin về cách chạy các điểm chuẩn này, hãy xem phần Chạy điểm chuẩn mục tiêu có độ chính xác cao bên dưới.   

Nếu bạn đã tải xuống và xử lý trước tất cả các bộ dữ liệu (như đã trình bày trong phần trước), thì không cần phải thực hiện lại. Bỏ qua các bước tải xuống và tiền xử lý trong quy trình cho các điểm chuẩn sau. 

NVIDIA TensorRT là công cụ suy luận cho phần phụ trợ. Nó bao gồm một trình tối ưu hóa suy luận học sâu và thời gian chạy mang lại độ trễ thấp và thông lượng cao cho các ứng dụng học sâu.

4.1 Chạy điểm chuẩn Resnet50

Để thiết lập tập dữ liệu Resnet50 và mô hình để chạy suy luận:

  1. Nếu bạn đã tải xuống và xử lý trước bộ dữ liệu, hãy chuyển sang bước 5.
  2. Tải xuống bộ dữ liệu xác thực bắt buộc ( https://github.com/mlcommons/training/tree/master/image_classification ).
  3. Trích xuất hình ảnh vào $MLPERF_SCRATCH_PATH/data/dataset/
  4. Chạy các lệnh sau:
    tạo download_model BENCHMARKS=resnet50
    tạo preprocess_data BENCHMARKS=resnet50
  5. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo công cụ cho cả kịch bản Ngoại tuyến và Máy chủ 
    
    tạo generate_engines RUN_ARGS="--benchmarks=resnet50 --scenarios=Offline,Server --config_ver=default"
  6. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=resnet50 --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=resnet50 --scenarios=Server --config_ver=default --test_mode=PerformanceOnly"
    
    # chạy điểm chuẩn chính xác 
    
    tạo run_harness RUN_ARGS="--benchmarks=resnet50 --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=resnet50 --scenarios=Server --config_ver=default --test_mode=AccuracyOnly"

    Ví dụ sau đây hiển thị đầu ra cho   chế độ PerformanceOnly  và hiển thị kết quả “Hợp lệ“:

    ======================= Kết quả khai thác hoàn hảo: =========
    R7525_A100-PCIe-40GBx1_TRT-máy chủ mặc định:
          resnet50: Mẫu được lên lịch mỗi giây: 25992,97 và Kết quả là: HỢP LỆ
    ======================= Kết quả chính xác: =========
    R7525_A100-PCIe-40GBx1_TRT-máy chủ mặc định:
         resnet50: Không có kết quả chính xác trong chế độ PerformanceOnly.

4.2 Chạy điểm chuẩn SSD-Resnet34

Để thiết lập tập dữ liệu SSD-Resnet34 và mô hình để chạy suy luận:

  1. Nếu cần, hãy tải xuống và xử lý trước tập dữ liệu:
    tạo download_model BENCHMARKS=ssd-resnet34
    tạo download_data BENCHMARKS=ssd-resnet34 
    tạo preprocess_data BENCHMARKS=ssd-resnet34
  2. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo công cụ cho cả kịch bản Ngoại tuyến và Máy chủ 
    
    tạo generate_engines RUN_ARGS="--benchmarks=ssd-resnet34 --scenarios=Offline,Server --config_ver=default"
  3. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=ssd-resnet34 --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=ssd-resnet34 --scenarios=Server --config_ver=default --test_mode=PerformanceOnly"
     
    # chạy điểm chuẩn chính xác
    
    tạo run_harness RUN_ARGS="--benchmarks=ssd-resnet34 --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=ssd-resnet34 --scenarios=Server --config_ver=default --test_mode=AccuracyOnly"

4.3 Chạy điểm chuẩn RNN-T

Để thiết lập tập dữ liệu RNN-T và mô hình để chạy suy luận:

  1. Nếu cần, hãy tải xuống và xử lý trước tập dữ liệu:
    tạo download_model BENCHMARKS=rnnt
    tạo download_data BENCHMARKS=rnnt 
    tạo preprocess_data BENCHMARKS=rnnt
  2. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo công cụ cho cả kịch bản Ngoại tuyến và Máy chủ
    
    tạo generate_engines RUN_ARGS="--benchmarks=rnnt --scenarios=Offline,Server --config_ver=default"
  3. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=rnnt --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=rnnt --scenarios=Server --config_ver=default --test_mode=PerformanceOnly" 
     
    # chạy điểm chuẩn chính xác 
    
    tạo run_harness RUN_ARGS="--benchmarks=rnnt --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=rnnt --scenarios=Server --config_ver=default --test_mode=AccuracyOnly"         

5 Chạy điểm chuẩn mục tiêu có độ chính xác cao

Điểm chuẩn BERT, DLRM và 3D U-Net có các mục tiêu có độ chính xác cao.

5.1 Chạy điểm chuẩn BERT

Để thiết lập bộ dữ liệu BERT và mô hình để chạy suy luận:

  1. Nếu cần, hãy tải xuống và xử lý trước tập dữ liệu:
    tạo download_model BENCHMARKS=bert
    tạo download_data BENCHMARKS=bert 
    tạo preprocess_data BENCHMARKS=bert
  2. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo công cụ cho cả kịch bản Ngoại tuyến và Máy chủ cũng như cho các mục tiêu mặc định và có độ chính xác cao.
     
    tạo generate_engines RUN_ARGS="--benchmarks=bert --scenarios=Offline,Server --config_ver=default,high_accuracy"
  3. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Server --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Offline --config_ver=high_accuracy --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Server --config_ver=high_accuracy --test_mode=PerformanceOnly" 
     
    # chạy điểm chuẩn chính xác
      
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Server --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Offline --config_ver=high_accuracy --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=bert --scenarios=Server --config_ver=high_accuracy --test_mode=AccuracyOnly"

5.2 Chạy điểm chuẩn DLRM

Để thiết lập tập dữ liệu DLRM và mô hình để chạy suy luận:

  1. Nếu bạn đã tải xuống và xử lý trước bộ dữ liệu, hãy chuyển sang bước 5.
  2. Tải xuống tập dữ liệu Criteo Terabyte .
  3. Trích xuất hình ảnh vào thư mục $MLPERF_SCRATCH_PATH/data/criteo/ .
  4. Chạy các lệnh sau:
    tạo download_model BENCHMARKS=dlrm
    tạo preprocess_data BENCHMARKS=dlrm
  5. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo công cụ cho cả kịch bản Ngoại tuyến và Máy chủ cũng như cho các mục tiêu mặc định và có độ chính xác cao.
    
    tạo generate_engines RUN_ARGS="--benchmarks=dlrm --scenarios=Offline,Server --config_ver=default, high_accuracy"
  6. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Server --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Offline --config_ver=high_accuracy --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Server --config_ver=high_accuracy --test_mode=PerformanceOnly"
     
    # chạy điểm chuẩn chính xác
    
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Server --config_ver=default --test_mode=AccuracyOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Offline --config_ver=high_accuracy --test_mode=AccuracyOnly"
    tạo run_harness RUN_ARGS="--benchmarks=dlrm --scenarios=Server --config_ver=high_accuracy --test_mode=AccuracyOnly"

5.3 Chạy điểm chuẩn 3D U-Net

Lưu ý : Điểm chuẩn này chỉ có kịch bản Ngoại tuyến.

Để thiết lập tập dữ liệu 3D U-Net và mô hình để chạy suy luận:

  1. Nếu bạn đã tải xuống và xử lý trước bộ dữ liệu, hãy chuyển sang bước 5.
  2. Tải xuống dữ liệu thử thách BraTS .
  3. Trích xuất hình ảnh vào thư mục $MLPERF_SCRATCH_PATH/data/BraTS/MICCAI_BraTS_2019_Data_Trainin g .
  4. Chạy các lệnh sau:
    tạo download_model BENCHMARKS=3d-unet
    tạo preprocess_data BENCHMARKS=3d-unet
  5. Tạo các công cụ TensorRT:
    # tạo các công cụ TRT với cấu hình đã chỉ định. Trong trường hợp này, nó tạo ra công cụ cho cả kịch bản Ngoại tuyến và Máy chủ cũng như cho các mục tiêu có độ chính xác cao và mặc định.
    
    tạo generate_engines RUN_ARGS="--benchmarks=3d-unet --scenarios=Offline --config_ver=default,high_accuracy"
  6. Chạy điểm chuẩn:
    # chạy điểm chuẩn hiệu suất
    
    tạo run_harness RUN_ARGS="--benchmarks=3d-unet --scenarios=Offline --config_ver=default --test_mode=PerformanceOnly"
    tạo run_harness RUN_ARGS="--benchmarks=3d-unet --scenarios=Offline --config_ver=high_accuracy --test_mode=PerformanceOnly"
     
    # chạy điểm chuẩn chính xác 
    
    tạo run_harness RUN_ARGS="--benchmarks=3d-unet --scenarios=Offline --config_ver=default --test_mode=AccuracyOnly" 
    tạo run_harness RUN_ARGS="--benchmarks=3d-unet --scenarios=Offline --config_ver=high_accuracy --test_mode=AccuracyOnly"

6 Hạn chế và Thực tiễn Tốt nhất để Chạy MLPerf

Lưu ý những hạn chế sau đây và thực tiễn tốt nhất:

  • Để xây dựng công cụ và chạy điểm chuẩn bằng cách sử dụng một lệnh duy nhất, hãy sử dụng phím tắt make  run RUN_ARGS… . Phím tắt là một sự thay thế hợp lệ cho các lệnh make generate_engines … && make run_harness…
  • Bao gồm cờ –fast với lệnh RUN_ARGS để kiểm tra các lần chạy nhanh bằng cách đặt thời gian chạy thành một phút. Ví dụ:
   make run_harness RUN_ARGS="–-fast --benchmarks=<bmname> --scenarios=<scenario> --config_ver=<cver> --test_mode=PerformanceOnly"

      Điểm chuẩn chạy trong một phút thay vì 10 phút mặc định. 

  • Nếu kết quả của máy chủ là “INVALID”, hãy giảm s erver_target_qps để chạy kịch bản Máy chủ. Nếu các giới hạn về độ trễ không được đáp ứng trong quá trình chạy, kết quả sẽ là “KHÔNG HỢP LỆ”.
  • Nếu kết quả là “INVALID” cho một kịch bản Ngoại tuyến, thì hãy tăng gpu_offline_expected_qps . Tình huống “INVALID” chạy cho Ngoại tuyến xảy ra khi hệ thống có thể cung cấp QPS cao hơn đáng kể so với những gì được cung cấp thông qua cấu hình gpu_offline_expected_qps .
  • Nếu kích thước lô thay đổi, hãy xây dựng lại động cơ.
  • Chỉ các điểm chuẩn BERT, DLRM, 3D-Unet mới hỗ trợ các mục tiêu có độ chính xác cao.
  • 3D-UNet chỉ có kịch bản Offline.

7. Kết luận

Blog này cung cấp các quy trình từng bước để chạy và tái tạo kết quả suy luận MLPerf phiên bản 1.0 trên các máy chủ Dell Technologies có GPU NVIDIA.