OpenVINO™ 2024.2 发布--推出LLM专属API !服务持续增强,提升AI生成新境界

news2024/10/25 0:37:08

点击蓝字

关注我们,让开发变得更有趣

作者 | 武卓 博士

排版 | 李擎

d013fddbb18874120c4c7a01ccf03d8c.png

Hello, OpenVINO™ 2024.2

对我们来说,这是非常忙碌的几周,因为我们正在努力根据您的反馈改进我们的产品特性,并扩展生态系统以涵盖其它场景和用例。

让我们看看我们所做的最重要的更改。有关更详细的列表,您可以随时参考我们的完整 [新版本说明]

https://docs.openvino.ai/2024/about-openvino/release-notes-openvino.html

OpenVINO™

隆重推出 OpenVINO.GenAI 软件包和 LLM特定 API

生成式 AI 正在被应用程序设计人员快速地使用着。这不仅体现在使用来自商业云服务模型的传统REST API形式上,而且还发生在客户端和边缘。越来越多的数据正在客户端处理,通过AIPC,我们为此开始看到更多的机会。其中一种场景是人工智能助手,它能够生成文本(邮件草稿、文档摘要、文档内容的答案等等)。这一切都由 LLM(大型语言模型)和不断增长的 SLM(小型语言模型)系列提供支持。

我们引入了新的软件包 openvino-genai,它使用OpenVINO™ 以及其中的openvino_tokenizers,因此如果您打算运行 LLM,安装此软件包就足够了。经典的 OpenVINO API 也支持其它类型的模型,因此现在流水线构建变得更加容易。我们的安装选项也进行了更新,以便反映并指导使用新软件包,因此请在那里查看您最合适的选项。经典的 OpenVINO™ 软件包仍然存在,如果您暂时不打算使用生成式 API,请继续使用 openvino 软件包。

安装选项更新:

https://docs.openvino.ai/2024/get-started/install-openvino.html

经典OpenVINO™软件包:

https://www.intel.cn/content/www/cn/zh/developer/tools/openvino-toolkit/download.html

为了通过 LLM 生成结果,应用程序需要执行整个操作流水线:执行输入文本的分词,处理输入上下文,迭代生成模型答案的后续输出分词,最后将答案从分词解码为纯文本。每个分词的生成都是推理调用,然后是后续逻辑来选择分词本身。逻辑可以是贪婪搜索的形式,也就是选择最可能的分词,也可以是波束搜索的形式,即保持很少的序列并选择其中最好的。

虽然OpenVINO™在推理方面大放异彩,但正如我们刚才所讨论的,这还不足以涵盖整个文本生成的流水线。在 2024.2 版本之前,我们提供了帮助程序(分词器和示例)来实现这一点,但应用程序必须使用这些组件实现整个生成逻辑。现在这种情况正在发生改变。

在 24.2 版本中,我们引入了特定于 LLM 的 API,这些 API 隐藏了内部生成循环的复杂性,并显著减少了需要在应用程序中编写的代码量。通过使用特定于 LLM 的 API,您可以加载模型,向其传递上下文,并通过几行代码返回响应。在内部,OpenVINO™将对输入文本进行分词化,在您选择的设备上执行生成循环,并为您提供答案。让我们一步一步地看看这是如何使用Python和C++完成的。

第一步

通过Hugging Face Optimum-Intel导出

 LLM 模型(我们使用了针对聊天微调的 Tiny Llama)

以下是将OpenVINO IR格式的LLM模型导出为FP16或INT4精度的两种方式。为了使LLM推理性能更高,我们建议对模型权重使用较低的精度,即INT4,并在模型导出过程中直接使用神经网络压缩框架(NNCF)压缩权重,如下所示。

FP16:

optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format fp16 --trust-remote-code

INT4:

optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format int4 --trust-remote-code

第二步

 使用C++或Python进行生成

通过新的C++ API进行LLM生成

#include "openvino/genai/llm_pipeline.hpp"
#include <iostream>


