【Hugging Face Dataset】 ❗ 使用Process來變更資料集時, 請小心硬碟空間…

更新於 2023/07/28閱讀時間約 5 分鐘
raw-image

圖片來源…

🔍 Huggingface dataset map increase disk space

我們在「【Hugging Face】Ep.3 前往Datasets掏金趣」有稍微介紹過Dataset在Hugging Face裡面扮演著什麼樣的角色,以及如何使用,沒錯! 它非常的好用,也很適合管理我們龐大的訓練資料,但… 過程中也有一些小細節需要非常注意,尤其實儲存策略與硬碟空間的規劃,硬體與軟體之間都息息相關,雖然過程曲折,但學習起來之後處理各式各樣的資料集我們都能夠得心應手,加快AI產品發展的進程,為公司帶來更大的營收。

先天限制條件

硬碟A的空間有限並不允許我們處理過程中緩存。

前景提要

raw-image

圖片來源…

故事是這樣的, 有一天大雄在進行Hugging Face進行資料處理時, 他使用到了「Process」來進行資料的轉換, 並且使用了.map()來改變欄位的值, 大概是這樣操作:

def 改變語句內容(ds: DatasetDict) -> DatasetDict:
實作細節...

ds = DatasetDict.load_from_disk(f'{資料集儲存的位置}')

# 注意: load_from_cache_file=True
ds = ds.map(改變語句內容, num_proc=4)

這時大雄卻發現到奇怪, 為什麼「資料集儲存的位置」容量怎麼增加了一倍? 到底是為什麼呢? 看著一臉無助的小夫, 我們只好來好好的協助一番。

首先我們先來看看官方關於map的參數說明: https://huggingface.co/docs/datasets/v2.14.0/en/package_reference/main_classes#datasets.Dataset.map

raw-image

我們可以看到keep_in_memory 參數, 感覺可以將緩存指向記憶體, 也確實如此, 但會有一些副作用…

再來好好看看緩存的文件: https://huggingface.co/docs/datasets/v2.14.0/en/cache

從中我們也發現到disable_caching , 真有辦法解決? 接下來我們也會依序實驗並給出幾個解決方案。

資源有限的狀況下我們可以怎麼解決?

第一種: 將快取結果輸出到更大空間的硬碟

這種方式當然最好, 既能保留舊版數據, 也能保留新版數據, 做實驗時能夠相互比對, 做個依據, 但現實總是資金有限, 畢竟硬碟也是成本啊…。

第二種: 替換法, 處理完畢的數據替換掉原本數據集


ds = DatasetDict.load_from_disk(f'{舊資料集}')

# 注意: load_from_cache_file=True
ds = ds.map(改變語句內容, num_proc=4)

# 直接覆蓋原有資料集
ds.save_to_disk(f'{舊資料集}')

# 保險一點也可以這樣做...

# ds.save_to_disk(f'{新資料集}')

# rm -rf 舊資料集

# mv 新資料集 舊資料集位置

第三種:關閉快取處理完畢後再打開

但這方式一樣會將資料載入到記憶體, 也需要注意到記憶體空間是否足夠的問題。

from datasets import disable_caching, enable_caching

disable_caching()

關閉後一樣的動作執行...

enable_caching()

第四種: 將快取導入到記憶體

我們可以設定keep_in_memory參數, 讓快取導引到記憶體。

ds = ds.map(..., num_proc=4, keep_in_memory=True)

但這會有副作用, 如果記憶體空間不足可能影響到其他程式, 因此不建議這麼做, 而且從硬碟到記憶體的時間也是一個耗損。

結語

Hugging Face的Dataset真的是處理訓練資料的好幫手, 但方便的背後還是有其代價的, 因此我們也應試著去了解一下背後的原理才能做出較佳的策略。

順道一題,本文的目標是以淺顯易懂的文章讓正在AI路上的夥伴能夠輕鬆理解問題與解決方法,讓我們一起加快腳步,過關斬將,迎向AI應用的那一哩路。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識


更多關於【Hugging Face 系列】…

