全部產品
Search
文件中心

Object Storage Service:OSS Connector在AI/ML資料集處理中的效能表現

更新時間:Sep 03, 2024

在進行大規模機器學習或深度學習專案時,資料的高效載入與處理是提升整體訓練效率的關鍵因素之一。本文通過對比分析在使用OSS內網網域名稱與啟用OSS加速器的情況下,不同資料集構建方法(OssIterableDataset、OssMapDataset、結合Ossfs和ImageFolder)的效能差異,旨在為使用者提供資料存取原則的最佳化指南。

測試說明

測試情境:通過在使用OSS內網網域名稱以及使用OSS加速器網域名稱這兩種情境下,針對以不同方式構建的資料集讀取OSS資料的情況進行了效能以及效能上限測試。

測試資料:10,000,000張圖片,平均每張100 KB,總量約1 TB。

測試環境:網路增強通用型執行個體規格類型系列g7nex,128 VCPU,512G記憶體,160 Gbps內網頻寬。

測試資料集構建方式:OssIterableDataset與OssMapDataset類型的資料集由OSS Connector for AI/ML構建;Ossfs with ImageFolder類型的資料集則使用ossfs掛載遠程Bucket的方式構建。

效能測試

  • 測試參數

    參數

    值/操作

    說明

    dataloader batch size

    256

    每次處理的資料批次大小為256個樣本。

    dataloader workers

    32

    使用32個背景工作處理序來並行載入資料。

    transform

    trans = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    ])
    
    def transform(object):
        img = Image.open(io.BytesIO(object.read())).convert('RGB')
        val = trans(img)
        return val, object.label

    對資料進行了預先處理。

  • 測試結果

    資料集構建方式

    資料集類型

    使用OSS內網網域名稱

    啟用OSS加速器預載資料,並使用加速網域名稱訪問

    OSS Connector for AI/ML方式構建

    OssIterableDataset

    4582 img/s

    4744 img/s

    OssMapDataset

    4010 img/s

    4370 img/s

    ossfs掛載遠程Bucket方式構建

    Ossfs with ImageFolder

    56 img/s

    251 img/s

效能上限測試

  • 測試參數

    參數

    值/操作

    說明

    dataloader batch size

    256

    每次處理的資料批次大小為256個樣本。

    dataloader workers

    32

    使用32 個背景工作處理序來並行載入資料。

    transform

    def transform(object):
     data = object.read()
     return object.key, object.label

    未對資料進行預先處理。

  • 測試結果

    資料集構建方式

    資料集類型

    使用OSS內網網域名稱

    啟用OSS加速器預載資料,並使用加速網域名稱訪問

    OSS Connector for AI/ML方式構建

    OssIterableDataset

    99920 img/s

    123043 img/s

    OssMapDataset

    56564 img/s

    78264 img/s

資料分析

從效能測試結果資料能夠看到,使用OSS Connector構建的IterableDataset和MapDataset這兩種類型的資料集效能,大約是傳統資料集Ossfs with ImageFolder的80倍。即便在都啟用OSS加速器的情況下,也相差約18倍。通過這樣的對比,可以明顯看出,使用OSS Connector能夠極大地提高資料處理速度,提升模型訓練效率。

從效能上限測試結果資料來看,啟用OSS加速器之後的效能,大約是不啟用OSS加速器的1.6倍左右。OSS Connector在不使用OSS加速器的情況下,能夠輕鬆應對各種高並發、高頻寬訪問。而配合使用OSS加速器後,其效能則更為強大。

測試總結

在 Python代碼中設定OSS Connector for AI/ML,就能輕鬆實現對OSS對象的流式訪問。通常情況下,使用OSS Connector可以極大地提升我們在巨量資料量訓練情境中的資料訪問效率。倘若對效能有更高的要求,則可以採用OSS加速器與OSS Connector for AI/ML相結合的方式來進行資料訓練。