int main(int argc, char* argv[]) {
    std::string model_path = argv[1];
    ov::genai::LLMPipeline pipe(model_path, "CPU");//target device is CPU
    std::cout << pipe.generate("The Sun is yellow bacause"); //input context
}

通过新的 Python API 进行生成

import openvino_genai as ov_genai
pipe = ov_genai.LLMPipeline(model_path, "CPU")
print(pipe.generate("The Sun is yellow bacause"))

如您所见,只需要几行代码就能建立一个LLM生成的流水线。这是因为,从 Hugging Face Optimum-Intel 导出模型后,它已经存储了执行所需的所有信息,包括分词器/反分词器和生成配置,从而能够获得与 Hugging Face 生成匹配的结果。我们提供 C++ 和 Python API 来运行 LLM、最少的依赖项列表和对应用程序的添加。

为了实现生成式模型更具交互性的UI界面,我们添加了对模型输出分词流式处理的支持。在下面的示例中,我们使用简单的 lambda 函数在模型生成单词后立即将单词输出到控制台:

#include "openvino/genai/llm_pipeline.hpp"
#include <iostream>


int main(int argc, char* argv[]) {
    std::string model_path = argv[1];
    ov::genai::LLMPipeline pipe(model_path, "CPU");
        
    auto streamer = [](std::string word) { std::cout << word << std::flush; };
    std::cout << pipe.generate("The Sun is yellow bacause", streamer);
}

您也可以创建自定义流处理器进行更复杂的处理,这在我们的 [文档] 中进行了描述。

文档:

https://docs.openvino.ai/2024/learn-openvino/llm_inference_guide/genai-guide.html

最后,我们还研究了聊天场景,其中输入和输出代表对话,并且有机会以在输入之间保留 KV缓存 的形式进行优化。为此,我们引入了聊天特定方法 start_chat 和 finish_chat,它们用于标记会话的开始和结束。下面是一个非常简单的 C++ 示例:

int main(int argc, char* argv[]) {
    std::string prompt;


    std::string model_path = argv[1];
    ov::genai::LLMPipeline pipe(model_path, "CPU");
    
    pipe.start_chat();
    for (;;) {
        std::cout << "question:\n";
        std::getline(std::cin, prompt);
        if (prompt == "Stop!")
            break;


        std::cout << "answer:\n";
        auto answer = pipe(prompt);
        std::cout << answer << std::endl;
    }
    pipe.finish_chat();
}

在上面的所有示例中,我们都使用 CPU 作为目标设备,但 GPU 也同样是支持的。请记住,GPU 将为 LLM 本身运行推理,分词选择逻辑和分词化/去分词化将保留在 CPU 上,因为这更有效率。内置的分词器以单独的模型形式表示,并通过我们的推理功能在 CPU 上运行。

这个 API 使我们能够更灵活、更优化地实现生成逻辑,并不断扩展。请继续关注后续发布版本中的更多功能!

同时,请务必查看我们的 [文档] [示例] 以获取新的 API,尝试后告诉我们你的想法。

文档:

https://docs.openvino.ai/2024/learn-openvino/llm_inference_guide/genai-guide.html

示例:

https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-question-answering

OpenVINO™

通过OpenVINO扩展模型服务 

通过服务化部署模型是一个非常成熟的方法论,并且随着基于微服务的部署不仅在传统的云环境中扩展,同时也在向边缘计算领域扩展,这一需求日益增长。更多的应用被开发为微服务,并部署在智能边缘和云中。在2024.2 版本中,我们引入了对服务场景的额外支持。让我们来看看最重要的变化。

OpenVINO模型服务器是我们长期开发的模型服务解决方案,它被应用程序广泛采用,以最有效的方式为模型提供服务。在此版本中,我们引入了通过称为连续批处理的机制为LLM提供高效服务的能力。

连续批处理:

https://www.anyscale.com/blog/continuous-batching-llm-inference