avatar-img
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
前面我們介紹了幾個關於Whisper的基本概念,這裡附上 🚀傳送門 ,歡迎好好閱讀一番,但我們除了學會如何用語音辨識的工具之外,「準確率」對我們來說也是一個非常重要的一環,但我們究竟應該要如何評估所謂的準確率呢? 不知道沒關係,當您看完這個篇章就能夠學會如何計算文字的「字元錯誤率」、「字詞錯誤率」
我們已經介紹過關於Transformer模型的平台「【Hugging Face】Ep.1 平凡人也能玩的起的AI平台」,而操作的過程中相信也會有不少玩家會遇到這樣的狀況,因此將遇到的問題整理並分享解決方法,讓需要的朋友可以參考一下。 問題 Input type (torch.FloatTen
回顧上一個篇章「【自然語言處理NLP】初探強大的工具庫spaCy, 讓機器讀懂我們的語言」我們初步學習spaCy這套工具,在尾端進行NER時我們也發現到現有的NER模型並沒有辦法滿足我們的需求, 導致有一些實體未被識別出來, 因此這次的任務就是設法進行訓練, 讓我們想要被識別的實體可以被進行識別。
上一篇章我們有提到「【AI幫幫忙】機器如何識別我們的特徵?關鍵的Named Entity Recognition(NER)技術」, 而NER是NLP自然語言處理的一部分, 而這一個篇章我們會以實作的形式來介紹自然語言處理中非常好用的一套工具「spaCy」,spaCy被廣泛用於各種NLP任務,包括自然
QA問答是自然語言處理NLP中蠻困難的一項任務, 必須從一段文本中識別出使用者的提問,像搜尋引擎就是一種QA的應用, 從眾多的問題中找答案, 那就讓我們親手來打造一下自己專屬的QA系統吧! 找看看有哪些可用模型 在「【Hugging Face】Ep.3 前往Dataset掏金趣」我們有介紹過Hu
這次來介紹一下NLP自然語言處理中重要的一個任務「命名實體識別(Named Entity Recognition)」, 這個任務主要識別出「人名」、「地名」、「公司」…等實體, 透過這些實體辨識結果, 可以近一步的理解意圖, 甚至判斷出該文章主要在講什麼重點…等。 關於更多NER的細節歡迎閱讀: 「
前面我們介紹了幾個關於Whisper的基本概念,這裡附上 🚀傳送門 ,歡迎好好閱讀一番,但我們除了學會如何用語音辨識的工具之外,「準確率」對我們來說也是一個非常重要的一環,但我們究竟應該要如何評估所謂的準確率呢? 不知道沒關係,當您看完這個篇章就能夠學會如何計算文字的「字元錯誤率」、「字詞錯誤率」
我們已經介紹過關於Transformer模型的平台「【Hugging Face】Ep.1 平凡人也能玩的起的AI平台」,而操作的過程中相信也會有不少玩家會遇到這樣的狀況,因此將遇到的問題整理並分享解決方法,讓需要的朋友可以參考一下。 問題 Input type (torch.FloatTen
回顧上一個篇章「【自然語言處理NLP】初探強大的工具庫spaCy, 讓機器讀懂我們的語言」我們初步學習spaCy這套工具,在尾端進行NER時我們也發現到現有的NER模型並沒有辦法滿足我們的需求, 導致有一些實體未被識別出來, 因此這次的任務就是設法進行訓練, 讓我們想要被識別的實體可以被進行識別。
上一篇章我們有提到「【AI幫幫忙】機器如何識別我們的特徵?關鍵的Named Entity Recognition(NER)技術」, 而NER是NLP自然語言處理的一部分, 而這一個篇章我們會以實作的形式來介紹自然語言處理中非常好用的一套工具「spaCy」,spaCy被廣泛用於各種NLP任務,包括自然
QA問答是自然語言處理NLP中蠻困難的一項任務, 必須從一段文本中識別出使用者的提問,像搜尋引擎就是一種QA的應用, 從眾多的問題中找答案, 那就讓我們親手來打造一下自己專屬的QA系統吧! 找看看有哪些可用模型 在「【Hugging Face】Ep.3 前往Dataset掏金趣」我們有介紹過Hu
這次來介紹一下NLP自然語言處理中重要的一個任務「命名實體識別(Named Entity Recognition)」, 這個任務主要識別出「人名」、「地名」、「公司」…等實體, 透過這些實體辨識結果, 可以近一步的理解意圖, 甚至判斷出該文章主要在講什麼重點…等。 關於更多NER的細節歡迎閱讀: 「
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Ai made a article tells everyone 從前,在一座摩天大樓林立、街道繁忙的繁華都市中,住著一群朋友,他們一直在尋找新的方式讓他們的生活更輕鬆、更方便。有一天,他們偶然發現了一件令人驚奇的事情——一個可以執行任務、提供信息,甚至可以進行隨意交談的虛擬助手。 起初,他們
Thumbnail
2020年,一場席捲全球的疫情不只打亂了全球產業脈動,也讓漂流海外的我們感到十分無奈。昨天看到一則新聞寫出了全球外派台人的縮影。 這篇文章主要是想記錄在台灣媒體對於越南疫情報導下看不見的、我們的生活,以及我們在當地面臨的挑戰。
Thumbnail
Jacob Morch on Unsplash 我對政治沒有什麼立場,如果你問我。我支持九二共識嗎?當然,反正一個中國,各自表述,也就是用白話文說,你認為的一個中國,我認為的一個中國,但不是你認為的「一個中國」,因為我把中國與台灣分得清清楚楚。中國就是中國,台灣就是台灣,你想要把我納入你的「一個中
Thumbnail
原來我好心疼我自己 當你進入到睡眠狀態的時候 你會看見那個在你內心深處的自己
Thumbnail
獨立自售和受人雇的行銷人員創意的自由範疇
Thumbnail
大家都一樣是人,何苦為難彼此? 還記得那時瘋狂的A thousand years,超愛的暮光之城,狼人、吸血鬼(你/妳喜歡裡面哪個角色呢?),今天這首Human則是滿滿的....
Thumbnail
​ 在基隆市中心要找素食店家其實並不是很多,詹家素食就是一家基隆的經典店家之一,不但素食者喜歡吃,連非素食者也說讚。這家素食館還被郵輪旅遊網,推薦為來到基隆必吃的美食店家之一。 詹家素食相關資訊:: ​ 基隆市仁愛區仁四路20號 ​ 02      2426     7159 ​ PM10:00AM
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Ai made a article tells everyone 從前,在一座摩天大樓林立、街道繁忙的繁華都市中,住著一群朋友,他們一直在尋找新的方式讓他們的生活更輕鬆、更方便。有一天,他們偶然發現了一件令人驚奇的事情——一個可以執行任務、提供信息,甚至可以進行隨意交談的虛擬助手。 起初,他們
Thumbnail
2020年,一場席捲全球的疫情不只打亂了全球產業脈動,也讓漂流海外的我們感到十分無奈。昨天看到一則新聞寫出了全球外派台人的縮影。 這篇文章主要是想記錄在台灣媒體對於越南疫情報導下看不見的、我們的生活,以及我們在當地面臨的挑戰。
Thumbnail
Jacob Morch on Unsplash 我對政治沒有什麼立場,如果你問我。我支持九二共識嗎?當然,反正一個中國,各自表述,也就是用白話文說,你認為的一個中國,我認為的一個中國,但不是你認為的「一個中國」,因為我把中國與台灣分得清清楚楚。中國就是中國,台灣就是台灣,你想要把我納入你的「一個中
Thumbnail
原來我好心疼我自己 當你進入到睡眠狀態的時候 你會看見那個在你內心深處的自己
Thumbnail
獨立自售和受人雇的行銷人員創意的自由範疇
Thumbnail
大家都一樣是人,何苦為難彼此? 還記得那時瘋狂的A thousand years,超愛的暮光之城,狼人、吸血鬼(你/妳喜歡裡面哪個角色呢?),今天這首Human則是滿滿的....
Thumbnail
​ 在基隆市中心要找素食店家其實並不是很多,詹家素食就是一家基隆的經典店家之一,不但素食者喜歡吃,連非素食者也說讚。這家素食館還被郵輪旅遊網,推薦為來到基隆必吃的美食店家之一。 詹家素食相關資訊:: ​ 基隆市仁愛區仁四路20號 ​ 02      2426     7159 ​ PM10:00AM