105826.jpg

Leader Three

【基礎知識】DL、ML、Training學習煉丹基礎概念:Vector|向量,Tensor|張量,Gradient|勾配 グラーディエント|梯度

【基礎知識】DL、ML、Training學習煉丹基礎概念:Vector|向量,Tensor|張量,Gradient|勾配 グラーディエント|梯度

1.Scalar|標量
中學應該都學過。
簡單説就是只有大小的量。
Scalaris、Scale有一種倍數、比例的含義。

2.Vector|向量
中學應該也學過。
也叫矢量。
既有大小,也有方向的量。

3.Tensor|張量
這個中學可能沒學過。
但水的表面張力學過吧?


這玩意用標量、向量都不太好描述。
這時就需要引入一個更大的、層級維度次元更高的概念。
而張量,就是一種可以用來定量描述張力的概念。



對於張量,可以看一下B站七彩虹(對,就是那個顯卡七彩虹……    )
【七妹的学习日常】都可以看。
説到張量的是這集:
【七妹的学习日常】第4期: 七妹带你了解Ada Lovelace架构(下)https://www.bilibili.com/video/BV1Rd4y1V79Z/

3.1.文件類型|格式
當你知道Tensor是張量時,那麽我們平常所用大小模型文件的後綴名就很好理解了。

PickleTensor:


Pickle有腌製、裝罐、打包的意思,可以近似理解爲Package。
那麽PickleTensor就可以翻譯成【打包好的張量】。
    如果你就是要像腌鹹菜、腌黃瓜一樣,叫【腌張量】,也可以。

SafeTensor:


Safe安全、保險、謹慎小心的。
那麽SafeTensor自然就翻譯成【安全的張量】。


4.Gradient (縮寫Grad) | 日文:勾配 假名:グラーディエント | 梯度


秋葉aaaki已經講得很好了
https://www.bilibili.com/video/BV1A8411775m/

4.1.

gradient accumulation steps / 勾配を合計するステップ数 = 1
最後我們來解釋Kohya_ss訓練(煉丹)脚本中的上面這個是什麽意思。
這就是說你一共有多少個勾配,或者説梯度在尋找最優解。
這也就是爲啥這和batch size是相乘的關係。

比喻一下,就是SC星際爭霸中,你是蟲族,你造了一隻狗探路,那這個就=1
你10狗探路,那這個值就是=10

10>1
    1狗探到死胡同,還要再走冤枉路,原路返回。
    10狗齊出,可以從不同的視角,預測出是不是死胡同。探到死胡同,對別的狗也是去掉一個錯誤答案。就算不説這些,單説死胡同本身,那也只損失1狗,類似分散投資。

這時候有同學要問,樓主,爲啥你是1啊?你爲何不10啊?是不喜歡嗎不想嗎?
    答:沒錢。非不愿也,實不能也。

  錯。
  不對。
這個比喻應該給batch size。
也就是説batch size是相當於10狗同時探路。
我理解錯誤,我以爲和batch size是等效的,實際上不是。

gradient accumulation steps就從字面意思理解。
gradient accumulation steps=梯度合計步數。
還是比如10,意思就是將10步合成1步。
在步數上,gradient accumulation steps和batch size是相乘,也就是:
最終步數=總步數÷(gradient accumulation steps×batch size)
比如,9980步,如果GAS是10,BS是1,那麽最終步數是998,反過來也一樣,GAS是1,BS是10,998.
GAS和BS都是10,那麽最終步數,有可能是100或者99。

在步數上,兩個起到一樣作用,就是減少最終步數。

但是,效果不一樣,不是等效。
batch size是同時學習,就是上面我一開始說錯的比喻。相當於多個小兵同時探路,效果可以更精確。
gradient accumulation steps合計步數,最終效果,反而是更粗略了,更不准。
因爲他這個意思,差不多就是,走1步,相當於別人跨10步,大踏步跨越。
所以是更不准了。

而且開啓gradient accumulation steps,煉丹速度并沒有更快,我的垃圾配置還更慢了。

1355494.jpg

Nxixi

今天考完试心态炸了,没想到在黄网又看到机器学习的东西

我麻瓜也


1327522.jpg

Ridley

B3F  2023-06-20 19:04
(空的)

回 1楼(Nxixi) 的帖子

玩AI画图反哺机器学习,是好事