把Llama2封装为API服务并做一个互动网页

本文介绍了如何将Facebook的Llama2模型转换为API服务,使用FastAPI和uvicorn搭建服务器,同时实现了一个类似OpenAI的聊天界面,通过Streamlit集成到一个可交互的对话框中。

最近按照官方例子,把Llama2跑起来了测试通了,但是想封装成api服务,耗费了一些些力气

参考:https://github.com/facebookresearch/llama/pull/147/files

1. 准备的前提如下

  • 按照官方如下命令,可以运行成功
torchrun --nproc_per_node 1 example_chat_completion.py \
   --ckpt_dir llama-2-7b-chat/ \
   --tokenizer_path tokenizer.model \
   --max_seq_len 512 --max_batch_size 6
  • 使用的模型是llama-2-7b-chat

2. 第一步,增加依赖包

fastapi
uvicorn

3. 第二步,增加文件server.pyllama仓库的根目录下

from typing import Tuple
import os
import sys
import argparse
import torch
import time
import json

from pathlib import Path
from typing import List

from pydantic import BaseModel
from fastapi import FastAPI
import uvicorn
import torch.distributed as dist

from fairscale.nn.model_parallel.initialize import initialize_model_parallel

from llama import ModelArgs, Transformer, Tokenizer, Llama


parser = argparse.ArgumentParser()
parser.add_argument('--ckpt_dir', type=str, default='llama-2-7b-chat')
parser.add_argument('--tokenizer_path', type=str, default='tokenizer.model')
parser.add_argument('--max_seq_len', type=int, default=512)
parser.add_argument('--max_batch_size', type=int, default=6)

os.environ['MASTER_ADDR'] = 'localhost'
os.environ['MASTER_PORT'] = '12345'
os.environ['WORLD_SIZE'] = '1'

app = FastAPI()

def setup_model_parallel() -> Tuple
实现以下要求,具体的代码实现:基于本地知识库的问答机器人 1. 纯文本问答。 2. 文本和图像的多模态问答。 3. 文本,图像,语音的多模态问答。 4. 文本,图像,语音,视频的多模态问答。 5. 知识图谱的构建。 6. 其它。 1. 作业目标 本次作业的目标是开发一个基于书籍的聊天工具,用户可以通过该工具与书籍内容进行互动。 • 需要使用大模型 API(如 LLaMA、OpenAI、DeepSeek 等)实现核心功能, • 将其部署为 App 应用(手机端) 2.技术要求 选择合适的开源大模型。如果本地硬件资源无法满足需求,可以使用云服务(如 AWS、Google Cloud、Azure)进行开发。你可以使用以下几种开源 API: • DeepSeek • ChatGLM(智谱 AI 开源) • Llama2(Meta 开源) • Mistral AI • GPT-3.5/4 API(OpenAI) • Claude(Anthropic) • Baidu 文心一言 / 阿里通义千问 / 讯飞星火 • 其它 3.前端界面 用 Vue / React 创建一个简单的聊天页面:后端,Python + Flask / FastAPI 来构建后端。 设计一个友好的用户界面,支持用户输入问题和查看回答。 提供清晰的交互提示(如“请输入您的问题”)。 其它搭建方法。 4.功能要求 你的工具至少需要实现以下功能:  问答功能 用户可以提问书中的具体内容。 例如: 用户:`What is the main theme of Chapter 3?` 聊天工具:`The main theme of Chapter 3 is...`  摘要功能 用户可以获取某章节或某段落的摘要。 例如: 用户:`Summarize Chapter 5.` 聊天工具:`Chapter 5 discusses...`  主题讨论 用户可以讨论书中的主题或观点。 例如: 用户:`What are the arguments for and against renewable energy in the book?` 聊天工具:`The book presents several arguments...`  上下文记忆 聊天工具能够记住对话上下文,提供连贯的交互。
04-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值