Chuyển đến nội dung

Đào tạo trên đám mây

Nền tảng Ultralytics Cloud Training cung cấp tính năng huấn luyện chỉ với một cú nhấp chuột trên các GPU đám mây, giúp việc huấn luyện mô hình trở nên dễ dàng mà không cần thiết lập phức tạp. Huấn luyện các mô hình YOLO với luồng số liệu thời gian thực và tính năng tự động lưu điểm kiểm tra.

graph LR
    A[Configure] --> B[Start Training]
    B --> C[Provision GPU]
    C --> D[Download Dataset]
    D --> E[Train]
    E --> F[Stream Metrics]
    F --> G[Save Checkpoints]
    G --> H[Complete]

    style A fill:#2196F3,color:#fff
    style B fill:#FF9800,color:#fff
    style E fill:#9C27B0,color:#fff
    style H fill:#4CAF50,color:#fff

Đối thoại đào tạo

Bắt đầu quá trình huấn luyện từ giao diện người dùng của nền tảng bằng cách nhấp vào "Tạo mô hình mới" trên bất kỳ trang dự án nào (hoặc trang " Huấn luyện từ tập dữ liệu"). Hộp thoại huấn luyện có hai tab: "Huấn luyện trên đám mây""Huấn luyện cục bộ" .

Ultralytics Hộp thoại đào tạo nền tảng Tab đám mây

Bước 1: Chọn mẫu cơ bản

Hãy chọn giữa các mô hình chính thức của YOLO26 hoặc các mô hình do chính bạn huấn luyện:

Danh mụcMô tả
Chính thứcTất cả 25 mẫu YOLO26 (5 kích cỡ x 5 chức năng)
Mô hình của bạnCác mô hình hoàn chỉnh của bạn để tinh chỉnh

Các mô hình chính thức được sắp xếp theo loại tác vụ ( Phát hiện , Phân đoạn , Tư thế , OBB , Phân loại ) với kích thước từ nano đến xlarge.

Bước 2: Chọn tập dữ liệu

Chọn một tập dữ liệu để huấn luyện (xem Tập dữ liệu ):

Tùy chọnMô tả
Chính thứcCác bộ dữ liệu được tuyển chọn từ Ultralytics
Tập dữ liệu của bạnCác tập dữ liệu bạn đã tải lên

Yêu cầu bộ dữ liệu

Các tập dữ liệu phải ở dạng ready Trạng thái bao gồm ít nhất 1 ảnh trong tập huấn luyện, 1 ảnh trong tập xác thực hoặc kiểm tra, và ít nhất 1 ảnh đã được gắn nhãn.

Không khớp nhiệm vụ

