C语言写的LLM训练

news2024/9/22 15:46:18

特斯拉前 AI 总监、OpenAI 创始团队成员 Andrej Karpathy 用 C 代码完成了 GPT-2 大模型训练过程:karpathy/llm.c: LLM training in simple, raw C/CUDA (github.com)

下载源码

git clone --recursive https://github.com/karpathy/llm.c.git

下载模型

从HF-Mirror - Huggingface 镜像站下载gpt2模型:

cd llm.c
./hfd.sh openai-community/gpt2 --tool aria2c -x 4

用CPU训练gpt2大模型

pip install -r requirements.txt
python prepro_tinyshakespeare.py
python train_gpt2.py
make train_gpt2
OMP_NUM_THREADS=16 ./train_gpt2

训练结果:

[GPT-2]
max_seq_len: 1024
vocab_size: 50257
padded_vocab_size: 50304
num_layers: 12
num_heads: 12
channels: 768
num_parameters: 124475904
train dataset num_batches: 1192
val dataset num_batches: 128
num_activations: 73347840
val loss 5.325522
step 0: train loss 5.356185 (took 2897.148828 ms)
step 1: train loss 4.301033 (took 2498.365030 ms)
step 2: train loss 4.623316 (took 2358.455841 ms)
step 3: train loss 4.600415 (took 2643.469682 ms)
step 4: train loss 4.616777 (took 2498.933979 ms)
step 5: train loss 4.231482 (took 2356.468469 ms)
step 6: train loss 3.754166 (took 2782.597088 ms)
step 7: train loss 3.652230 (took 2379.824868 ms)
step 8: train loss 4.183515 (took 2408.840079 ms)
step 9: train loss 4.199315 (took 2811.563323 ms)
val loss 4.323445
step 10: train loss 4.288396 (took 2652.485471 ms)
step 11: train loss 3.558984 (took 2501.367965 ms)
step 12: train loss 3.730804 (took 2415.376200 ms)
step 13: train loss 4.159164 (took 2824.504369 ms)
step 14: train loss 3.886458 (took 2460.975123 ms)
step 15: train loss 3.764933 (took 2421.700741 ms)
step 16: train loss 4.143034 (took 2794.475716 ms)
step 17: train loss 3.962718 (took 2374.036900 ms)
step 18: train loss 3.796120 (took 2430.497860 ms)
step 19: train loss 3.371638 (took 2699.907792 ms)
val loss 4.186637
generating:
---
I was so exceptionally drunk:
You would spake for seen'st
Threaten beyond you, 'twas so far too?

<|endoftext|>STRUCTINIUS:
Scheduled since 1539 is
Welcome to Rome:
We meet the indignation of lesser nations' countenance? thank me
---
step 20: train loss 3.880942 (took 2673.638517 ms)
step 21: train loss 4.198619 (took 2409.159397 ms)
step 22: train loss 4.426098 (took 2381.811139 ms)
step 23: train loss 3.685762 (took 2630.524207 ms)
step 24: train loss 3.642307 (took 2409.535371 ms)
step 25: train loss 3.729648 (took 2419.172362 ms)
step 26: train loss 3.549645 (took 2615.432226 ms)
step 27: train loss 3.339360 (took 2397.100638 ms)
step 28: train loss 4.338965 (took 2306.472662 ms)
step 29: train loss 3.812843 (took 2489.614175 ms)
val loss 4.020430
step 30: train loss 4.028022 (took 2830.212721 ms)
step 31: train loss 4.114379 (took 2393.216771 ms)
step 32: train loss 3.575101 (took 2411.546749 ms)
step 33: train loss 4.366093 (took 2782.991834 ms)
step 34: train loss 4.516504 (took 2386.624338 ms)
step 35: train loss 4.434158 (took 2362.931890 ms)
step 36: train loss 4.097423 (took 2722.066351 ms)
step 37: train loss 3.739693 (took 2375.078001 ms)
step 38: train loss 4.612139 (took 2440.452340 ms)
step 39: train loss 3.970823 (took 2657.332781 ms)
val loss 4.016672
generating:
---
Come Kurultan,
Among the geopolitical
Coers and My scullers take one word.

<|endoftext|>Shutth out of the yacht,
Sone of dejected glories
draw'd like an everlasting flame;
But: prying out, as a look in a good canopy
Fairs with
---
step 40: train loss 4.377796 (took 2752.577323 ms)

测试

make test_gpt2
./test_gpt2

