檢測到您已登錄華為云國際站賬號,為了您更好的體驗(yàn),建議您訪問國際站服務(wù)網(wǎng)站 http://m.cqfng.cn/intl/zh-cn
不再顯示此消息
如下示例中遇到的問題: 解決方案 使用精度的方法處理,使用字段與數(shù)值的差值的絕對值小于可接受的精度的方法。示例: 使用定點(diǎn)數(shù)類型(DECIMAL)取代浮點(diǎn)數(shù)類型,示例: 父主題: SQL類
BF16和FP16說明 在大模型訓(xùn)練中,BF16(Brain Floating Point)和FP16(Float16)都是使用的半精度浮點(diǎn)數(shù)格式,但它們在結(jié)構(gòu)和適用性上有一些重要的區(qū)別。 BF16:具有8個(gè)指數(shù)位和7個(gè)小數(shù)位。
浮點(diǎn)型 名稱 描述 存儲空間 取值范圍 字面量 REAL 實(shí)數(shù) 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或負(fù) REAL DOUBLE 雙精度浮點(diǎn)數(shù),15到17個(gè)有效位,具體取決于使用場景,有效位位數(shù)并不取決于小數(shù)點(diǎn)位置
壓縮大小,不減精度雙精度是64位,單精度是32位,所謂的半精度浮點(diǎn)數(shù)就是使用2個(gè)字節(jié)(16位)來存儲。比起8位或16位整數(shù),半精度浮點(diǎn)數(shù)具有動態(tài)范圍高的優(yōu)點(diǎn);而與單精度浮點(diǎn)數(shù)相比,它能節(jié)省一半的儲存空間和帶寬。比起雙精度和單精度浮點(diǎn)數(shù),半精度浮點(diǎn)顯然沒有那么適合計(jì)算。
數(shù)據(jù)精度 原始成本的數(shù)據(jù)精度和賬單金額一致。 攤銷成本需要按照四舍五入進(jìn)行保留小數(shù),因此攤銷成本會存在微小的精度差異: 成本中心頁面上展示的金額,均按照四舍五入規(guī)則,保留2位小數(shù); 導(dǎo)出的成本明細(xì)數(shù)據(jù),會根據(jù)成本數(shù)據(jù)的原始精度,保留8位小數(shù)。
包括:1 個(gè)符號位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位float32單精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位float64雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位complex_complex128 類型的簡寫,即 128 位復(fù)數(shù)complex64
16位,正負(fù)號1位,指數(shù)5位,精度10位 'f2' np.float32 單精度浮點(diǎn)數(shù):32位,正負(fù)號1位,指數(shù)8位,精度23位 'f4' np.float64 雙精度浮點(diǎn)數(shù):64位,正負(fù)號1位,指數(shù)11位,精度52位 'f8' np.complex64 復(fù)數(shù),分別用兩個(gè)32位浮點(diǎn)數(shù)表示實(shí)部和虛部
float16:半精度浮點(diǎn)數(shù) float32:單精度浮點(diǎn)數(shù) float64:雙精度浮點(diǎn)數(shù) float128:擴(kuò)展精度浮點(diǎn)數(shù) 復(fù)數(shù)類型: complex64:由兩個(gè)32位浮點(diǎn)數(shù)表示的復(fù)數(shù) complex128:由兩個(gè)64位浮點(diǎn)數(shù)表示的復(fù)數(shù) complex256:由兩個(gè)128位浮點(diǎn)數(shù)表示的復(fù)數(shù)
包括:1 個(gè)符號位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位float32單精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位float64雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位complex_complex128 類型的簡寫,即 128 位復(fù)數(shù)complex64
數(shù)組一般要求所有元素類型相同(同質(zhì)),數(shù)組下標(biāo)從0開始 1234 ndarray元素類型 布爾:bool(True False) c語言int,環(huán)境有關(guān): intc,intp 整數(shù):int8,int16,int32,init64 無符號整數(shù): uint8,uint16,uint32,uinit64 半精度浮點(diǎn)數(shù)
從上可以理解(float16為半精度浮點(diǎn)數(shù),float32為單精度浮點(diǎn)數(shù)),MindSpore是將網(wǎng)絡(luò)中的前向計(jì)算部分`cast`成半精度浮點(diǎn)數(shù)進(jìn)行計(jì)算,以節(jié)省內(nèi)存空間,提升性能,同時(shí)將`loss`值保持單精度浮點(diǎn)數(shù)進(jìn)行計(jì)算和存儲,`weight`使用半精度浮點(diǎn)數(shù)進(jìn)行計(jì)算,單精度浮點(diǎn)數(shù)進(jìn)行保存
包括:1 個(gè)符號位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位 float32 單精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位 float64 雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位 complex_ complex128 類型的簡寫,即
**混合精度訓(xùn)練方法**是通過混合使用單精度和半精度數(shù)據(jù)格式來加速深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程,同時(shí)保持了單精度訓(xùn)練所能達(dá)到的網(wǎng)絡(luò)精度。即在盡可能減少精度損失的情況下利用半精度浮點(diǎn)數(shù)加速訓(xùn)練。
先進(jìn)的訓(xùn)練技巧 6.1 混合精度訓(xùn)練 混合精度訓(xùn)練是一種通過使用半精度浮點(diǎn)數(shù)(FP16)替代單精度浮點(diǎn)數(shù)(FP32)進(jìn)行訓(xùn)練的技術(shù)。這種方法可以顯著提高訓(xùn)練速度,并減少顯存的占用,同時(shí)幾乎不會影響模型的準(zhǔn)確性。
json文件 data_cache_dir:訓(xùn)練數(shù)據(jù)緩存文件夾 output_dir: 輸出文件夾 output encoded layers:設(shè)置隱層輸出為True gradient_accumulation_steps:梯度累積 temperature:蒸餾溫度 fp16:開啟半精度浮點(diǎn)數(shù)訓(xùn)練
16位,正負(fù)號1位,指數(shù)5位,精度10位 ‘f2’ np.float32 單精度浮點(diǎn)數(shù):32位,正負(fù)號1位,指數(shù)8位,精度23位 ‘f4’ np.float64 雙精度浮點(diǎn)數(shù):64位,正負(fù)號1位,指數(shù)11位,精度52位 ‘f8’ np.complex64 復(fù)數(shù),分別用兩個(gè)
而在混合精度訓(xùn)練過程中,每一個(gè)step會為模型的所有weight維護(hù)一個(gè)FP32的copy,稱為Master Weights,在做前向和后向傳播過程中,Master Weights會轉(zhuǎn)換成FP16(半精度浮點(diǎn)數(shù))格式,權(quán)重,激活函數(shù)和梯度都是用FP16進(jìn)行表示,最后梯度會轉(zhuǎn)換成FP32
包括:1 個(gè)符號位,5 個(gè)指數(shù)位,10 個(gè)尾數(shù)位float32單精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,8 個(gè)指數(shù)位,23 個(gè)尾數(shù)位float64雙精度浮點(diǎn)數(shù),包括:1 個(gè)符號位,11 個(gè)指數(shù)位,52 個(gè)尾數(shù)位complex_complex128 類型的簡寫,即 128 位復(fù)數(shù)complex64
混合精度訓(xùn)練:使用混合精度(例如半精度浮點(diǎn)數(shù))進(jìn)行訓(xùn)練,能夠加快訓(xùn)練速度并減少顯存占用。 優(yōu)化損失函數(shù):通過設(shè)計(jì)新的損失函數(shù)(如感知損失、對抗損失),增強(qiáng)模型對圖像細(xì)節(jié)和風(fēng)格的捕捉能力。 8. 評估與評價(jià)生成圖像的質(zhì)量 生成圖像的質(zhì)量評估是衡量模型性能的重要環(huán)節(jié)。
昇騰PyTorch模型精度調(diào)試與優(yōu)化 本課程學(xué)習(xí)昇騰PyTorch模型的精度調(diào)試方法,包括精度調(diào)試流程、大模型精度問題來源、單精度與半精度浮點(diǎn)數(shù)特點(diǎn)、混合精度計(jì)算中的精度問題,以及如何根據(jù)任務(wù)需求權(quán)衡精度損失與訓(xùn)練速度。
也就說明AICPU完全可以調(diào)用數(shù)據(jù)類型__fp16來實(shí)現(xiàn)原生支持半精度浮點(diǎn)數(shù)計(jì)算。