Cảnh báo về sự không khớp tác vụ sẽ xuất hiện nếu tác vụ mô hình (ví dụ: detect ) không khớp với nhiệm vụ của tập dữ liệu (ví dụ: segment Quá trình huấn luyện sẽ thất bại nếu bạn tiếp tục với các tác vụ không phù hợp. Hãy đảm bảo cả mô hình và tập dữ liệu đều sử dụng cùng loại tác vụ, như được mô tả trong hướng dẫn tác vụ .

Bước 3: Cấu hình tham số

Thiết lập các thông số huấn luyện cốt lõi:

Tham sốMô tảMặc định
Số epochSố lần lặp huấn luyện100
Kích thước lô (Batch Size)Số mẫu mỗi lần lặp16
Kích thước hình ảnhĐộ phân giải đầu vào (chọn các tùy chọn 320/416/512/640/1280 trong menu thả xuống, hoặc 32-4096 trong trình chỉnh sửa YAML)640
Tên chạyTên tùy chọn cho lần chạy huấn luyệntự động

Bước 4: Cài đặt nâng cao (Tùy chọn)

Mở rộng Cài đặt nâng cao để truy cập trình chỉnh sửa tham số dựa trên YAML đầy đủ với hơn 40 tham số huấn luyện được sắp xếp theo nhóm (xem tài liệu tham khảo cấu hình ):

NhómTham số
Tốc độ học (Learning Rate)lr0, lrf, momentum, weight_decay, warmup_epochs, warmup_momentum, warmup_bias_lr
Trình tối ưu hóaSGD , MuSGD, Adam , AdamW , NAdam, RAdam, RMSProp, Adamax
Giảm cânhộp, cls, dfl, tư thế, kobj, làm mịn nhãn
Tăng cường màu sắchsv_h, hsv_s, hsv_v
Tăng hình học.độ, dịch chuyển, tỷ lệ, biến dạng, phối cảnh
Tăng cường khả năng lật và trộn.flipud, fliplr, khảm, mixup, copy_paste
Kiểm soát huấn luyệnsự kiên nhẫn, hạt giống, xác định, amp, cos_lr, close_mosaic, save_period
Bộ dữ liệuphân số, đóng băng, single_cls, rect, multi_scale, resume

Các tham số phụ thuộc vào nhiệm vụ (ví dụ: copy_paste chỉ hiển thị cho segment nhiệm vụ, pose/kobj (chỉ dành cho các tác vụ tạo dáng). A Đã sửa đổi Biểu tượng cảnh báo sẽ xuất hiện khi các giá trị khác với giá trị mặc định, và bạn có thể đặt lại tất cả về giá trị mặc định bằng nút đặt lại.

Ví dụ: Tối ưu hóa việc tăng cường dữ liệu cho các tập dữ liệu nhỏ

For small datasets (<1000 images), increase augmentation to reduce overfitting:

mosaic: 1.0       # Keep mosaic on
mixup: 0.3        # Add mixup blending
copy_paste: 0.3   # Add copy-paste (segment only)
fliplr: 0.5       # Horizontal flip
degrees: 10.0     # Slight rotation
scale: 0.9        # Aggressive scaling

Bước 5: Chọn GPU (Tab đám mây)

Hãy chọn của bạn GPU từ Ultralytics Đám mây:

Ultralytics Đối thoại đào tạo nền tảng Gpu Bộ chọn và chi phí

GPUVRAMChi phí/Giờ
RTX 2000 Ada16 GB$0.24
RTX A450020 GB$0.24
RTX A500024 GB$0.26
RTX 4000 Ada20 GB$0.38
L424 GB$0.39
A4048 GB$0.40
RTX 309024 GB$0.46
RTX A600048 GB$0.49
RTX 409024 GB$0.59
RTX 6000 Ada48 GB$0.77
L40S48 GB$0.86
RTX 509032 GB$0.89
L4048 GB$0.99
A100 PCIe80 GB$1.39
A100 SXM80 GB$1.49
RTX PRO 600096 GB$1.89
H100 PCIe80 GB$2.39
H100 SXM80 GB$2.69
H100 NVL94 GB$3.07
H200 NVL143 GB$3.39
H200 SXM141 GB$3.59
B200180 GB$4.99

Lựa chọn GPU

  • RTX PRO 6000 : Thế hệ Blackwell 96 GB, cấu hình mặc định được khuyến nghị cho hầu hết các công việc.
  • A100 SXM : Cần thiết cho các lô sản xuất lớn hoặc các mô hình lớn.
  • H100/H200 : Hiệu suất tối đa cho việc đào tạo cần tốc độ cao.
  • B200 : NVIDIA Kiến trúc Blackwell dành cho các khối lượng công việc tiên tiến

Hộp thoại hiển thị số dư hiện tại của bạn và nút Nạp tiền . Chi phí và thời gian ước tính được tính toán dựa trên cấu hình của bạn (kích thước mô hình, hình ảnh tập dữ liệu, số epoch, v.v.), GPU tốc độ).

Bước 6: Bắt đầu huấn luyện

Nhấp vào Bắt đầu huấn luyện để khởi chạy tác vụ của bạn. Nền tảng sẽ:

  1. Cấp phát một phiên bản GPU
  2. Tải xuống tập dữ liệu của bạn
  3. Bắt đầu huấn luyện
  4. Truyền trực tiếp các chỉ số theo thời gian thực

Chu kỳ công việc đào tạo

Quá trình đào tạo diễn ra qua các giai đoạn sau:

Trạng tháiMô tả
Chưa giải quyếtCông việc đã được gửi, đang chờ xử lý. GPU phân bổ
Bắt đầuGPU Đã cấp phép, đang tải xuống tập dữ liệu và mô hình
Đang chạyQuá trình huấn luyện đang diễn ra, số liệu được cập nhật theo thời gian thực.
Hoàn thànhKhóa huấn luyện đã hoàn thành thành công.
Thất bạiQuá trình huấn luyện thất bại (xem nhật ký hệ thống để biết chi tiết)
Đã hủyBuổi đào tạo đã bị người dùng hủy bỏ.

Tín dụng miễn phí

Tài khoản mới sẽ nhận được tiền thưởng khi đăng ký — 5 đô la cho email cá nhân và 25 đô la cho email công ty. Kiểm tra số dư của bạn trong Cài đặt > Thanh toán.

Ultralytics Tiến độ đào tạo nền tảng với biểu đồ

Giám sát huấn luyện

Xem tiến trình huấn luyện theo thời gian thực trên tab Huấn luyện của trang mô hình:

Tab phụ Biểu đồ

Ultralytics Đào tạo mô hình nền tảng Biểu đồ trực tiếp

Chỉ sốMô tả
Mất mátSai số huấn luyện và kiểm định
mAPGiá trị trung bình của Average Precision
Độ chính xácDự đoán dương tính chính xác
Độ nhớ lạiCác sự thật cơ bản được detect

Tab phụ Bảng điều khiển

Hiển thị dữ liệu trực tiếp trên bảng điều khiển với hỗ trợ màu ANSI, thanh tiến trình và chức năng phát hiện lỗi.

Tab phụ Hệ thống

Thời gian thực GPU mức sử dụng, bộ nhớ, nhiệt độ, CPU và mức sử dụng ổ đĩa.

Điểm kiểm tra

Các điểm kiểm tra được lưu tự động:

  • Mỗi epoch: Các trọng số mới nhất được lưu
  • Mô hình tốt nhất: Điểm kiểm tra có mAP cao nhất được giữ lại
  • Mô hình cuối cùng: Các trọng số khi quá trình huấn luyện hoàn tất

Hủy Huấn luyện

Nhấp vào nút Hủy huấn luyện trên trang mô hình để dừng một tác vụ đang chạy:

  • Phiên bản điện toán đã bị chấm dứt.
  • Tín dụng ngừng bị tính phí
  • Các điểm lưu đã đạt được cho đến thời điểm đó sẽ được giữ nguyên.

Huấn luyện từ xa

graph LR
    A[Local GPU] --> B[Train]
    B --> C[ultralytics Package]
    C --> D[Stream Metrics]
    D --> E[Platform Dashboard]

    style A fill:#FF9800,color:#fff
    style C fill:#2196F3,color:#fff
    style E fill:#4CAF50,color:#fff

Thực hiện huấn luyện trên phần cứng của riêng bạn đồng thời truyền dữ liệu số liệu lên nền tảng.

Yêu cầu phiên bản gói

Việc tích hợp nền tảng yêu cầu ultralytics bản >= 8.4.14 . Các phiên bản thấp hơn sẽ KHÔNG hoạt động với nền tảng.

pip install -U ultralytics

Thiết lập khóa API

  1. Đi đến Settings > Profile (Phần Khóa API)
  2. Tạo khóa mới (hoặc nền tảng sẽ tự động tạo khóa khi bạn mở tab Đào tạo cục bộ).
  3. Đặt biến môi trường:
export ULTRALYTICS_API_KEY="your_api_key"

Huấn luyện với truyền phát

Sử dụng projectname các tham số để truyền các chỉ số:

yolo train model=yolo26n.pt data=coco.yaml epochs=100 \
  project=username/my-project name=experiment-1
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco.yaml",
    epochs=100,
    project="username/my-project",
    name="experiment-1",
)