测试结果:

[GPT-2]
max_seq_len: 1024
vocab_size: 50257
padded_vocab_size: 50304
num_layers: 12
num_heads: 12
channels: 768
num_parameters: 124475904
[State]
batch_size: 4
seq_len: 64
num_activations: 73347840
-43.431503, -43.431736
-39.836239, -39.836460
-43.065804, -43.066002
-42.827946, -42.828171
-43.529419, -43.529659
-44.318279, -44.318508
-41.227291, -41.227512
-41.270660, -41.270866
-42.541286, -42.541489
-42.394890, -42.395119
OK (LOGITS), max_diff = 8.239746e-04
LOSS OK: 5.269997 5.270007
dwte
OK -0.002320 -0.002320
OK 0.002072 0.002072
OK 0.003717 0.003717
OK 0.001307 0.001307
OK 0.000632 0.000632
TENSOR OK, maxdiff = 1.707077e-04
dwpe
OK -0.005111 -0.005110
OK -0.000011 -0.000013
OK -0.003262 -0.003261
OK 0.009909 0.009908
OK 0.002146 0.002145
TENSOR OK, maxdiff = 1.203269e-05
dln1w
OK -0.007523 -0.007523
OK 0.008642 0.008644
OK 0.005025 0.005028
OK -0.011094 -0.011094
OK -0.001663 -0.001663
TENSOR OK, maxdiff = 4.264116e-04
dln1b
OK -0.038462 -0.038456
OK -0.030591 -0.030595
OK 0.010215 0.010219
OK 0.080178 0.080175
OK -0.060908 -0.060896
TENSOR OK, maxdiff = 1.597637e-04
dqkvw
OK -0.000031 -0.000031
OK -0.000025 -0.000025
OK -0.000064 -0.000064
OK 0.000074 0.000074
OK 0.000020 0.000020
TENSOR OK, maxdiff = 6.203726e-05
dqkvb
OK -0.000412 -0.000411
OK -0.000412 -0.000412
OK 0.000114 0.000114
OK -0.000565 -0.000565
OK 0.000571 0.000570
TENSOR OK, maxdiff = 3.422704e-05
dattprojw
OK 0.000080 0.000080
OK -0.000005 -0.000005
OK -0.000019 -0.000019
OK 0.000004 0.000004
OK 0.000031 0.000032
TENSOR OK, maxdiff = 2.195314e-05
dattprojb
OK 0.000470 0.000472
OK -0.009979 -0.009981
OK -0.001803 -0.001805
OK 0.037585 0.037572
OK -0.031238 -0.031231
TENSOR OK, maxdiff = 1.956336e-05
dln2w
OK -0.018318 -0.018313
OK 0.004812 0.004812
OK 0.008089 0.008089
OK -0.001469 -0.001470
OK -0.002737 -0.002737
TENSOR OK, maxdiff = 1.060128e-03
dln2b
OK -0.026374 -0.026374
OK -0.016703 -0.016702
OK 0.001072 0.001069
OK 0.034711 0.034700
OK -0.028584 -0.028578
TENSOR OK, maxdiff = 8.928776e-05
dfcw
OK 0.000440 0.000440
OK -0.000000 -0.000000
OK -0.000154 -0.000154
OK -0.000165 -0.000165
OK 0.000405 0.000405
TENSOR OK, maxdiff = 1.000613e-04
dfcb
OK 0.003291 0.003294
OK 0.002043 0.002044
OK -0.001386 -0.001386
OK 0.000386 0.000387
OK 0.001603 0.001603
TENSOR OK, maxdiff = 2.483255e-05
dfcprojw
OK 0.000680 0.000681
OK 0.000073 0.000073
OK -0.000416 -0.000416
OK -0.000060 -0.000061
OK -0.000604 -0.000604
TENSOR OK, maxdiff = 4.865497e-05
dfcprojb
OK 0.003583 0.003585
OK -0.007157 -0.007159
OK -0.001962 -0.001963
OK 0.001462 0.001462
OK 0.001217 0.001218
TENSOR OK, maxdiff = 1.481583e-05
dlnfw
OK -0.000022 -0.000022
OK 0.000810 0.000810
OK 0.001161 0.001161
OK -0.002957 -0.002957
OK 0.001145 0.001145
TENSOR OK, maxdiff = 2.471101e-05
dlnfb
OK -0.011101 -0.011100
OK 0.008009 0.008009
OK -0.004771 -0.004771
OK -0.002112 -0.002112
OK -0.005905 -0.005905
TENSOR OK, maxdiff = 4.455447e-06
step 0: loss 5.269997 (took 2538.900264 ms) OK = 1
step 1: loss 4.059699 (took 2211.700180 ms) OK = 1
step 2: loss 3.375026 (took 2289.109099 ms) OK = 1
step 3: loss 2.800780 (took 2558.251191 ms) OK = 1
step 4: loss 2.315454 (took 2279.104378 ms) OK = 1
step 5: loss 1.849150 (took 2161.919211 ms) OK = 1
step 6: loss 1.394839 (took 2540.158140 ms) OK = 1
step 7: loss 0.999173 (took 2233.801734 ms) OK = 1
step 8: loss 0.624303 (took 2302.283686 ms) OK = 1
step 9: loss 0.376687 (took 2553.011337 ms) OK = 1
overall okay: 1

