懒人通道

官网提供了懒人包,使用的时候不需要关注整个打包流程,,下面是官方的cuda示例,当然官方提供可选项很多,Available: cublas, openblas, clblas, metal,hipblas, sycl_f16, sycl_f32

docker中gpu使用方法https://localai.io/features/gpu-acceleration/,如果你需要使用其他加速设备,就需要手动编译这个项目了,官方提供了各种系统的编译方法https://localai.io/basics/build/#Acceleration

Ps:对于只需要部分功能的人来说,懒人包占用60G的空间,让我们有点寒暄

介绍

下面在介绍编译之前,我们先了解下LocalAi的架构

LocalAI这个项目架构集成了各种语言(C++,Golang,Python等)通过编写一套GRPC实现不同模型加速服务接入。 LocalAI 的所有组件可在 模型兼容性表查看

Oh, and let’s not forget the real MVP here—llama.cpp. Without this extraordinary piece of software, LocalAI wouldn’t even exist. So, a big shoutout to the community for making this magic happen!



Ps: 好奇怪的画风^(^

GPU设备

LocalAi官方提供可选项很多,比如: cublas, openblas, clblas, metal,hipblas, sycl_f16, sycl_f32,这些设备的支持方法你可以在这个页面找到https://localai.io/basics/build/#Acceleration

环境配置

LocalAI由于提供了Dockerfile,一些环境配置可以参考DockerFile,需要注意的是,如果你在本地安装,C++编译器的版本请自行确认,不同系统有所不同

如果你选用了docker环境编译,那么你需要注意,本地的gpu设备载入配置,同样不同的gpu设备载入方式也不太相同,这里选用nvidia设备

1、提前安装好docker-nvidia桥接依赖,一些错误的解决方法https://github.com/NVIDIA/nvidia-docker/issues/1243

2、配置docker-compose文件

version: '3.6'

services:
localai_cuda:
image: quay.io/go-skynet/local-ai:master-cublas-cuda12
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:8080
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- BUILD_TYPE=cublas
- DEBUG=true
- MODELS_PATH=/models
- 'NVIDIA_VISIBLE_DEVICES=all'
- 'CUDA_VISIBLE_DEVICES=all'
- 'CUDA_DEVICE_POOL_GPU_OVERRIDE=1'
env_file:
- .env
volumes:
- ./models:/models:cached
- ./images/:/tmp/generated/images/
command: ["/usr/bin/local-ai" ]

3、在运行前,docker启动容器报错 Unknown runtime specified nvidia.这个错误出现,说明你没有配置runtime,参考https://www.cnblogs.com/luckforefforts/p/13642682.html

4、修改国内的ubuntu源,在Dockerfile合适的位置增加下面两行

RUN sed -i 's/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu/g' /etc/apt/sources.list

RUN apt-get clean

5、修改.env变量BUILD_TYPE值为cublas,说明见https://localai.io/basics/build/#Acceleration

6、执行编译 docker-compose up --build

localAI: 编译步骤说明的更多相关文章

  1. Linux-编译器gcc/g++编译步骤

    gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按 ...

  2. Android 源码编译 步骤

    添加资源后编译步骤 1:lunch 112:mmm frameworks/base/core/res/生成Install: out/target/product/hammerhead/system/f ...

  3. zlib库VS2015编译步骤

    [点击这里下载zlib1.2.8源码](http://zlib.net/zlib128.zip) [点击这里下载zlib1.2.8编译动态库](http://zlib.net/zlib128-dll. ...

  4. 腾讯开源项目phxpaxos的编译步骤

    #paxos的一般编译流程在项目文档<中文详细编译手册>里面已经有介绍,这里重点介绍一下编译samples目录下的代码: #我的环境是ubuntu; #设置paxos根目录 phx_dir ...

  5. Android APK反编译步骤

    反编译步骤 1.通过Android Killer 打开apk,自动开始分析   2.分析结束后,在分析好的工程上右键->打开方式->打开文件位置     在文件夹ProjectSrc中有文 ...

  6. R58的编译步骤f1选项v1.1版本

    R58的编译步骤f1选项v1.1版本 2017/3/16 16:38 请严重注意: 编译全志R58的Android6.0.1的系统和其它系统有两个不同: 1.在执行pack打包之前,必须执行verit ...

  7. OpenSSL简单介绍及在Windows、Linux、Mac系统上的编译步骤

    OpenSSL介绍:OpenSSL是一个强大的安全套接字层password库,囊括基本的password算法.经常使用的密钥和证书封装管理功能及SSL协议.并提供丰富的应用程序供測试或其他目的使用. ...

  8. webrtc所有平台下载编译步骤详细说明

    webrtc所有平台下载编译步骤详细说明 1.安装depot tools Windows:国外下载:https://storage.googleapis.com/chrome-infra/depot_ ...

  9. linux 模块编译步骤(原)

    linux 模块编译步骤(原) 博主推荐:<Linux命令模板Licote(原)> 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者 ...

  10. Java native代码编译步骤简书

    Java native代码编译步骤简书 目的:防止java代码反编译获取密码算法 (1)编写实现类com.godlet.PasswordAuth.java (2)编译java代码javac Passw ...

随机推荐

  1. Lecture3

    Smiling & Weeping ---- 蝴蝶在双翼里藏匿夏的脉络 妄图在绿意中品鉴隆冬 第三章 Git分支管理 3.1 分支的简介 Git最重要的运用场景是多人协同开发,但是如何能保证每 ...

  2. 何时/如何使用 std::enable_shared_from_this<T>?

    要点回顾 继承自 std::enable_shared_from_this<T> 的类能够在其自身实例中通过 std::shared_from_this 方法创建一个指向自己的 std:: ...

  3. AgileConfig-1.9.4 发布,支持 OpenTelemetry

    Hello 大家好,最新版的 AgileConfig 1.9.4 发布了.现在它可以通过 OpenTelemetry 对外提供 logs,traces,metrics 三个维度的数据.用户可以自由选择 ...

  4. C# 循环枚举

    foreach (int eemun in Enum.GetValues(typeof(类名))) { string sName = Enum.GetName(typeof(类名), eemun);/ ...

  5. 记一次 MatPlotLib 报错及解决方案:AttributeError: module 'matplotlib.cbook' has no attribute '_Stack'

    记一次 MatPlotLib 报错及解决方案 目录 记一次 MatPlotLib 报错及解决方案 解决方法 具体发生了什么 报错 log 1 内容 报错 log 2 内容 最近出现 MatPlotLi ...

  6. Masonry的进阶使用技巧

    Masonry是iOS开发中常见的视图约束框架,但是有人对他的使用还是浅尝辄止,接下来会提出几点比较少见但是又十分便捷的使用技巧. mas_greaterThanOrEqualTo mas_great ...

  7. Markdown常用语法详解

    背景知识 什么是html html是一种网页标记语言.我们平常见到的那么好看的网页就是通过html语言来编写的. html语言举例: <h1>hello world</h1> ...

  8. UEFI与inf文件

    UEFI与inf文件 背景 学习高通UEFI中的LCD显示框架,看到有些博客对inf文件进行了介绍,因此整理了这方面的一些入门知识. 参考: https://blog.csdn.net/yunfeng ...

  9. 常回家看看之off_by_null(堆篇)

    上次介绍了堆里面的off_by_one,那么这个off_by_null和它有神马区别呢,哎,别看名字挺像,它俩无论是在栈里面还是堆里面都有很大区别的. off_by_one,这个我们知道可以通过溢出控 ...

  10. PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

    To be, or not to be - that is the question. PowerBuilder编程新思维6:装饰(用最简单的方式做框架) 问题 这一章,是写得最艰难的一章,原因有四: ...