如何免费部署LLM

2023年12月12日 由 alex 发表 457 0

我们将使用Hugging Face空间来部署我们的 LLM。Hugging Face 提供基本 CPU、2 个 vCPU、16GB RAM 和 50GB 免费存储空间!


GGML


GGML 是一个用于机器学习的 C 语言库。它能够帮助在常规计算机芯片(CPU)上运行大型语言模型(LLMs)。它使用一种特殊的数据表示方式(二进制格式)来共享这些模型。为了使其在普通硬件上良好运行,GGML 使用了一种称为量化的技术。这种技术有不同的级别,如4位、5位和8位量化。每个级别都有其效率和性能之间的自己的平衡。


缺点


这里的主要缺点是延迟。由于此模型将在 CPU 上运行,我们不会像部署在 GPU 上的模型那样快速收到响应,但延迟并不过度。平均而言,它在 huggingface 空间上生成140-150个标记需要大约1分钟。实际上,它在配有16核 CPU 的本地系统上表现得相当好,提供响应时间不到15秒。


模型


为了演示目的,我们将部署 Zephyr-7B-Beta SOTA 模型。你可以在 Huggingface 找到各种大小的 Zephyr GGUF 量化格式。


GGUF 是 GGML 的更新版本,提供了更多的灵活性、可扩展性和兼容性。它旨在简化用户体验,并适应各种模型。GGML 尽管是有价值的早期成果,但它有局限性,GGUF 寻求克服这些局限性。


我们已经选择了 Zephyr-7b-beta.Q4_K_S.gguf。这是一个4位量化的小型模型,速度快并且质量损失最小。


编码时间


我们已在两个环境中部署了 Zephyr 模型:


  1. 一个专门用于创建 API 的环境。
  2. 另一个作为游乐场,让你可以与模型进行互动。


API部署LLM


部署结构


LLM_Deployment_at_zerocost
├── Dockerfile
├── main.py
├── requirements.txt
└── zephyr-7b-beta.Q4_K_S.gguf


要求.txt


python-multipart
fastapi
pydantic
uvicorn
requests
python-dotenv
ctransformers


zephyr-7b-beta.Q4_K_S.gguf


在 huggingface 上下载ephyr-7b-beta.Q4_K_S.gguf 模型。


main.py


main.py 文件包含一个 FastAPI 函数,用于返回 Zephyr-7B 的完成结果。


from ctransformers import AutoModelForCausalLM
from fastapi import FastAPI
from pydantic import BaseModel

llm = AutoModelForCausalLM.from_pretrained("zephyr-7b-beta.Q4_K_S.gguf",
model_type='mistral',
max_new_tokens = 1096,
threads = 3,
)
#Pydantic object
class validation(BaseModel):
    prompt: str
#Fast API
app = FastAPI()
@app.post("/llm_on_cpu")
async def stream(item: validation):
    system_prompt = 'Below is an instruction that describes a task. Write a response that appropriately completes the request.'
    E_INST = "</s>"
    user, assistant = "<|user|>", "<|assistant|>"
    prompt = f"{system_prompt}{E_INST}\n{user}\n{item.prompt}{E_INST}\n{assistant}\n"
    return llm(prompt)


Dockerfile


最后,该 Dockerfile 被用来将我们的应用程序容器化以便部署。


FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./zephyr-7b-beta.Q4_K_S.gguf /code/zephyr-7b-beta.Q4_K_S.gguf
COPY ./main.py /code/main.py
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]


现在,我们的文件已经准备好进行部署。


部署


Huggingface 空间


4


第一步:创建一个新的 Hugging Face 空间。


第二步:输入空间名称并选择许可证类型。


第三步:选择 Space SDK-Docker(空白)选项。


第四步:最初选择“公开”来复制我们的部署端点,然后点击“创建空间”。


第五步:上传我们上面创建的文件。


LLM_Deployment_at_zerocost
├── Dockerfile
├── main.py
├── requirements.txt
└── zephyr-7b-beta.Q4_K_S.gguf


祝贺你!你已经部署了你的 LLM。


如果代码中没有错误,你会看到它正在运行,如果发生错误,你可以检查日志。


5


第六步:现在已创建空间,接着点击“嵌入此空间”,并复制空间链接(这将作为你的生产环境 API 密钥)。


6


复制直接的网址。


7


第七步:现在请把设置中的空间可见性设为私密(注意:你的数据和凭证将会在公共空间中被曝光)。


所有步骤现已完成,我们已经成功部署了我们的LLM。让我们开始测试我们的API。


这是我们的空间链接:https://gathnex-llm-deployment-zerocost-api.hf.space


在网址后加上/docs来启用Swagger UI并测试我们的API。


Fast API swagger:https://gathnex-llm-deployment-zerocost-api.hf.space/docs


端点:https://gathnex-llm-deployment-zerocost-api.hf.space/llm_on_cpu


8


我们还在Gradio空间中部署了Zephyr.


HF CPU 上的聊天 UI Playground 


9


结论


我们已成功地将LLM部署在生产环境中,并提供了一个API接口。你可以使用它来进行小型自动化任务、文本生成、代理任务等。对于那些希望部署自己的定制模型而又不想承担高昂的GPU成本的人来说,它非常有用。

文章来源:https://medium.com/@gathnex/how-to-deploy-llm-for-free-of-cost-6e7947d9b64a
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消