相关链接

“真男人就应该用 C 编程”!大神用 1000 行 C 代码手搓了一个大模型-电子头条-EEWORLD电子工程世界

llm.c代码详细解读(一) - 知乎 (zhihu.com)

Kimi

训练大型语言模型(LLM)通常是一个复杂的过程,涉及到大量的数据预处理、模型设计、训练和优化。虽然C语言是一种强大的编程语言,但它并不是进行机器学习模型训练的常用语言。大多数深度学习框架,如TensorFlow、PyTorch等,都是用Python等高级语言编写的,因为这些语言提供了更多的抽象和库支持,可以简化模型训练的过程。

然而,如果你希望使用C语言来训练LLM,你可以考虑以下几个方面:

  1. 数学库:你需要一个能够进行复杂数学运算的库,比如BLAS、LAPACK或cuBLAS(如果使用GPU加速)。

  2. 并行计算:由于LLM通常需要大量的计算资源,因此使用并行计算技术(如OpenMP或CUDA)是非常重要的。

  3. 深度学习框架:你可能需要自己实现一个深度学习框架,或者寻找一个用C语言编写的框架。这将涉及到实现前向传播、反向传播、梯度下降等算法。

  4. 数据预处理:你需要能够加载和预处理文本数据,这可能涉及到文本清洗、分词、向量化等步骤。

  5. 模型架构:设计适合LLM的神经网络架构,如Transformer、循环神经网络(RNN)等。

  6. 优化算法:实现或集成梯度下降等优化算法,用于更新神经网络的权重。

  7. 性能分析:使用性能分析工具来优化你的代码,比如gprof或valgrind。

  8. 调试和测试:由于C语言的接近硬件的特性,调试可能会比较复杂,需要仔细设计测试用例。

  9. 内存管理:C语言需要手动管理内存,这在处理大型数据集和模型时可能会变得非常复杂。

  10. 社区和资源:与Python等语言相比,使用C语言进行深度学习开发的社区和资源可能较少,这可能会增加开发难度。

总的来说,使用C语言训练LLM是一个具有挑战性的任务,需要深入的编程知识、数学背景和机器学习经验。如果你是一个初学者或者没有足够的资源,可能需要考虑使用更高级的语言和现成的深度学习框架。

如果你有特定的需求或者想要了解更多关于这个话题的信息,请提供更多的细节,我会尽力帮助你。

找到了第 1 篇资料:OpenAI创始大神手搓千行C代码训练GPT,附PyTorch迁移教程

找到了第 2 篇资料:“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大 ...

找到了第 3 篇资料:OpenAI 创始大神手搓千行 C 代码训练 GPT,附 PyTorch ...

找到了第 4 篇资料:颠覆LLM训练方法!Karpathy仅凭1000行C语言代码、一台 ...

找到了第 5 篇资料:llm.c代码详细解读(一) - 知乎

找到了第 6 篇资料:“真男人就应该用 C 编程”!用 1000 行 C 代码手搓了一个大 ...

找到了第 7 篇资料:颠覆LLM训练方法!Karpathy仅凭1000行C语言代码、一台 ...

找到了第 8 篇资料:探索 Karpathy 的 `llm.c`: 一个轻量级语言模型工具 - CSDN博客

找到了第 9 篇资料:纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了_澎湃 ...