Tab Huấn luyện cục bộ trong hộp thoại huấn luyện hiển thị một lệnh được cấu hình sẵn với khóa API của bạn, các tham số đã chọn và các đối số nâng cao đi kèm.

Sử dụng tập dữ liệu nền tảng

Huấn luyện với các tập dữ liệu được lưu trữ trên nền tảng bằng cách sử dụng... ul:// Định dạng URI:

yolo train model=yolo26n.pt data=ul://username/datasets/my-dataset epochs=100 \
  project=username/my-project name=exp1
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="ul://username/datasets/my-dataset",
    epochs=100,
    project="username/my-project",
    name="exp1",
)

Hàm ul:// Định dạng URI tự động tải xuống và cấu hình tập dữ liệu của bạn. Mô hình được tự động liên kết với tập dữ liệu trên nền tảng (xem Sử dụng tập dữ liệu nền tảng).

Thanh toán

Chi phí huấn luyện dựa trên mức sử dụng GPU:

Ước tính chi phí

Trước khi khóa đào tạo bắt đầu, nền tảng này ước tính tổng chi phí bằng cách:

  1. Ước tính số giây mỗi epoch dựa trên kích thước tập dữ liệu, độ phức tạp của mô hình, kích thước ảnh, kích thước batch, và GPU tốc độ
  2. Tính tổng thời gian huấn luyện bằng cách nhân số giây mỗi epoch với số lượng epoch, sau đó cộng thêm thời gian khởi động.
  3. Tính toán chi phí ước tính bằng cách lấy tổng số giờ đào tạo nhân với... GPU mức lương theo giờ của