从本质上讲,连续批处理允许我们通过将多个请求合并到批处理中来以最有效的方式实现推理服务。由于生成过程中上下文大小的差异,传统批处理文本生成方案的方式非常有限。实际上,不可能找到两个相同长度的不同请求并生成相同长度的输出来执行传统的请求批处理。为了解决这个问题,我们采用了分页注意力方法,就像在 vLLM 实现中的那样。这使我们能够将多个请求合并到同一模型中,并提高硬件利用率。不过,调度请求的内部逻辑是不同的,我们考虑了 CPU 在设计时使其更高效的细节,结合了高吞吐量和低延迟,使其更高效。

为了以最适应应用程序的方式部署 LLM,我们在文本生成的使用场景实现了 OpenAI 兼容的API。我们的实现包括 连续批处理和分页注意力算法,因此文本生成可以在高并发负载下快速高效。这使得您可以允许在云中或本地(如果需要的话)创建自己的类似 OpenAI 的 LLM 服务端点。

尽管 LLM 备受瞩目,但传统的深度学习模型作为独立解决方案或大型流程的一部分仍有着高度需求。OVMS 可以长时间高效地部署这些模型,但对其它部署解决方案的需求非常高,因此我们为服务场景引入了一些额外的 OpenVINO™ 集成:通过 TorchServe 和 Nvidia Triton 提供服务

OpenVINO™ 长期以来一直为 Triton Serving 提供后端,我们最近与 Nvidia 工程师合作,重新设计了它的附加功能,例如支持动态输入。您可以在我们的博客文章中查看有关如何在 Triton 中使用 OpenVINO™ 的更多详细信息。

博客文章:

https://medium.com/openvino-toolkit/how-to-serve-models-on-nvidia-triton-inference-server-with-openvino-backend-a4c36300ee21

服务功能的另一个重要补充是通过使用 torch.compile 的 OpenVINO™ 后端,使用 TorchServe 为模型提供服务。在引入 torch.compile 之后,TorchServe 引入了通过不同后端加速服务的功能。这正是OpenVINO™现在发生的事情,我们提供了在TorchServe中指定OpenVINO™作为后端的功能。有关更多详细信息,您可以查看示例,这些示例非常简单且不言自明。

torch.compile 的 OpenVINO™ 后端:

https://docs.openvino.ai/2024/openvino-workflow/torch-compile.html

示例:

https://github.com/pytorch/serve/tree/master/examples/pt2/torch_compile_openvino

OpenVINO™

性能提升

我们仍然专注于 AI 模型的性能表现。尽管 AIPC 的出现,LLM 在客户端的采用仍然对底层硬件产生压力。我们的优化工作覆盖了不同的支持目标,包括 CPU、GPU 和 NPU。

AIPC与传统PC的不同在于它集成了专门的硬件加速器,随着AI应用场景从云端转向个人计算领域,其重要性日益增加。英特尔®酷睿™Ultra处理器提供了更强大的GPU以及NPU。从性能和效率的角度来看,这些都让加速解决方案更具吸引力。

如果平台性能不足,我们始终能够通过添加我们的ARC系列独立显卡进行加速,来实现进一步的性能提升。为了帮助实现LLM部署特性,我们一直专注于加速GPU的LLM的推理性能,覆盖了集成显卡和独立显卡。将负载卸载到 GPU 不仅是因为它的特性适宜处理这类工作负载,还因为需要保持 CPU 可用。因此,推理期间的 CPU 负载对于此类情况至关重要。我们一直在努力优化 CPU 端负载并减少主机代码延迟至少一半。这也使我们能够实现更好的 GPU 特性,因为内核调度现在更加高效。

此外,我们还致力于少数GPU基本操作的更高效实现,包括 Scaled Dot Product Attention 和 Positional Embeddings 的融合版本。这不仅改善了延迟,还减少了推理期间的主机开销和整体内存消耗,这对于在笔记本电脑上运行 LLM 等场景至关重要。

独立显卡上一些LLM的延迟已经降低,我们正与oneDNN团队的合作伙伴一起,继续我们的优化之旅。