根据提供的搜索结果,Andrej Karpathy,这位特斯拉前AI总监和OpenAI的创始成员,开发了一个名为llm.c的项目,该项目使用纯C语言训练大型语言模型(LLM),如GPT-2。这个项目的特点和步骤可以总结如下:

  1. 项目简介llm.c是一个用C语言编写的简单项目,旨在提供一个低级别的接口来训练大型语言模型。它不需要依赖庞大的库如PyTorch或Python,从而显著减少了依赖库的体积。

  2. 代码量和效率:Karpathy仅用大约1000行简洁的C代码完成了GPT-2模型的训练。这种方法不仅减少了依赖,还能与PyTorch的参考实现相匹配,并且可以立即编译和运行。

  3. 内存管理:在项目的开始阶段,所有需要的内存被一次性分配,训练过程中内存占用保持不变,数据批次在不同批次之间动态流动。

  4. 核心实现:关键在于手动实现每个单独层的前向传播和反向传播,并将它们串联起来。这包括编码器、matmul、自注意力、gelu、残差、softmax和交叉熵损失等。

  5. CUDA移植:Karpathy正在将这些层逐层移植到CUDA上,以提高效率,使其接近PyTorch的性能,同时减少依赖。

  6. 项目优势

    • 代码简洁性:使用更少的代码完成模型训练,降低了复杂度。
    • 独立性:不依赖外部库,使得部署和运行更加轻便快捷。
    • 高效性:直接使用C/CUDA进行编程,提高计算效率和训练速度。
  7. 社区反馈:项目发布后迅速获得社区的积极响应,许多人对使用C语言进行深度学习训练表示出了兴趣。

  8. 开源和教程:Karpathy将llm.c项目开源在GitHub上,并提供了从PyTorch迁移到C语言的教程。

  9. 未来发展:Karpathy计划发布视频进行更详细的讲解,并探索使用SIMD指令加速CPU版本,以及支持更现代的架构如Llama2和Gemma。

  10. 实践指南:项目还提供了快速开始的指南,包括数据集的下载和tokenize,使用预训练权重进行模型初始化,以及如何用原始C语言进行模型训练。

通过这些步骤和特点,我们可以看出llm.c项目是一个创新的尝试,它展示了即使在不使用主流深度学习框架的情况下,也能高效地进行LLM的训练。这对于希望减少依赖、提高性能或者对深度学习底层实现感兴趣的开发者来说,是一个宝贵的资源。

ChatGPT

用C语言编写一个大型语言模型(LLM)如GPT-3或BERT等的训练框架是非常具有挑战性的,但理论上是可能的。以下是如果你决定用C语言开发LLM训练框架可能需要考虑的几个方面:
1. **数学计算库** - 你需要高效的线性代数库来支持大量的矩阵运算,因为神经网络的训练需要大量的矩阵乘法、向量加法等操作。你也可能需要实现或利用现有的自动微分库来进行梯度的计算。
2. **并行计算** - 训练大型模型需要大量计算资源,通常需要GPU或TPU等硬件加速。在C语言中,为了最大化硬件性能,你可能需要使用CUDA或OpenCL等来编程这些硬件。
3. **数据处理** - 在训练之前需要对大量的数据进行预处理,这可能包括文本的标记化、编码、批处理等。C语言处理这些任务可能不像Python那么方便,但仍然是可以做到的。
4. **分布式计算** - 由于模型和数据的规模可能很大,训练过程可能需要在多个节点上分布式运行。实现有效的分布式计算和通信是另一大挑战。
5. **内存管理** - C语言不像一些高级语言如Python具有自动垃圾收集机制,你需要手动管理内存的分配和释放,这在处理大规模数据集时尤其重要。
6. **模型架构** - 实现模型的各个层次,如Transformer层、注意力机制、前馈网络等,需要深入理解这些结构并使用C语言准确实现它们。
7. **优化算法** - 实现各种优化算法(如Adam、SGD等)并且确保它们在大规模数据集上能够稳定运行。
尽管有以上挑战,使用C语言可以带来性能上的优势,因为它能提供更接近硬件层面的控制。然而,现代的深度学习框架(如TensorFlow、PyTorch等)大多是用C++编写底层计算代码,并提供Python接口以方便使用、迭代和社区贡献。因此,如果没有非常充分的理由,通常建议使用现成的框架进行LLM训练。如果需要性能优化,你可以考虑在现有框架的基础上进行定制,而不是完全从头开始用C语言编写。

讯飞星火

LLM(Language Model)是一种基于深度学习的自然语言处理模型,通常使用神经网络进行训练。在C语言中,我们可以使用一些深度学习库来实现LLM的训练,例如FAIR的FastText库。以下是一个简单的C语言实现LLM训练的示例:

首先,安装FastText库。在终端中输入以下命令:

git clone https://github.com/facebookresearch/fastText.git
cd fastText
mkdir build
cd build
cmake ..
make
make install

准备训练数据。创建一个名为train.txt的文件,其中包含用于训练LLM的文本数据。每行表示一个文本样本,用空格分隔单词。例如:

我 爱 北京 天安门
你 好 世界

编写C语言代码来训练LLM。创建一个名为llm_train.c的文件,然后将以下代码粘贴到文件中:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "fasttext.h"

int main(int argc, char **argv) {
    if (argc != 2) {
        printf("Usage: %s <train_data>
", argv[0]);
        return 1;
    }

    const char *train_data = argv[1];
    const char *model_output = "model";
    const int epoch = 5;
    const int lr = 0.1;
    const int dim = 100;
    const int ws = 5;
    const int minCount = 1;
    const int neg = 5;
    const int wordNgrams = 1;
    const int loss = ns::sampled_softmax;
    const double label = '__label__';

    printf("Training LLM with FastText...
");
    FastText ft;
    ft.setTrainMethod(loss);
    ft.setDimension(dim);
    ft.setWindowSize(ws);
    ft.setMinCount(minCount);
    ft.setNegativeSamples(neg);
    ft.setWordNgrams(wordNgrams);
    ft.setLearningRate(lr);
    ft.train(train_data, epoch, model_output);

    printf("Model saved to %s.bin
", model_output);
    return 0;
}

编译并运行代码。在终端中输入以下命令:

gcc -o llm_train llm_train.c -I../src -L../build -lfasttext -lm -pthread -O3
./llm_train train.txt

训练完成后,模型将保存为model.bin文件。可以使用FastText提供的其他工具来评估和测试模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1645613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序&#xff0c;可以看到WeChatAppEx的流量先经过Proxifier&#xff0c;再经过127.0.0.1:8080到Burp

基于现有语言大模型,定制“人人AI气象”公众号天气助手

最近&#xff0c;月之暗面的Kimi大模型非常受欢迎&#xff0c;尝试用了moonshot(128K)基座模型&#xff0c;通过调用各种公开渠道的API&#xff0c;简易实现了一个天气助手&#xff0c;可以回答天气相关的基础概念、原理、应用等方面的问题&#xff0c;同时也可调用多个插件获取…

音频可视化:原生音频API为前端带来的全新可能!

音频API是一组提供给网页开发者的接口&#xff0c;允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具&#xff0c;开发者可以实现自定义的音…

MoonBit 开源之夏重磅来袭!12000元奖金等你来拿!

宣讲视频 MoonBit 开源之夏宣讲视频 关于我们 开源之夏 「开源之夏 (OSPP)」是中科院软件所「开源软件供应链点亮计划」指导下的系列暑期活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区…

JavaScript中Math函数与舍入

立方根 console.log(Math.sqrt(25)); //数学方式25平方根 console.log(25 ** (1 / 2)); //25的0.5次方 console.log(8 ** (1 / 3)); //8的1/3次方计算最大最小值 console.log(Math.max(1, 5, 88, 22, 132)); //返回最大值 console.log(Math.max(1, 5, 88, 22, 132)); //…

【C语言】高质量选择题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目八&#xff1a; 题目九&#xff1a; 题目十&#xff1a; 题目十一&#xff1a; 题目十二&#xff1a; 题目十…

快捷回复软件让你告别回复慢

可能自己是个客服的原因&#xff0c;一连几天大数据给我推了一个叫“客服宝聊天助手”的软件。用了几天真心觉得好用&#xff0c;能解决我回客户很慢的困扰。如果大家对快捷回复软件感兴趣&#xff0c;可以接着了解哦&#xff01; 一、减少复制粘贴 传统的客服工作中&#xff…

75.网络游戏逆向分析与漏洞攻防-角色与怪物信息的更新-伪造服务端更新属性消息欺骗客户端

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

【查找算法】之二分查找

一、算法介绍 二分查找&#xff0c;也称为折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。对于包含 n 个元素的有序数组&#xff0c;二分查找的步骤如下&#xff1a; 确定搜索范围&#xff1a;首先&#xff0c;将要查找的元素与数组中间的元素进行比较。如果…

基于 Linux 自建怀旧游戏之 - 80 款 H5 精品小游戏合集

1&#xff09;简介 最近又找到了一款宝藏游戏资源分享给大家&#xff0c;包含 80 款 H5 精品小游戏&#xff0c;都是非常有趣味耐玩的游戏&#xff0c;比如 植物大战僵尸、捕鱼达人、贪吃蛇、俄罗斯方块、斗地主、坦克大战、双人五子棋、中国象棋 等等超级好玩的 H5 小游戏&…

Chrome浏览器命令行妙用:使你的网上冲浪更加无障碍

引言 在当今数字化时代&#xff0c;网络浏览器已成为我们日常生活中不可或缺的工具之一。对于许多人来说&#xff0c;Google Chrome浏览器是首选&#xff0c;不仅因为它的普及度&#xff0c;更因为它提供的丰富功能和高度的可定制性。在Chrome的众多特性中&#xff0c;命令行功…

景源畅信数字:抖音怎么挂橱窗商品?

抖音作为一款短视频分享平台&#xff0c;近年来逐渐融入了电商功能&#xff0c;其中“橱窗”就是商家或个人展示和销售商品的一个重要工具。如何在抖音上挂橱窗商品&#xff0c;成为了众多商家关注的焦点。 一、确保账号资质&#xff1a;在抖音上挂橱窗商品前&#xff0c;需要确…

iOS ------ JSONModel源码

一&#xff0c;JSONModel的基本使用 1&#xff0c;基本使用方法 - (instancetype)initWithDictionary:(NSDictionary *)dict error:(NSError **)err; - (instancetype)initWithData:(NSData *)data error:(NSError **)error; - (instancetype)initWithString:(NSString *)str…

yolov5-pytorch-Ultralytics训练+预测+报错处理记录

一、前言 玩一段时间大模型&#xff0c;也该回归一下图像识别。本项目用于记录使用基于Ultralytics的yolov5进行目标检测测试。为什么用Ultralytics呢&#xff1f;答案有3 1、其良好的生态&#xff0c;方便我们部署到其它语言和设备上。因此本次测试结论&#xff1a;大坑没有&…

华为手机连接电脑后电脑无反应、检测不到设备的解决方法

本文介绍华为手机与任意品牌电脑连接时&#xff0c;出现连接后电脑无反应、检测不到手机连接情况的解决方法。 最近&#xff0c;因为手机的存储空间愈发紧缺&#xff0c;所以希望在非华为电脑中&#xff0c;将华为手机内的照片、视频等大文件备份、整理一下。因此&#xff0c;需…

2024年化学材料、清洁能源与生物技术国际学术会议(ICCMCEB2024)

2024年化学材料、清洁能源与生物技术国际学术会议(ICCMCEB2024) 会议简介 2024国际化学材料、清洁能源和生物技术大会&#xff08;ICCMCEB2024&#xff09;将在长沙隆重举行。本次会议旨在汇聚来自世界各地的化学材料、清洁能源和生物技术领域的专家学者&#xff0c;共同探…

Vite构造Vue3

环境安装 node.js安装-CSDN博客 初始化Vue项目安装脚手架_vue init webpack安装脚手架-CSDN博客 选择Vue框架 &#xff0c;项目名称可以自定义&#xff0c;我使用默认的 vite-project 选择JS 进入项目安装依赖 安装路由

创新指南|组织健康仍然是企业创新长期绩效的关键

麦肯锡关于组织健康的最新调查结果表明&#xff0c;它仍然是当今全球市场中价值创造的最佳预测者和竞争优势的可持续来源。在本文中&#xff0c;我们将探讨最新的 OHI 结果&#xff0c;并重点介绍该指数揭示的有关领导力、数据和技术以及人才管理的一些更引人注目的见解。我们还…

【华为】IPSec VPN手动配置

【华为】IPSec VPN手动配置 拓扑配置ISP - 2AR1NAT - Easy IPIPSec VPN AR3NATIPsec VPN PC检验 配置文档AR1AR2 拓扑 配置 配置步骤 1、配置IP地址&#xff0c;ISP 路由器用 Lo0 模拟互联网 2、漳州和福州两个出口路由器配置默认路由指向ISP路由器 3、进行 IPsec VPN配置&…

数据结构===树

文章目录 概要概念相关概念 有哪些常用的树小结 概要 树是一种新的数据结构&#xff0c;不同于数组&#xff0c;链表。就像大自然中的树&#xff0c;看下这个数据结构&#xff0c;很有意思&#xff0c;有一个主干&#xff0c;然后还有很多树叉&#xff0c;即支干。不错&#xf…