Technology sharing

LoRA principium et exsecutio--PyTorch LoRA exemplar a se aedificat

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

I. Introductio

Proprius terminus "LoRA" saepe in agro AIGC apparet. Is sonat aliquid sicut nomen hominis, sed modus est formandi formandi. Plenum nomen LoRA est Belgii Rank accommodatio Exemplaris Magnae Linguae, quae in Sinica appellaturLow-level accommodatio magnarum linguarum exempla . Hodie in stabili diffusione saepissime usurpatur.

Ob ingentem numerum parametri magnarum exemplorum linguae, multae et magnae societates aliquot menses instituendi sunt.

Articulus hic principium LoRA in singillatim introducebit et PyTorch utetur ad formationem parvarum exemplorum LoRA deducendi.

2. Model disciplina

Exemplar maxime nunc disciplinae descensus algorithmus gradientis utitur. Descensus clivus algorithmus in sequentes gradus 4 dividi potest;

  1. Propagatio aestimat damnum valorem
  2. Backpropagation graduum computans
  3. Renova per ambitum graduum
  4. Repetere gradus 1, 2, et 3, donec minor damnum obtineatur

Exemplar linearium in exemplum sumens, exemplar parametri sunt W, initus et output sunt x, y, et munus amissum est error quadratus medius. Deinde calculi cujusque gradus talis est.

L=MSE(Wx,y)L = MSE(Wx, y)L=MSE(Wx,y)

Post damnum inventum, gradiens L versus W obtinere potest calculi dW;

dW = ∂L∂WdW = frac{partialis L}{partialis W}dW=∂W∂L

dW matrix est quae puncta in directum ubi L velocissime oritur, sed finis est cadere L, ita W minus dW. Ad accommodandam gressum updates, rate η discens multiplicatur et computatur sic:

W′=W−ηdWW' = W - ηdWW′=W−ηdW

Omni tempore fine repetere. Pseudocode enim supra tres gradus talis est;

# 4、重复1、2、3
for i in range(10000):
    # 1、正向传播计算损失
    L = MSE(Wx, y)
    # 2、反向传播计算梯度
    dW = gradient(L, W)
    # 3、利用梯度更新参数
    W -= lr * dW

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Postquam renovatio peracta est, novus parameter W habebitur. Cum exemplar vaticinii hoc tempore utimur, calculus talis est;

pred=W′xpred = W'xpred=W′x

3. Introducendis LoRA

Cogitare possumus de relatione inter W et W'. W plerumque ad parametri exemplar fundamentalis refertur, et W post aliquot additiones et subtractiones matrix in forma fundamentali fundata obtinetur. Pone X temporibus in processu disciplinae renovari, et singulis diebus dW dW1, dW2, dW10, tunc processus renovationis completus in operatione una scribi potest;

W′=W−ηdW1−ηdW2−. ^{10}dW_i \ W' = W - ηdW W′=W−ηdW1 ηdW2 …−ηdW10 Sit: dW=i=1∑10 dWi W′=W−ηdW

ubi dW matrix eadem figura qua W'. Scribimus -ηdW ut matrix R, tunc renovatae parametri sunt:

W′=W+RW' = W + RW′=W+R

Hoc tempore processus disciplinae ad matrix originalis facilior et alia matrix R. Attamen matrix R solvenda non est simplicior, et facultates non salvat.

Matrix plene instructa plerumque est plena dignitatis vel basically satisfacit dignitati, id est, nulla columna in matrice redundat. In charta "Scandere Leges pro Neural Language Model", relatio inter notitias statutae et parametri amplitudinis proponitur. Cum exemplar inveneris, basim exemplar eligemus, quod plerumque est plenum dignitatis. Quae est condicio matricis R adaequationis?

Ponamus R matrix matrix ignobilis esse. Si figura ipsius W est m×n, figura A est etiam m×n valorem longe minorem quam m.

image.png

Matricas ignobilis in duas matrices retexens plura commoda habet. Sit figura matricis R 100× 100, numerus parametri R est 10000. Cum gradum eligemus X, matricis A figura est 100×10 et forma matricis B est 10×100. Numerus parametri est 2000, qui 80% minor est quam matrix R.

Et cum R sit ignobilis matrix, satis exercitata, A, B matrices effectum R. consequi possunt. Matrix AB hic est quod saepe exemplar LoRA vocamus.