Các yếu tố ảnh hưởng đến chi phí:

Nhân tốSự va chạm
Kích thước tập dữ liệuCàng nhiều ảnh thì thời gian huấn luyện càng lâu (mức cơ bản: khoảng 2,8 giây tính toán cho mỗi 1000 ảnh trên RTX 4090)
Kích thước mô hìnhCác mô hình lớn hơn (m, l, x) huấn luyện chậm hơn so với (n, s).
Số lượng kỷ nguyênHệ số nhân trực tiếp lên thời gian đào tạo
Kích thước hình ảnhKích thước ảnh lớn hơn sẽ làm tăng khả năng tính toán: 320px=0.25x, 640px=1.0x (mức cơ bản), 1280px=4.0x
Kích thước lô (Batch Size)Các mẻ sản xuất lớn hơn sẽ hiệu quả hơn (mẻ 32 = ~0,85 lần thời gian, mẻ 8 = ~1,2 lần thời gian so với mẻ 16 tiêu chuẩn).
GPU Tốc độGPU nhanh hơn giúp giảm thời gian huấn luyện (ví dụ: H100 SXM nhanh hơn khoảng 3,4 lần so với RTX 4090).
Chi phí khởi nghiệpQuá trình khởi tạo, tải dữ liệu và làm nóng có thể mất tối đa 5 phút (thời gian có thể thay đổi tùy thuộc vào kích thước tập dữ liệu).

Ví dụ về chi phí

Ước tính

Ước tính chi phí chỉ mang tính chất gần đúng và phụ thuộc vào nhiều yếu tố. Hộp thoại đào tạo hiển thị ước tính theo thời gian thực trước khi bạn bắt đầu đào tạo.

Kịch bảnGPUChi phí ước tính
500 ảnh, YOLO26n, 50 chu kỳRTX 4090Khoảng 0,50 đô la
1000 ảnh, YOLO26n, 100 chu kỳRTX PRO 6000~5 đô la
5000 hình ảnh, YOLO26s, 100 epochsH100 SXM~23 đô la

Quy trình lập hóa đơn

graph LR
    A[Estimate Cost] --> B[Balance Check]
    B --> C[Train]
    C --> D[Charge Actual Runtime]

    style A fill:#2196F3,color:#fff
    style B fill:#FF9800,color:#fff
    style C fill:#9C27B0,color:#fff
    style D fill:#4CAF50,color:#fff

Quy trình thanh toán đào tạo trên nền tảng đám mây:

  1. Ước tính : Chi phí được tính toán trước khi khóa đào tạo bắt đầu.
  2. Kiểm tra số dư : Số dư tín dụng hiện có sẽ được kiểm tra trước khi khởi chạy.
  3. Đào tạo : Công việc chạy trên máy tính đã chọn
  4. Chi phí : Giá cuối cùng được tính dựa trên thời gian thực tế sử dụng.

Bảo vệ người tiêu dùng

Hệ thống tính phí theo dõi mức sử dụng điện toán thực tế, bao gồm cả các lần chạy dở dang bị hủy bỏ.

Phương thức thanh toán

Phương thứcMô tả
Số dư tài khoảnSố dư nạp trước
Thanh toán theo công việcTính phí khi hoàn thành công việc

Số dư tối thiểu

Để bắt đầu khóa đào tạo, cần có số dư khả dụng dương và đủ tín dụng để trang trải chi phí ước tính của công việc.

Xem chi phí huấn luyện

Sau khi huấn luyện, xem chi phí chi tiết trong tab Thanh toán:

  • Phân tích chi phí theo từng epoch
  • Tổng thời gian GPU
  • Tải báo cáo chi phí

