Building Systems with the ChatGPT API

Building Systems with the ChatGPT API

使用 ChatGPT API 构建系统

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message["content"]
response = get_completion("What is the capital of France?")
print(response)
The capital of France is Paris.
response = get_completion("法国的首都是什么?")
print(response)
法国的首都是巴黎。

LangChain for LLM Application Development

LangChain for LLM Application Development

LangChain 是用于构建 LLM 应用程序的开源框架

LLM 应用程序开发的 LangChain

安装依赖包

pip install python-dotenv
pip install openai

ChatCompletion import os import openai from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.environ['OPENAI_API_KEY'] def get_completion(prompt, model="gpt-3.5-turbo"): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0, ) return response.choices[0].

State of GPT - Andrej Karpathy

了解 ChatGPT 等 GPT 助手的训练管道,从标记化到预训练、监督微调和人类反馈强化学习 (RLHF)。 深入研究有效使用这些模型的实用技术和心智模型,包括提示策略、微调、快速增长的工具生态系统及其未来的扩展。

Data Collection

Tokenization

GPT3 vs LLaMa

Pretraining

Pretraining

Base models learn powerful

Base models in the wild

SFT Dataset

RM Dataset

RM Dataset

RM Training

RL Training

RLHF

Assistant models in the wild

ChatGPT Prompt Engineering for Developers

ChatGPT Prompt Engineering for Developers 由Isa Fulford(OpenAI)和Andrew Ng(DeepLearning.AI)教授的课程将描述 LLM 的工作原理,提供快速工程的最佳实践,并展示 LLM API 如何用于各种任务的应用程序。

面向开发人员的 ChatGPT 提示工程

  1. { "book_id": 2, "title": "The Secret Garden", "author": "Sophie Brown", "genre": "Children's Literature" }