虽然我们经常谈论 GPU,但 CPU 等其他目标设备的性能也有所改进。在CPU上,第二个分词延迟的性能得到了明显改善,以及在基于AVX2(13代英特尔酷睿处理器)和AVX512(第三代至强可扩展处理器)的CPU平台上,FP16权重的LLM的内存占用情况也得到了明显改善,尤其是在小批量的情况下。更不用说,我们还在 Optimum-Intel 集成中持续增加了对新模型的覆盖。

OpenVINO™

新模型和notebooks示例

在每次发布的新版本中,我们都会继续扩大对新模型的支持,以及增加新的Notebook代码示例,展示如何在这些使用用例中利用OpenVINO™。对于新模型,我们增加了对TensorFlow*Hub的mil-nce和openimages-v4-sd-mobilent-v2的支持,以及Phi-3-mini:这是一个AI模型家族,利用小语言模型的力量实现更快、更准确和更具成本效益的文本处理。

Notebooks代码示例可以成为用户学习和体验的宝贵内容。在这个版本中,我们添加了几个新的Notebooks。最值得注意的是用于动画图像的DynamiCrafter notebook,用于转换和优化YOLOv10为OpenVINO™的notebook,以及在现有LLMChatbot notebook中添加Phi-3-mini模型,以便用户可以尝试更多的LLM模型。

  • 可以在以下地址找到最新的带有GitHub验证状态的notebooks

    https://openvinotoolkit.github.io/openvino_notebooks/

  • 以下是已更新或新添加的notebooks:

  • Image to Video Generation with Stable Video Diffusion

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/stable-video-diffusion/stable-video-diffusion.ipynb

  • Image generation with Stable Cascade

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/stable-cascade-image-generation/stable-cascade-image-generation.ipynb

  • One Step Sketch to Image translation with pix2pix-turbo and OpenVINO

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/sketch-to-image-pix2pix-turbo/sketch-to-image-pix2pix-turbo.ipynb

  • Animating Open-domain Images with DynamiCrafter and OpenVINO

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/dynamicrafter-animating-images/dynamicrafter-animating-images.ipynb

  • Text-to-Video retrieval with S3D MIL-NCE and  OpenVINO

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/s3d-mil-nce-text-to-video-retrieval/s3d-mil-nce-text-to-video-retrieval.ipynb

  • Convert and Optimize YOLOv10 with OpenVINO

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/yolov10-optimization/yolov10-optimization.ipynb

  • Visual-language assistant with nanoLLaVA and OpenVINO

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/nano-llava-multimodal-chatbot/nano-llava-multimodal-chatbot.ipynb

  • Person Counting System using YOLOV8 and OpenVINO™

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/person-counting-webcam/person-counting.ipynb

  • Quantization-Sparsity Aware Training with NNCF, using PyTorch framework

    https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/pytorch-quantization-sparsity-aware-training/pytorch-quantization-sparsity-aware-training.ipynb

OpenVINO™

总结

在此,我们兴奋地宣布OpenVINO™ 2024.2最新版本现已开放下载!

我们的团队一直致力于各项新特性和性能提升的研发。一如既往,我们努力不断优化用户体验,拓宽OpenVINO™的功能边界。我们的开发路线图上已经规划了下一版本的诸多特性,迫不及待在未来与您分享。感谢大家的支持与厚爱!

OpenVINO™

--END--

点击下方图片,让我们一起成为“Issues 猎手”,共创百万用户开源生态!
你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ 助力 Qwen 2 —— 开启大语言模型新时代➡️ 揭秘XPU架构下AIGC的推理加速艺术--AI PC 新纪元:将 AI 引入 NPU,实现快速低功耗推理➡️ 隆重介绍 OpenVINO™ 2024.0: 为开发者提供更强性能和扩展支持➡️ 隆重推出 OpenVINO 2023.3 ™ 最新长期支持版本➡️ OpenVINO™ 2023.2 发布:让生成式 AI 在实际场景中更易用➡️ 开发者实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ 开发者实战系列资源包来啦!
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2024.1