Ultralytics Chi tiết thanh toán khóa đào tạo nền tảng

Mẹo huấn luyện

Chọn kích thước mô hình phù hợp

Mô hìnhTham sốTốt nhất cho
YOLO26n2.4MThiết bị biên, thời gian thực
YOLO26s9.5MCân bằng tốc độ/độ chính xác
YOLO26m20.4MĐộ chính xác cao hơn
YOLO26l24.8MĐộ chính xác cấp sản xuất
YOLO26x55.7MĐộ chính xác tối đa

Tối ưu thời gian huấn luyện

Các chiến lược tiết kiệm chi phí

  1. Bắt đầu từ quy mô nhỏ : Thử nghiệm với 10-20 epoch với ngân sách hạn chế. GPU để xác minh tập dữ liệu và cấu hình của bạn hoạt động.
  2. Hãy sử dụng GPU phù hợp : RTX PRO 6000 xử lý tốt hầu hết các tác vụ.
  3. Xác thực tập dữ liệu : Khắc phục các vấn đề về gắn nhãn trước khi đầu tư vào huấn luyện.
  4. Theo dõi sớm : Hủy bỏ quá trình huấn luyện nếu mức thua lỗ chững lại — bạn chỉ phải trả tiền cho thời gian tính toán đã sử dụng.

Khắc phục sự cố

Vấn đềGiải pháp
Huấn luyện bị kẹt ở 0%Kiểm tra định dạng tập dữ liệu, thử lại
Hết bộ nhớGiảm kích thước batch hoặc sử dụng GPU lớn hơn
Độ chính xác kémTăng số epoch, kiểm tra chất lượng dữ liệu
Huấn luyện chậmCân nhắc GPU nhanh hơn
Lỗi không khớp tác vụĐảm bảo các nhiệm vụ của mô hình và tập dữ liệu khớp nhau.

Câu hỏi thường gặp

Thời gian huấn luyện mất bao lâu?

Thời gian huấn luyện phụ thuộc vào:

  • Kích thước tập dữ liệu
  • Kích thước mô hình
  • Số lượng epoch
  • GPU được chọn

Thời gian điển hình (1000 ảnh, 100 epoch):

Mô hìnhRTX PRO 6000A100
YOLO26n20 phút20 phút
YOLO26m40 phút40 phút
YOLO26x80 phút80 phút

Có thể huấn luyện qua đêm không?

Có, quá trình huấn luyện sẽ tiếp tục cho đến khi hoàn thành. Bạn sẽ nhận được thông báo khi quá trình huấn luyện kết thúc. Đảm bảo tài khoản của bạn có đủ số dư cho việc huấn luyện dựa trên epoch.

Điều gì xảy ra nếu tôi hết tín dụng?

Quá trình huấn luyện tạm dừng vào cuối epoch hiện tại. Điểm kiểm tra của bạn được lưu và bạn có thể tiếp tục sau khi nạp thêm tín dụng.

Có thể sử dụng các đối số huấn luyện tùy chỉnh không?

Vâng, hãy mở rộng phần Cài đặt nâng cao trong hộp thoại huấn luyện để truy cập trình chỉnh sửa YAML với hơn 40 tham số có thể cấu hình. Các giá trị không mặc định được bao gồm trong cả lệnh huấn luyện trên đám mây và cục bộ.

Tôi có thể huấn luyện từ trang dữ liệu được không?

Đúng vậy, nút "Train" trên các trang dữ liệu sẽ mở hộp thoại huấn luyện với tập dữ liệu đã được chọn sẵn và khóa. Sau đó, bạn chọn một dự án và mô hình để bắt đầu huấn luyện.

Tham khảo tham số huấn luyện