{ "book_id": 3, "title": "The Last Hope", "author": "David Lee", "genre": "Science Fiction" } ```py prompt = f""" 生成三个虚构的书名及其作者和类型的列表。

Whisper 语音识别

文件上传目前限制为 25 MB,并且支持以下输入文件类型:mp3, mp4, mpeg, mpga, m4a, wav, webm.

她认为人工智能技术应该是以人为本的,强调人工智能技术应该是一种能够服务于人类的工具,而不是取代人类的工具。

她指出,人工智能技术的最终目的是为人类服务,因此人工智能技术应该以人类的利益和需求为中心,以解决人类面临的实际问题。人工智能技术的应用需要深入了解人类社会的需要和价值,将其应用到真正有意义的领域中。

Miramurati是一位对人工智能技术充满热情的科技领袖 他的理念和影响对人工智能技术的发展和应用产生了深远的影响 他认为人工智能技术应该是以人为本的 强调人工智能技术应该是一种能够服务于人类的工具 而不是取代人类的工具 他指出人工智能技术的最终目的是为人类服务 因此人工智能技术应该以人类的利益和需求为中心 以解决人类面临的实际问题 人工智能技术的应用需要深入了解人类社会的需要和价值 将其应用到真正有意义的领域中

👍 可以看到转换的非常准确,但是缺少了标点符号,英文名字也有一点小小的问题。

Mira Murati 是一位对人工智能技术充满热情的科技领袖。 她的理念和影响对人工智能技术的发展和应用产生了深远的影响。 她认为人工智能技术应该是以人为本的, 强调人工智能技术应该是一种能够服务于人类的工具, 而不是取代人类的工具。

Docker 构建多平台镜像

docker run 当您在使用此镜像时 docker service,Docker 会根据节点的平台选择正确的镜像。

有个缺点:必须发布到 Docker Hub 或者私有仓库,因为 Docker 不支持多架构的本地镜像。

查看构建器 docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS mybuilder * docker-container mybuilder0 desktop-linux running v0.9.3 linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64, linux/arm/v7, linux/arm/v6 default docker default default running v0.11.

Ultralytics YOLOv8 推理速度对比

Ultralytics YOLOv8.0.92 🚀 Python-3.10.7 torch-2.0.0+cpu CPU
Model summary (fused): 168 layers, 3006038 parameters, 0 gradients, 8.1 GFLOPs

image 1/304 /usr/src/datasets/platen-switch/images/train/1.jpg: 480x640 22 closes, 14 opens, 51.7ms
image 2/304 /usr/src/datasets/platen-switch/images/train/2.jpg: 384x640 12 closes, 24 opens, 45.7ms
image 3/304 /usr/src/datasets/platen-switch/images/train/3.jpg: 576x640 12 closes, 33 opens, 62.3ms

Speed: 3.7ms preprocess, 45.0ms inference, 1.3ms postprocess per image at shape (1, 3, 640, 640)

macOS 下的 __MACOSX 目录和 .DS_Store 文件

.DS_Store 是 macOS 操作系统中隐藏的文件,它存储有关文件夹的元数据,例如文件夹中的文件位置、文件夹的显示选项和自定义图标等信息。这些元数据是用来帮助操作系统更快地显示文件夹中的内容,并记住用户的偏好设置。这些文件只是本地的,不会在网络文件共享时传输,因此不会影响其他操作系统用户。

当你在 Mac 电脑上创建一个压缩文件时,系统会自动在压缩文件中添加一个名为 __MACOSX 的目录。该目录包含了 Mac 操作系统专有的一些文件,如 .DS_Store 等。这些文件不会对压缩文件的解压缩造成影响,但它们可能会在其他操作系统上解压缩时出现问题,例如在 Windows 上解压缩时可能会显示 __MACOSX 目录或 .DS_Store 文件。为了避免这种情况,你可以在创建压缩文件时选择不包含 Mac 专有文件,或者在解压缩时手动删除 __MACOSX 目录和 .DS_Store 文件。

find 命令中,-exec 参数用于执行一个命令来处理查找到的文件或目录。\;-exec 参数的终止符号,用于告诉 find 命令,在执行完 -exec 参数指定的命令后,结束这个 -exec 参数的执行。

因为在 shell 中,; 会被解释为命令的结束,所以需要在 ; 前面加上 \,用于转义这个字符,以确保 find 命令能够正确的处理 -exec 参数。

加速 Docker 构建镜像

  • Debian
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
  • Ubuntu
PRETTY_NAME="Ubuntu Jammy Jellyfish (development branch)"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Python 配置共享软件包缓存

共享软件包缓存的好处是,一旦用户已经下载了软件包的特定版本,它将不会再次下载并存储在单独的缓存中。这节省了磁盘使用量并加快了安装速度,因为它不需要再次下载软件包。

通过查看了解到我现在已经配置了共享软件包的缓存目录(package cache):/opt/miniconda/pkgs/Users/junjian/.conda/pkgs,根据顺序优先存放在 /opt/miniconda/pkgs 目录中。

配置完成后,可以通过运行 conda info 来查看配置是否生效。

讯飞星火测试

Spark Desk 是讯飞星火认知大模型的英文名称。

💬 这个手机的功能不好用,是差评。
💬 3C;
💬 She did not go to the market.

ChatGPT 还会解释语法的问题

💬 你有哪些房间可用?
💬 Hello, which room type would you like to book?
💬 根据报道,截至4月19日6时,共有29人死亡。关于事故原因,报道未提及。
❓ 上面这篇报道健康委副主任是?
💬 报道中提到北京市卫生健康委员会的副主任是李昂。
💬 358*176=60928

💬 这是一个 Python 代码示例,用于生成100个随机的名字列表: import random # 创建名字列表 names = ['Tom', 'Jerry', 'Mike', 'Alice'] # 创建姓氏列表 last_names = ['Smith', 'Johnson', 'Williams', 'Brown'] # 随机组合成100个全名的列表 full_names = [] for i in range(100): first_name = random.

PaddleSpeech 快速入门

测试数据下载

wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav
wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/en.wav

需要降低 numpy 版本

pip install "numpy<1.24"

缺少 nltk_data

cd ~/
wget https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz
rm -rf ./nltk_data
tar -zxf nltk_data.tar.gz

LangChain - Chain

使用中文提问效果不好,出现的是一个名字列表。

# 中文 Prompt
为生产{product}的公司取个好名字。
为生产{product}的公司取一个好名字。
prompt = PromptTemplate(input_variables=["product"], template="What is a good name for a company that makes {product}?")
prompt = PromptTemplate.from_template(template="What is a good name for a company that makes {product}?")

LangChain 快速入门

对于这个例子,将使用 OpenAI 的 API

pip install openai
export OPENAI_API_KEY="..."
from langchain.llms import OpenAI

llm = OpenAI(temperature=0.9)

text = "一家生产彩色袜子的公司取什么名字好?"
print(llm(text))
可以取名为:Colorful Socks Factory。
  • 工具:执行特定任务的功能。 可以是:Google 搜索、数据库查找、Python REPL、其他链。
  • LLM:为代理提供支持的语言模型。
  • 代理:要使用的代理。

这个例子,我们将使用 SerpApi 来调用 Google 搜索。

Hugging Face 快速入门

机器学习的成功取决于为用例找到最佳架构、微调模型并将它们部署到生产环境中。 所有这些都需要经验和技能的正确结合。 我们的专家加速计划提供必要的技术专长,以实施最先进的技术、做出更好的决策并更快地进入市场。

  • 如何为我的用例微调(fine-tune)模型? 哪些基础架构(base architectures)?多少训练数据?
  • 如何优化我的模型以获得最小延迟(latency)? 蒸馏(Distillation)。汇编(Compilation)。量化(Quantization)。修剪(Pruning)。 我们可以指导您完成每一步。
  • 如何优化我的生产环境? 调整您的 CPU、GPU 或 AI 加速器配置以获得最大性能。
  • 如何在 SageMaker 中使用 Transformers? 模型并行性(model parallelism)、数据并行性(data parallelism)、部署(deployment)等。
  • 我如何检测和减轻数据集和模型中的偏见(bias)? 我们可以帮助您让人工智能更负责任。

硬件专用加速工具

  1. 量化(Quantize)

利用英特尔® Neural Compressor 的训练后量化、量化感知训练和动态量化,在对准确性影响最小的情况下更快地建立模型。

  1. 修剪(Prune)

使模型更小,对准确性的影响最小,通过英特尔® Neural Compressor 使用简单易用的配置来消除模型权