点击 阅读原文 获取最新版OpenVINO™2024.2

评论区已开放,欢迎大家留言评论!

文章这么精彩,你有没有“在看”?

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

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

相关文章

【Python】使用matplotlib绘制图形(曲线图、条形图、饼图等)

文章目录 一、什么是matplotlib二、matplotlib 支持的图形三、如何使用matplotlib1. 安装matplotlib2. 导入matplotlib.pyplot3. 准备数据4. 绘制图形5. 定制图形6. 显示或保存图形7. &#xff08;可选&#xff09;使用subplots创建多个子图注意事项&#xff1a; 四、常见图形使…

软考高级论文真题“论湖仓一体架构及其应用”

论文真题 随着5G、大数据、人工智能、物联网等技术的不断成熟&#xff0c;各行各业的业务场景日益复杂&#xff0c;企业数据呈现出大规模、多样性的特点&#xff0c;特别是非结构化数据呈现出爆发式增长趋势。在这一背景下&#xff0c;企业数据管理不再局限于传统的结构化OLTP…

算法008:四数之合

四数之和. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/4sum/description/ 在前面的两个题中&#xff0c;我们已经完成了两数之和和三数之和&#xff0c;到本题四…

【linux】奇怪?linux搭建离线仓库为什么执行yum grouplist没有信息呐?

奇怪&#xff1f;linux搭建离线仓库为什么执行yum grouplist没有信息呐&#xff1f; 正常现象如下&#xff1a; 怎么样才能解决这个问题&#xff1f; 1、在同系统、同正常环境下查找一下groups.xml find / -name "*groups*.xml"可以看到下面有很多groups.xml 2、在…

Transformer 模型的 PyTorch 实现

Google 2017年的论文 Attention is all you need 阐释了什么叫做大道至简&#xff01;该论文提出了Transformer模型&#xff0c;完全基于Attention mechanism&#xff0c;抛弃了传统的RNN和CNN。 我们根据论文的结构图&#xff0c;一步一步使用 PyTorch实现这个Transformer模型…

智慧乡村和美人家信息化系统

一、简介 智慧乡村和美人家信息化系统是一个综合管理平台&#xff0c;集成了首页概览、一张图可视化、数据填报、智能评估、便捷申报、公开公示、任务管理、活动发布和灵活配置等功能。该系统不仅提升了乡村管理效率&#xff0c;也优化了家庭生活的便捷性。通过一张图&#xf…

搭建群辉AudioStation音乐库

目录 1、安装套件 2、配置歌词插件 3、配置音乐库 4、PC端使用 5、手机APP (1)DS Audio (2)音流 6、关于歌曲信息及封面 (1)歌词 (2)封面 作为音乐爱好者,在NAS上存了大量的无损音乐,用文件流量的方式播放,体验未免欠佳。这次我们打造自己的音乐库,随时随…

360vr党建线上主题展立体化呈现企业的文化理念和品牌形象

在现代科技的引领下&#xff0c;艺术与VR虚拟现实技术相融合必将成为趋势&#xff0c;深圳VR公司华锐视点荣幸地推出VR艺术品虚拟展厅&#xff0c;为您带来前所未有的艺术观赏体验。体验者足不出户即可置身于一个充满创意与灵感的虚拟艺术空间。 我们深入了解每一位客户的需求与…

数据库7大约束

4 约束 数据类型 什么是数据&#xff1a;数字、小说、图片、音乐、视频 针对不同的数据展现形式&#xff0c;我们对数据进行了分类&#xff0c;数据类型。 数字类型&#xff1a;存放数字的&#xff0c;int浮点型类型&#xff1a;存放数字&#xff0c;float&#xff0c;小数字…

大数据关联规则算法