Tham sốLoạiMặc địnhPhạm viMô tả
epochsint1001-10000Số epoch huấn luyện
batchint161-512Kích thước batch
imgszint64032-4096Kích thước ảnh đầu vào
patienceint1001-1000Ngưỡng dừng sớm
seedint00-2147483647Hạt giống ngẫu nhiên để đảm bảo tính khả thi
deterministicbooleanĐÚNG VẬY-Chế độ huấn luyện xác định
ampbooleanĐÚNG VẬY-Độ chính xác hỗn hợp tự động
close_mosaicint100-50Vô hiệu hóa chế độ ghép ảnh trong N kỷ nguyên cuối cùng.
save_periodint-1-1-100Lưu điểm kiểm tra sau mỗi N kỷ nguyên.
workersint80-64Số worker của dataloader
cachelựa chọnSAIram/disk/falseHình ảnh bộ nhớ đệm
Tham sốLoạiMặc địnhPhạm viMô tả
lr0số thực0.010,0001-0,1Tốc độ học ban đầu
lrfsố thực0.010,01-1,0Hệ số LR cuối cùng
momentumsố thực0.9370,6-0,98Động lượng SGD
weight_decaysố thực0.00050,0-0,001Chuẩn hóa L2
warmup_epochssố thực3.00-5Số lượng epochs Warmup
warmup_momentumsố thực0.80,5-0,95Khởi động tạo đà
warmup_bias_lrsố thực0.10,0-0,2Khởi động thiên vị LR
cos_lrbooleanSai-Bộ lập lịch LR Cosine
Tham sốLoạiMặc địnhPhạm viMô tả
hsv_hsố thực0.0150,0-0,1Tăng cường sắc độ HSV
hsv_ssố thực0.70.0-1.0Độ bão hòa HSV
hsv_vsố thực0.40.0-1.0Giá trị HSV
degreessố thực0.0-45-45Góc xoay
translatesố thực0.10.0-1.0Phần dịch chuyển
scalesố thực0.50.0-1.0Hệ số tỷ lệ
shearsố thực0.0-10-10Độ cắt
perspectivesố thực0.00,0-0,001Biến đổi phối cảnh
fliplrsố thực0.50.0-1.0Xác suất lật ngang
flipudsố thực0.00.0-1.0Xác suất lật dọc
mosaicsố thực1.00.0-1.0Tăng cường Mosaic
mixupsố thực0.00.0-1.0Tăng cường MixUp
copy_pastesố thực0.00.0-1.0Sao chép-dán (segment)
Tham sốLoạiMặc địnhPhạm viMô tả
fractionsố thực1.00,1-1,0Tỷ lệ dữ liệu cần sử dụng
freezeintvô giá trị0-100Số lớp cần đông lạnh
single_clsbooleanSai-Hãy coi tất cả các lớp học như một lớp học duy nhất.
rectbooleanSai-Huấn luyện hình chữ nhật
multi_scalesố thực0.00.0-1.0Phạm vi huấn luyện đa quy mô
valbooleanĐÚNG VẬY-Chạy quá trình xác thực trong quá trình huấn luyện
resumebooleanSai-Tiếp tục huấn luyện từ điểm kiểm tra
Giá trịMô tả
autoLựa chọn tự động (mặc định)
SGDGiảm độ dốc ngẫu nhiên
MuSGDMuon SGD trình tối ưu hóa
AdamBộ tối ưu hóa Adam
AdamWAdam với suy giảm trọng số
NAdamTrình tối ưu hóa NAdam
RAdamTrình tối ưu hóa RAdam
RMSPropTrình tối ưu hóa RMSProp
AdamaxAdamax optimizer
Tham sốLoạiMặc địnhPhạm viMô tả
boxsố thực7.51-50Trọng số loss Box
clssố thực0.50,2-4Phân loại giảm cân
dflsố thực1.50,4-6Mất mát cục bộ do phân bố
posesố thực12.01-50Tư thế giảm cân (chỉ tư thế)
kobjsố thực1.00,5-10Tính chất vật thể của điểm mấu chốt (tư thế)
label_smoothingsố thực0.00,0-0,1Hệ số làm mịn nhãn

Tham số dành riêng cho tác vụ

Một số tham số chỉ áp dụng cho các tác vụ cụ thể:

  • Chỉ thực hiện các nhiệm vụ phát hiện ( detect , segment , tư thế, OBB — không classify ): box, dfl, degrees, translate, shear, perspective, mosaic, mixup, close_mosaic
  • Chỉ phân đoạn: copy_paste
  • Chỉ tạo dáng: pose (trọng số mất mát), kobj (mức độ đối tượng của điểm khóa)


📅 Được tạo 1 tháng trước ✍️ Cập nhật 5 ngày trước
glenn-jochersergiuwaxmannLaughing-q

Bình luận