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

更新於 發佈於 閱讀時間約 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
118會員
266內容數
哈囉,我是阿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
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文下方連結的文章,利用Stable Diffusion生成512 * 512大小的圖片。 輸入的文字是 dog flying in space,此模型需輸入英文句子才會準確生成。 參考文獻 連結該作者在Hugging Face公開的模型去做使用。 本文是在Colab上執行。
Thumbnail
本文介紹了AI助手在數據收集和訓練過程中的工作原理和不斷進步的過程。關注的內容包括從公開的網絡資源、書籍、文章等渠道收集數據,數據的清洗和結構化處理,知識庫的增量更新以及訓練算法和模型的優化。如果大家對AI助手的發展還有任何其他感興趣的話題或建議,歡迎隨時告訴我們,讓我們共同探索,攜手進步。
機器學習領域的專業人士可以從這篇文章中獲得寶貴的見解。 追求更大的數據集和更強大的模型一直是提升性能的核心策略。 以下是我在機器學習領域工作7年後的三個重大體悟。 ▋體悟1 - 大數據的重要性 自2009年ImageNet問世以來, 數據集的規模和質量對機器學習的影響越
Thumbnail
Enhance This HiDiffusion SDXL是一個AI模型,結合HiDiffusion和SDXL兩種圖像生成模型,可以根據既有影像和文字描述生成新的圖像,可用來提高圖像解析度、修復瑕疵、轉換風格和自由創造新的圖像。
Thumbnail
隨著人工智能技術的發展,AI 繪圖已經變得常見。Fast Stable Diffusion XL on TPUv5e 是在 Hugging Face 平臺上建立的演示模型,使用 TPU v5e 運行 SDXL 模型,大幅提高了圖像生成速度,生成一張 1024x1024 圖像只需約 10 秒。
Thumbnail
抓取對象檔案,自動進行壓縮處理,壓縮後產出一個壓縮檔案,如此便可節省硬碟使用空間
Thumbnail
Select the datastore you want to RENAME\rename\Input a new name\done
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
沒想到新的一年開始想要整理硬碟裡的資料的時候,我的D槽就被我各種瞎搞變成RAW了(哭),導致這幾天都在拯救我的電腦無心想別的,到今天才想起我的豐盛冥想(哭)。剩兩天了~~就把它一次貼完~把我的豐盛冥想之旅分享完。 希望你們也能完成自己的豐盛冥想,不管是否落後,用自己的步伐一步步做完即可。 今
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文下方連結的文章,利用Stable Diffusion生成512 * 512大小的圖片。 輸入的文字是 dog flying in space,此模型需輸入英文句子才會準確生成。 參考文獻 連結該作者在Hugging Face公開的模型去做使用。 本文是在Colab上執行。
Thumbnail
本文介紹了AI助手在數據收集和訓練過程中的工作原理和不斷進步的過程。關注的內容包括從公開的網絡資源、書籍、文章等渠道收集數據,數據的清洗和結構化處理,知識庫的增量更新以及訓練算法和模型的優化。如果大家對AI助手的發展還有任何其他感興趣的話題或建議,歡迎隨時告訴我們,讓我們共同探索,攜手進步。
機器學習領域的專業人士可以從這篇文章中獲得寶貴的見解。 追求更大的數據集和更強大的模型一直是提升性能的核心策略。 以下是我在機器學習領域工作7年後的三個重大體悟。 ▋體悟1 - 大數據的重要性 自2009年ImageNet問世以來, 數據集的規模和質量對機器學習的影響越
Thumbnail
Enhance This HiDiffusion SDXL是一個AI模型,結合HiDiffusion和SDXL兩種圖像生成模型,可以根據既有影像和文字描述生成新的圖像,可用來提高圖像解析度、修復瑕疵、轉換風格和自由創造新的圖像。
Thumbnail
隨著人工智能技術的發展,AI 繪圖已經變得常見。Fast Stable Diffusion XL on TPUv5e 是在 Hugging Face 平臺上建立的演示模型,使用 TPU v5e 運行 SDXL 模型,大幅提高了圖像生成速度,生成一張 1024x1024 圖像只需約 10 秒。
Thumbnail
抓取對象檔案,自動進行壓縮處理,壓縮後產出一個壓縮檔案,如此便可節省硬碟使用空間
Thumbnail
Select the datastore you want to RENAME\rename\Input a new name\done
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表為基礎,融合不同的資料欄位。 以product作為index,融合quarter_1,quarter_2,quarter_3,quarter_4 這四個欄位,並且重新命名為quarter,並且將數值欄位名稱重
Thumbnail
題目敘述 題目會給定兩個pandas DataFrame作為輸入,要求我們將兩張資料表,依照原有的順序串接在一起。 題目的原文敘述 測試範例 Example 1: Input: df1 +------------+---------+-----+ | student_id | name
Thumbnail
沒想到新的一年開始想要整理硬碟裡的資料的時候,我的D槽就被我各種瞎搞變成RAW了(哭),導致這幾天都在拯救我的電腦無心想別的,到今天才想起我的豐盛冥想(哭)。剩兩天了~~就把它一次貼完~把我的豐盛冥想之旅分享完。 希望你們也能完成自己的豐盛冥想,不管是否落後,用自己的步伐一步步做完即可。 今