关联性&#xff08;Association&#xff09; 定义&#xff1a;指一个变量能够提供有关另一个变量的信息。特点&#xff1a;关联性是一个广泛的概念&#xff0c;它可以包括直接的、间接的、强的或弱的联系。 相关性&#xff08;Correlation&#xff09; 定义&#xff1a;指两个…

低版本火狐浏览器报错:class is a reserved identifier

低版本火狐浏览器报错&#xff1a;class is a reserved identifier 原因&#xff1a;react-dnd&#xff0c;dnd-core 等node包的相关依赖有过更新&#xff0c;使得在低版本火狐浏览器中不支持 class 解决方法&#xff1a;在使用webpack打包构建时&#xff0c;编译排除node_modu…

SonarQube集成Jenkins平台搭建

SonarQube平台搭建 一、项目搭建的必要条件 SonarQube 8.9.10 previous LTS 依据公司现有服务目前的Jdk版本1.8&#xff0c;需要选择一个适用的长期支持版本&#xff0c;我在这里选用的是SonarQube 8.9.10 previous LTS。下载地址&#xff1a;Download Previous SonarQube Ver…

2000-2022年全国平均气温数据,多年份,多字段可查询,可预览数据

基本信息. 数据名称: 全国平均气温数据 数据格式: Shp、Excel 数据时间: 2000-2022年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1xzqhdm行政区划代码2xzqhmc行政区划名称3qw2001m01…

E36150系列 自动量程台式电源

E36150系列 自动量程台式电源 <<<KEYSIGHT是德科技>>> “ Keysight E36150 系列自动量程台式直流电源包含两个型号&#xff0c;其单通道输出功率可达 800 W。 E36150 系列可输出高达 60 V 的电压和 80 A 的电流&#xff0c;其可用功率足以满足您的测试需…

MySQL之优化服务器设置(四)

优化服务器设置 InnoDB的IO配置 双写缓冲(Doublewrite Buffer) InnoDB用双写缓冲来避免页没写完整所导致的数据损坏。当一个磁盘写操作不能完整地完成时&#xff0c;不完整的页写入就可能发生&#xff0c;16KB的页可能只有一部分被写到磁盘上。有多种多样的原因(崩溃、Bug&am…

阿里云PAI大模型评测最佳实践

作者&#xff1a;施晨、之用、南茵、求伯、一耘、临在 背景信息 内容简介 在大模型时代&#xff0c;随着模型效果的显著提升&#xff0c;模型评测的重要性日益凸显。科学、高效的模型评测&#xff0c;不仅能帮助开发者有效地衡量和对比不同模型的性能&#xff0c;更能指导他…

OS复习笔记ch11-3

接下来&#xff0c;我们简单地回顾一下I/O缓冲&#xff08;之前在ch5-4-1的时候有提到过&#xff09; I/O缓冲 背景&#xff1a; 假设进程I/O需要在灰色区间读写&#xff0c;而灰色区间由于阻塞而被对换出去了&#xff0c;此时OS找不到对应的内存地址&#xff0c;这样就容易发…

Shell脚本、相关命令;重定向、管道符、变量相关命令讲解

目录 Shell脚本 概念 执行命令流程的交互区别 交互式 非交互式 Shell脚本应用场景 Shell的作用 Shell的作用 —— 命令解释器&#xff0c;“翻译官” 列出系统中全部解释器 实验 脚本的基本书写格式和执行命令 在子bash下执行脚本 指定解释器的方式执行脚本 指定…

nodejs的await和async

例子 const fs require(fs).promises;async function getFileContent(filePath) {const content await fs.readFile(filePath, utf8); console.log(content); // 这行会在文件读取完成后执行 }getFileContent(example.txt); console.log(123); // 这行会立即执行输出结果&…

/usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda

/usr/bin/ld: 当搜索用于 /lib/i386-linux-gnu/libcuda.so 时跳过不兼容的 -lcuda ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/023dbdeb215b4b4580f7f54706e32af9.pn当使用unsloth做微调时&#xff0c;发现找不到libcuda&#xff0c;很自然想到需要软链接到最新…