Post LoRA introducto, nostrum praedictum in W et AB input x debet esse respective.

pred=Wx+ABxpred = Wx + ABxpred=Wx+ABx

Paulo tardius erit quam exemplar originale cum praedicunt, sed differentia plerumque in magnis exemplaribus non sentitur.

4. Actu pugna

Ut omnia singularia comprehendamus, non exemplo magno utimur sicut ipsa lora pugna. Sed parva retiacula uti placet ut exemplar vgg19 lora instituat. Modulorum requiritur importare:

import os  
import torch  
from torch import optim, nn  
from PIL import Image  
from torch.utils import data  
from torchvision import models  
from torchvision.transforms import transforms

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.1 Data paro praeparatio

Hic, praestructa pondera vgg19 in imagenet ut basi exemplar adhibentur, ita classificatio notitiae statutae praeparandae sunt.Pro commodo, una tantum categoria et 5 picturae hic paranturdata/goldfishDescende:

image.png

Categoria hippurus in imagine inclusa est, sed illustrata versio hippurorum hic seligitur. Propositum nostrum est LoRA instituere et exemplar recte classificare.

Creamus LoraDataset;

transform = 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]),  
])  
  
  
class LoraDataset(data.Dataset):  
    def __init__(self, data_path="datas"):  
        categories = models.VGG19_Weights.IMAGENET1K_V1.value.meta["categories"]  
        self.files = []  
        self.labels = []  
        for dir in os.listdir(data_path):  
            dirname = os.path.join(data_path, dir)  
            for file in os.listdir(dirname):  
                self.files.append(os.path.join(dirname, file))  
                self.labels.append(categories.index(dir))  
  
    def __getitem__(self, item):  
        image = Image.open(self.files[item]).convert("RGB")  
        label = torch.zeros(1000, dtype=torch.float64)  
        label[self.labels[item]] = 1.  
        return transform(image), label  
  
    def __len__(self):  
        return len(self.files)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

4.2 LoRA crea exemplar

LoRA in tabulato encapsulamus. Duo tantum matrices in LoRA instituendi sunt.

class Lora(nn.Module):  
    def __init__(self, m, n, rank=10):  
        super().__init__()  
        self.m = m  
        self.A = nn.Parameter(torch.randn(m, rank))  
        self.B = nn.Parameter(torch.zeros(rank, n))  
  
    def forward(self, inputs):  
        inputs = inputs.view(-1, self.m)  
        return torch.mm(torch.mm(inputs, self.A), self.B)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Ubi m est magnitudo input, n est magnitudo output, ordo est magnitudo ordinis, possumus minorem valorem constituere.

Cum initialis pondera, A cum Gaussiano strepitu initializemus, et B cum matrice initializemus. Hoc est, ut institutio ab imo exemplari incipiat. Quia AB est 0 matrix, LoRA in statu initiali non operatur.

4.3 pone hyperparametris et agmine

Proximum institutio est. Haec plerumque eadem est ac regularis disciplinae codicis PyTorch.

# 加载底模和lora  
vgg19 = models.vgg19(models.VGG19_Weights.IMAGENET1K_V1)  
for params in vgg19.parameters():  
    params.requires_grad = False  
