llama2模型 类chatGPT产品体验

简介 一个语言模型,类似chatGPT. 可以本地部署, 下面列下规格 7b 需要6~8GB显存 13b 需要13~16GB显存 70b 需要48GB显存,可以2张4090 安装 申请和下载模型 点击 https://huggingface.co/meta-llama 选择模型 Llama2-chat,13B 下载 将会跳转到Facebook公司的申请界面,勾选协议,提交申请 平替方案 如果觉得麻烦 下载这个GGML模型 https://huggingface.co/TheBloke/Firefly-Llama2-13B-v1.2-GGML firefly-llama2-13b-v1.2.ggmlv3.q6_K.bin 文件链接 https://huggingface.co/TheBloke/Firefly-Llama2-13B-v1.2-GGML/blob/main/firefly-llama2-13b-v1.2.ggmlv3.q6_K.bin python虚拟环境 # 创建python虚拟环境 python -m venv ./venv # 进行python虚拟环境 ./venv/Script/activate 安装pytorch with cuda # https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 安装ui # 安装ui git clone https://github.com/oobabooga/text-generation-webui.git # 进入ui目录 cd text-generation-webui # 安装ui依赖 pip install -r requirements.txt # 修复bitsandbytes bug pip uninstall bitsandbytes pip install bitsandbytes-windows # 启动UI python server.

音频转文字 Whisper

简介 一个音频转文本的模型 https://github.com/openai/whisper 依赖 python ffmpeg 命令行使用 验证GPU 在venv环境下 输入whisper -h –device # 如果默认是cpu 则证明cuda安装失败 # 这样也能验证cuda是否安装了 python -c "import torch; print(torch.version.cuda)" 重装torch gpu版本 # 卸载纯cpu版 pip uninstall torch # clean cache pip cache purge # copy from https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 再次验证 whisper -h –device # 如果默认是cuda 则证明成功 运行demo whisper {vocieFile} --model large-v2 --model_dir {modelPath} \ --ourput_dir {outputDir} --output_format txt --device cuda --language Chinese 界面版 界面版 https://github.

咒语生成图片 Stable Diffusion web UI

简介 旨在个人快速回忆Stable Diffusion相关关系 Stable Diffusion 是一个深度学习,文转图模型. Stable Diffusion web UI 即面向用户提供界面操作工具, 链接为 https://github.com/AUTOMATIC1111/stable-diffusion-webui 其中该界面为英语,支持汉化插件 https://github.com/VinsonLaro/stable-diffusion-webui-chinese PyTorch 官网 https://pytorch.org/ 是一个深度学习的框架 我的安装选择 OS: Windows package: pip language: python compute Platform: CUDA 教程 https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki 启动 下载完web UI后,运行webui-user.bat即可 在运行过程避免不了报错,很考验python debug能力。 初始化 设置webui-user.bat参数 set PYTHON= #python文件路径 set GIT= # git文件路径 set VENV_DIR= # venv目录 set COMMANDLINE_ARGS=--xformers # 启动参数 将python,git的bin path 加入系统环境变量下的path。 另外确保安装了Microsoft Visual C++ Redistributable vc_redist.x64.exe 安装过程需要网络稳定,需要下载很多pkg 缓存冲突解决 直接删除./venv/lib/site-packages/下冲突的包,重新运行脚本. 或者命令行搞定 # 卸载具体包 pip uninstall 具体包 # clean cache pip cache purge 模型位置

关于Go代码生成

目的 Go Kitex提供了自定义模板生成代码,使用起来挺方便的. 有望改造成支持公司内部go代码生成工具 https://www.cloudwego.io/zh/docs/kitex/tutorials/code-gen/custom_tpl/ 处理要素 cli工具整合 这里推荐2个包,封装了cli和参数解析 https://github.com/spf13/cobra https://github.com/spf13/pflag 基本数据对象定义 提供了文件生成时的数据渲染对象 PackageInfo 模板渲染使用html/template语法 额外参数在context中解析 cli传递参数过多会带来复杂性,需要额外的.json文件数据提供在上下文中解析. 多模板文件定义 通过指定目录加载其下所有模板文件 模板文件格式为.yaml 生成的文件路径也支持变量解析. 其中能独立定义新增代码部分 统一入口 初始化和更新行为都为同一命令,减少处理成本 额外点 多任务并行处理文件生成 跨平台支持

go pkg包设计

设计考虑 以下是个人的建议,随便看看了解下 context支持 一般入参数context是第一个参数,提供了timeout机制 logger接口定义 在组件的初始化时,将使用方的日志实例进行接口约束, 要求实现其debug,error级别method. 可以参考gorm的logger设计 hook注入 方便使用方对metric的收集,可以参考redis hook设计 布局了解 这里只是提供参考建议 go官方 https://github.com/golang-standards/project-layout 知道internal目录对内部系统的保护 链接 https://go.dev/doc/go1.4#internalpackages 跨平台支持 查看支持平台 go tool dist list 条件编译约束 //go:build (linux && 386) || (darwin && !cgo) https://pkg.go.dev/cmd/go#hdr-Build_constraints linters集成 https://golangci-lint.run/ 提高代码质量 版本约束 具体查看 https://go.dev/ref/mod#versions 依赖注入 https://github.com/google/wire 使得依赖关系变得整洁 参数配置 Functional Options Pattern,代码优雅 IDL https://protobuf.dev/ 利用protobuf提供接口和配置的定义. 验证项目得分 https://goreportcard.com/ 评估项含 gofmt go vet go lint gocyclo

聊天系统设计调研

总体架构分层 接入层,无状态 逻辑层 存储层 这里是参考了陌陌设计 连接层 这里有2种方案选择 WebSocket MQTT 关于MQTT,有EMQX中间件. 消息上线可以走HTTP接口,即客户端发给服务端消息 消息下行可以走EMQX订阅主题,即服务端推送消息给客户端 连接层属于无状态,支持水平扩展. 逻辑层 通用消息格式定制 以及业务路由分发决策 设计规则 不丢消息 需要业务ACK机制 消息去重 服务端与客户端都需要做到 时序一致性 可以用snowflake算法. 利用局部性原理减少id生成器压力,有利于水平扩展 缓存设计 由于实时系统,基本上有一层cache,类似内核系统的buffer。 多级缓冲,面向c端场景的话一般链路不会太长,而且要考虑数据回种,分布式一致性挑战. 大概local cache -> redis (读写分离)-> database(读写分离) 其他考虑场景 接入APP推送 接入风控 数据多端同步 多条消息打包与压缩格式设计 万人大群的数据扇出 明星突发性空降某频道 数据埋点监控 系统自动扩容 存储层 离线消息 如果需求量不大,Mysql即可以解决. 聊天应用的读写比例大概是1:1. 数据库 Cassandra Discord公司有在用.偏向AP场景 HBase Facebook公司有在用.偏向CP场景 个人想法 前期用Mysql,但是封装一层接口,为后期数据库迁移作准备. 大数据库选择要还看云数据库商支持程度,说不定还有其他云产品合适. 对象存储 minio 消息队列 rabbitMQ比较适合业务, 但是追求高吞吐的kafka,自己必须封装多一层机制来保证业务的一致性. 后续有的话再更新