vgg19.eval()  
lora = Lora(224 * 224 * 3, 1000)  
# 加载数据  
lora_loader = data.DataLoader(LoraDataset(), batch_size=batch_size, shuffle=True)  
# 加载优化器  
optimizer = optim.Adam(lora.parameters(), lr=lr)  
# 定义损失  
loss_fn = nn.CrossEntropyLoss()  
# 训练  
for epoch in range(epochs):  
    for image, label in lora_loader:  
        # 正向传播  
        pred = vgg19(image) + lora(image)  
        loss = loss_fn(pred, label)  
        # 反向传播  
        loss.backward()  
        # 更新参数  
        optimizer.step()  
        optimizer.zero_grad()  
        print(f"loss: {loss.item()}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Duo notantur hic.

Secundum est quod in propagatione deinceps, codice sequenti utimur;

pred = vgg19(image) + lora(image)

  • 1
  • 2

4.4 Testis

Simplex experimentum faciamus:

# 测试  
for image, _ in lora_loader:  
    pred = vgg19(image) + lora(image)  
    idx = torch.argmax(pred, dim=1).item()  
    category = models.VGG19_Weights.IMAGENET1K_V1.value.meta["categories"][idx]  
    print(category)
torch.save(lora.state_dict(), 'lora.pth')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Output talis est:

goldfish
goldfish
goldfish
goldfish
goldfish

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Praedictio fundamentalis recte est, sed haec probatio exitum nihil significat. Denique exemplar 5M LoRA servavimus, quod perexiguum cum decem MB of vgg19 est comparatum.

5. Libri

LoRA methodus ad magna exempla efficax est, et hic articulus LoRA in parva classificatione retis utitur ut legentibus lucidius cognoscatur explicatio exsecutionis LoRA (sed etiam quia magna exempla currere non potest). Ob limitata voluminis notitia, quaestiones ut accurate et efficacia LoRA non singillatim discutiantur.

Quomodo discere magna AI exempla?

Societates interretiales ante-lineam plus decem annos laboravi et multos collegas juniores commemoravi. Multis adiuvari discunt et crescunt.

Scio enim multam experientiam et scientiam valere cum omnibus communicare, et etiam facultates et experientias nostras uti possumus ad multas confusiones tuas in scientia intelligentiae artificialis respondere, sic tamen insisto variis rebus ordinandis et communicandis, quamvis sim. occupatus in opere. Attamen, ob limites venas cognitionis disseminationis, multi amici in Interreti industria non possunt rectam materiam acquirere ad eruditionem suam emendandam libri et manuales, ac video tutorials, doctrina practica et alia videos memoriae gratis communicata sunt.

Insert imaginem descriptionis hic

Scaena prima: Committitur cum consilio magnorum systematum et exemplorum principalium methodorum magnarum exemplorum explica;

Secundus gradus: per magnum exemplar prompti verbi propositi, incipit a prospectu Promptus ad melius munus exemplar utendum;

Tertius scaena: Magnae exemplar suggestum applicationis progressionis utitur in suggestu Alibaba Cloud PAI ad rectum systema in campo e-commercii aedificandum;

Quartus scaena: Magnae cognitionis exemplar, basis applicationis evolutionis accipit LangChain compage exemplum exemplum aedificandi quaestionem intellegens et ratio respondendi ad logisticam industriam consultationem;

Quintus scaena: subtiliter progressus magnorum exemplorum utendo agris magnae sanitatis, novorum grossorum et novorum instrumentorum ad magna exempla aedificanda apta ad campum hodiernum;

Sextus scaena: Fundatur in magnum exemplar SD multi-modali, a Wensheng tabula applet causa aedificata est;

Septimus scaena: Focus in applicatione et evolutione magnarum exemplorum suggestorum, et magna exempla industriae applicationes per matura magna exempla aedificabis ut magnum exemplar Xinghuo et magnum exemplar Wenxin.

Insert imaginem descriptionis hic

👉学会后的收获:👈
• Ex plenam ACERVUS ipsum exsecutionem exemplorum magnarum (ante-finem, dorsum-finem, procuratorem productum, consilium, analysin, etc.), variae facultates per hunc cursum acquiri possunt;

• Magna exempla uti possunt ad solvendas necessitates actuales propositis pertinentes: In aetate magnarum notitiarum, magis inceptis et institutis opus est ad processum ingentes notitiarum ac decernendo. Ideo magnas applicationis artes evolutionis exemplar compescere possunt programmatores ad meliora tolerare cum inceptis actualibus necessitatibus;

• Ex magno exemplari et incepto data AI applicationis evolutionis, theoriae exemplar magnae deducendi, dominum GPU vim computandi, ferramenta, compagem evolutionis LangChain et artes practicas exstare, et eruditionem bene-tuning verticalem magnarum exemplorum discas (praeparatio, data distillationis, magna exemplum instruere) One-stop mastery ;

• Facultas popularis amplum exemplar perpendiculi verticalis campi formandi facultatem exercendi ac emendandi facultates programmatorum coding: Magnae applicationis evolutionis exemplar requirit machina discendi algorithm compescendi, alta discendi compages aliasque technologias ut proficiant in scribendo summus qualitas codicis.

Insert imaginem descriptionis hic

1. AI magnum exemplar doctrinarum roadmap
2. Consilium exsecutionis commercialis pro 100 statutis magnarum AI exemplorum
3.100 episodium magnum exemplar video tutorials
4.200 magnum exemplar librorum PDF
5. Collectio LLM colloquium quaestionum
6.AI productum procurator resource collectione

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Insert imaginem descriptionis hic