英特尔锐炫™ 显卡运行类 ChatGPT 的开源大语言模型(LLM) Dolly 2.0 | 开发者实战...

点击蓝字

关注我们,让开发变得更有

前言

以下为当前一代大型语言模型(LLM)的基石说明。

人类偏好强化学习Reinforcement learning with human preferences(RLHF)和 InstructGPT 等技术一直是 ChatGPT 和 GPT-4 等突破的核心基础。

关于 RLHF:

https://arxiv.org/abs/1909.08593

关于 InstructGPT :

https://arxiv.org/abs/1909.08593

然而,这些强大的模型仍然隐藏在 API 后面,我们对它们的底层架构知之甚少。指令遵循模型能够生成文本以响应提示(Prompt),通常用于协助编写创作、聊天机器人和内容生成等任务。许多用户现在定期与这些模型交互,甚至将它们用于工作,但大多数此类模型仍然是闭源的,需要大量的计算资源进行实验。

Dolly 2.0 是第一个开源的,遵循指令的 LLM,由 Databricks 在一个透明且免费提供的数据集上进行微调,该数据集也是开源的,可用于商业目的。这意味着 Dolly 2.0 可用于商业应用程序,而无需支付 API 访问费用或与第三方共享数据。尽管比 ChatGPT 要小得多 Dolly 2.0 也可表现出类似的特征。

接下来让我们用来自原基科技带有英特尔锐炫™ 显卡的  B18盒子配上 OpenVINO Notebooks 开源代码示例在本地端体验大语言模型的魅力吧!

c507009cd0c7a3eb9e2144d34882c18a.png

56f8fe24c7dab15e856073dda4cc71b9.gif

安装 OpenVINO Notebooks

运行相关工具及必要项

安装 Git, Anaconda, Python, C++ Redistributable (For Python 3.8) 及 Anaconda

Git:

https://git-scm.com/

Python:

https://www.python.org/ftp/python/3.8.8/python-3.8.8-amd64.exe

C++ Redistributable (For Python 3.8):

https://aka.ms/vs/16/release/vc_redist.x64.exe

Anaconda:

https://www.anaconda.com/

创建环境

conda create -n openvino_env python=3.9

运行结果如下:

d1ea5be6cc0a69e289ffa5f6f7fbfab9.png

启用环境 openvino_env

conda activate openvino_env

命令行开头有“(openvino_env)” 即为启用成功。

用 Git 下载 OpenVINO Notebooks 库并进入资料夹。

git clone --depth=1 https://github.com/openvinotoolkit/openvino_notebooks.git
cd openvino_notebooks

向右滑动查看完整代码

1e346ce9ae52afea1dbe1f271e4dda6c.png

安装运行相关包及必须项,pip 使用清华镜像:https://pypi.tuna.tsinghua.edu.cn/simple some-package

安装约5-10分钟。

python -m pip install --upgrade pip wheel setuptools
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

向右滑动查看完整代码

启用 OpenVINO Notebooks

jupyter lab notebooks

运行成功会跳出网页,挑选 Notebooks 里 240-dolly-2-instruction-following, 开始体验大模型的魅力及了解其机理。

4db3187472da7fbfc76c2f55f73cedd4.gif

LLM 大模型 Databricks Dolly 2.0和

OpenVINO 的使用说明

在本教程中,我们将研究如何使用 Dolly 2.0 和 OpenVINO™ 运行遵循指令的文本生成管道。我们将使用来自拥抱面变压器库中的预训练模型。为了简化用户体验,拥抱面最佳英特尔库用于将模型转换为 OpenVINO IR 格式。

本 Notebooks 包括以下步骤:

  • 安装包及必要项

  • 下载公开的模型并利用以下工具转换 OpenVINO Notebooks integration  with Hugging Face Optimum:

    https://huggingface.co/blog/openvino

  • 建立指令推理管道(build Pipeline)

  • 运行指令推理管道(run Pipeline)

1922d07a188aef6e2daf649223abbdff.gif

关于 Dolly 2.0

Dolly 2.0 是在 Databricks 机器学习平台上训练的指令遵循大型语言模型,已获得商业用途许可。它基于 Pythia,并接受 Databricks 员工在各种能力领域生成的 ~15k 指令/响应微调记录的培训,包括头脑风暴、分类、封闭 QA、生成、信息提取、开放 QA 和总结。Dolly 2.0 的工作原理是处理自然语言指令并生成遵循给定指令的响应。它可用于广泛的应用,包括封闭式问答、总结和生成。


模型训练过程的灵感来自 InstructGPT。为了训练 InstructGPT 模型,核心技术是从人类反馈(RLHF)中强化学习,这种技术使用人类偏好作为奖励信号来微调模型,这很重要,因为需要解决的安全和对齐问题是复杂和主观的,并且不能完全被简单的自动指标捕获。有关 InstructGPT 方法的更多详细信息,请参阅 OpenAI 博客文章:

https://openai.com/research/instruction-following

InstructGPT 发现的突破是语言模型不需要越来越大的训练集。通过使用人工评估的问答训练,作者能够使用比以前的模型少一百倍的参数来训练更好的语言模型。Databricks 使用类似的方法来创建一个提示和响应数据集,称为 databricks-dolly-15k:

https://huggingface.co/datasets/databricks/databricks-dolly-15k

这是一个由数千名 Databricks 员工生成的超过15,000条记录的语料库,使大型语言模型能够展示 InstructGPT 的神奇交互性。有关模型和数据集的更多详细信息,请参阅 Databricks 博客文章和存储库。

Databricks 博客文章:

https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm

存储库:

https://github.com/databrickslabs/dolly

6f051dd1058442ae2d3b31c47b163db5.gif

Hugging Face Optimum Intel  API

首先,我们用以下代码安装由 OpenVINO 集成 Hugging Face Optimum 库Hugging Face Optimum 英特尔 API 是一个 high-level API,使我们能够将 Hugging Face Transformers library 中的模型转换和量化为 OpenVINO IR 格式。有关更多详细信息,请参阅 Hugging Face Optimum 英特尔 documentation 文档:

https://huggingface.co/docs/optimum/installation

!pip install -q "diffusers>=0.16.1" "transformers>=4.28.0" 
!pip install -q "git+https://github.com/huggingface/optimum-intel.git" datasets onnx onnxruntime gradio

向右滑动查看完整代码

eaf5bd8691ac8595ca74a2af421e8d1c.gif

下载及转换模型

(注意:此模型大小约10GB)

Optimal 英特尔可从 Hugging Face Hub 加载优化模型,并可创建 Pipeline 用 OpenVINO run time 并调用 Hugging Face APIs 运行推理。Optimum 推理模型与 Hugging Face Transformers 模型的 API 是兼容。这意味着我们只需要将 AutoModelForXxx 类替换为相应的 OVModelForXxx 类即可。

下面是 Dolly model 的示例:

-from transformers import AutoModelForCausalLM
+from optimum.intel.openvino import OVModelForCausalLM
from transformers import AutoTokenizer, pipelinemodel_id = "databricks/dolly-v2-3b"
-model = AutoModelForCausalLM.from_pretrained(model_id)
+model = OVModelForCausalLM.from_pretrained(model_id, from_transformers=True)

向右滑动查看完整代码

模型类初始化从调用from_pretrained 开始。当下载及转换模型, 需添加此参数 from_transformers=True。我们用 save_pretrained 储存转换模型。Tokenizer class and pipelines API 是与 Optimus 模型兼容的。

from pathlib import Path
from transformers import AutoTokenizer
from optimum.intel.openvino import OVModelForCausalLMmodel_id = "databricks/dolly-v2-3b"
model_path = Path("dolly-v2-3b")tokenizer = AutoTokenizer.from_pretrained(model_id)current_device = "CPU"if model_path.exists():ov_model = OVModelForCausalLM.from_pretrained(model_path, device=current_device)
else:ov_model = OVModelForCausalLM.from_pretrained(model_id, device=current_device, from_transformers=True)ov_model.save_pretrained(model_path)

向右滑动查看完整代码

运行结果

4545d726786a28a574de67708c70aa06.png

fc454865c7d1ad4b63a48ebf5c4d2e41.gif

创建遵循指令的推理管道

(Inference Pipeline)

run_generation 函数接受用户提供的文本输入,对其进行令牌 (Token)化,然后运行生成过程。文本生成是一个迭代过程,其中每个下一个标记都依赖于先前生成的令牌,直到达到最大令牌数或停止生成条件。为了获得中间生成结果而不需等到生成完成,我们将使用 TextIteratorStreamer,作为 HuggingFace Streaming API 的一部分提供。

TextIteratorStreamer:

https://huggingface.co/docs/transformers/main/en/internal/generation_utils#transformers.TextIteratorStreamer

HuggingFace Streaming API  :

https://huggingface.co/docs/transformers/main/en/generation_strategies#streaming

下图说明了指令遵循管道的工作原理:

4aa53075b32c2980d3f065c8dfca562e.png

可以看出,在第一次迭代中,用户提供的指令使用分词器转换为令牌 ID,然后准备的输入提供给模型。该模型以 logits 格式为所有令牌生成概率 在预测概率上选择下一个令牌的方式由所选解码方法驱动。您可以在此博客中找到有关最流行的解码方法的更多信息:

https://huggingface.co/blog/how-to-generate

有几个参数可以控制文本生成质量:

#·1

Temperature是用于控制 AI 生成文本中创造力水平的参数。通过调整 Temperature,您可以影响 AI 模型的概率分布,使文本更加集中或多样化。考虑以下示例:AI 模型必须使用以下令牌概率完成句子 “The cat is ____.” :

        playing: 0.5
        sleeping: 0.25
        eating: 0.15
        driving: 0.05
        flying: 0.05

  • Low temperature (e.g., 0.2): AI 模型变得更加集中和确定性,选择概率最高的令牌,例如 "playing."

  • Medium temperature (e.g., 1.0): AI 模型在创造力和专注力之间保持平衡,根据其概率选择令牌,没有明显的偏见,例如 "playing," "sleeping," or "eating."

  • High temperature (e.g., 2.0): AI 模型变得更加冒险,增加了选择不太可能的令牌的机会,例如 "driving" and "flying."

#·2

Top-p 也称为核心采样 (nucleus sampling),用于根据累积概率控制 AI 模型考虑的令牌范围的参数。通过调整 Top-p 值,您可以影响 AI 模型的令牌选择,使其更加集中或多样化。对相同的示例 cat ,请考虑以下 top_p 设置: 

  • Low top_p (e.g., 0.5): AI 模型仅考虑累积概率最高的令牌,例如 "playing."

  • Medium top_p (e.g., 0.8): AI 模型考虑具有较高累积概率的令牌,例如 "playing," "sleeping," and "eating."

  • High top_p (e.g., 1.0): AI 模型考虑所有令牌,包括概率较低的令牌,例如 "driving" and "flying."

#·3

Top-k 是另一种流行的采样策略。与 Top-P 进行比较,Top-P 从累积概率超过概率 P 的最小可能单词组进行选择,在 Top-K 抽样中,K 最有可能被过滤掉下一个单词,并且概率质量仅在下一个 K 个单词之间重新分配。在我们的 cat 示例中,如果 k=3,则只有“playing”、“sleeping”和“eathing”将被考虑为下一个单词。

为了优化生成过程并更有效地使用内存,请启用 use_cache=True 选项。由于输出端是自动回归的,因此输出令牌隐藏状态在计算后每进一步生成步骤后保持不变。因此,每次想要生成新令牌时重新计算它似乎很浪费。使用缓存,模型会在计算后保存成隐藏状态。该模型仅在每个时长计算最近要生成的输出令牌的令牌,将保存的令牌重用于隐藏令牌。这将transformer模型的生成复杂度从 O(n^3) 降低到 O(n^2)。有关其工作原理的更多详细信息,请参阅文章:

https://scale.com/blog/pytorch-improvements#Text%20Translation

使用此选项,模型获取上一步的隐藏状态(缓存的attention keys和values)作为输入,此外还提供当前步骤的隐藏状态作为输出。这意味着对于所有后续迭代,只需提供从上一步获得的新令牌和缓存的键值即可获得下一个令牌预测。

生成周期重复,直到到达序列令牌的末尾,或者在生成最大令牌时中断。如前所述,我们可以启用打印当前生成的令牌,而无需等到整个生成完成使用 Streaming API 时,它会将新令牌添加到输出队列,然后在它们准备就绪时打印(print)它们。

c3bc483f1a4a90ab883ade6d22e0a2c2.gif

运行指令推理管道(run Pipeline)

输入设定

from threading import Thread
from time import perf_counter
from typing import List
import gradio as gr
from transformers import AutoTokenizer, TextIteratorStreamer
import numpy as np

向右滑动查看完整代码

5b7dfa9ad1d94de2cd0955f3b88ec32e.gif

为 user prompt 准备模板

为了有效生成,模型期望具有特定格式的输入。下面的代码准备了将用户指令传递到模型中的模板,并提供额外的上下文。

INSTRUCTION_KEY = "### Instruction:"
RESPONSE_KEY = "### Response:"
END_KEY = "### End"
INTRO_BLURB = ("Below is an instruction that describes a task. Write a response that appropriately completes the request."
)# This is the prompt that is used for generating responses using an already trained model.  It ends with the response
# key, where the job of the model is to provide the completion that follows it (i.e. the response itself).
PROMPT_FOR_GENERATION_FORMAT = """{intro}{instruction_key}
{instruction}{response_key}
""".format(intro=INTRO_BLURB,instruction_key=INSTRUCTION_KEY,instruction="{instruction}",response_key=RESPONSE_KEY,
)

向右滑动查看完整代码

8b1df4ea1cb1419e9f5b03c61eee9e82.gif

输出分析的帮助程序

模型被重新训练以使用特殊令牌 ### End 完成生成,下面的代码找到它的 id 并用它当作停止标准(stop-criteria)。

def get_special_token_id(tokenizer: AutoTokenizer, key: str) -> int:"""Gets the token ID for a given string that has been added to the tokenizer as a special token.When training, we configure the tokenizer so that the sequences like "### Instruction:" and "### End" aretreated specially and converted to a single, new token.  This retrieves the token ID each of these keys map to.Args:tokenizer (PreTrainedTokenizer): the tokenizerkey (str): the key to convert to a single tokenRaises:RuntimeError: if more than one ID was generatedReturns:int: the token ID for the given key"""token_ids = tokenizer.encode(key)if len(token_ids) > 1:raise ValueError(f"Expected only a single token for '{key}' but found {token_ids}")return token_ids[0]tokenizer_response_key = next((token for token in tokenizer.additional_special_tokens if token.startswith(RESPONSE_KEY)), None)end_key_token_id = None
if tokenizer_response_key:try:end_key_token_id = get_special_token_id(tokenizer, END_KEY)# Ensure generation stops once it generates "### End"except ValueError:pass

向右滑动查看完整代码

8c975910d8f79ae763582d7bdef55f07.gif

主要生成功能代码

如上所述,run_generation 函数是开始生成的开始点。它获得提供的输入指令作为参数并返回模型响应。

ef run_generation(user_text:str, top_p:float, temperature:float, top_k:int, max_new_tokens:int, perf_text:str):"""Text generation functionParameters:user_text (str): User-provided instruction for a generation.top_p (float):  Nucleus sampling. If set to < 1, only the smallest set of most probable tokens with probabilities that add up to top_p or higher are kept for a generation.temperature (float): The value used to module the logits distribution.top_k (int): The number of highest probability vocabulary tokens to keep for top-k-filtering.max_new_tokens (int): Maximum length of generated sequence.perf_text (str): Content of text field for printing performance results.Returns:model_output (str) - model-generated textperf_text (str) - updated perf text filed content"""# Prepare input prompt according to model expected templateprompt_text = PROMPT_FOR_GENERATION_FORMAT.format(instruction=user_text)# Tokenize the user text.model_inputs = tokenizer(prompt_text, return_tensors="pt")# Start generation on a separate thread, so that we don't block the UI. The text is pulled from the streamer# in the main thread. Adds timeout to the streamer to handle exceptions in the generation thread.streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)generate_kwargs = dict(model_inputs,streamer=streamer,max_new_tokens=max_new_tokens,do_sample=True,top_p=top_p,temperature=float(temperature),top_k=top_k,eos_token_id=end_key_token_id)t = Thread(target=ov_model.generate, kwargs=generate_kwargs)t.start()# Pull the generated text from the streamer, and update the model output.model_output = ""per_token_time = []num_tokens = 0start = perf_counter()for new_text in streamer:current_time = perf_counter() - startmodel_output += new_textperf_text, num_tokens = estimate_latency(current_time, perf_text, new_text, per_token_time, num_tokens)yield model_output, perf_textstart = perf_counter()return model_output, perf_text

向右滑动查看完整代码

c6b87fc320fb40743f347f2d2c02665b.gif

应用 UI 助手

为了制作交互式用户界面,我们将使用 Gradio 库。下面的代码提供了用于与 UI 元素通信的有用函数。

def estimate_latency(current_time:float, current_perf_text:str, new_gen_text:str, per_token_time:List[float], num_tokens:int):"""Helper function for performance estimationParameters:current_time (float): This step time in seconds.current_perf_text (str): Current content of performance UI field.new_gen_text (str): New generated text.per_token_time (List[float]): history of performance from previous steps.num_tokens (int): Total number of generated tokens.Returns:update for performance text fieldupdate for a total number of tokens"""num_current_toks = len(tokenizer.encode(new_gen_text))num_tokens += num_current_toksper_token_time.append(num_current_toks / current_time)if len(per_token_time) > 10 and len(per_token_time) % 4 == 0:current_bucket = per_token_time[:-10]return f"Average generaton speed: {np.mean(current_bucket):.2f} tokens/s. Total generated tokens: {num_tokens}", num_tokensreturn current_perf_text, num_tokensdef reset_textbox(instruction:str, response:str, perf:str):"""Helper function for resetting content of all text fieldsParameters:instruction (str): Content of user instruction field.response (str): Content of model response field.perf (str): Content of performance info filedReturns:empty string for each placeholder"""return "", "", ""def select_device(device_str:str, current_text:str = "", progress:gr.Progress = gr.Progress()):"""Helper function for uploading model on the device.Parameters:device_str (str): Device name.current_text (str): Current content of user instruction field (used only for backup purposes, temporally replacing it on the progress bar during model loading).progress (gr.Progress): gradio progress trackerReturns:current_text"""if device_str != ov_model._device:ov_model.request = Noneov_model._device = device_strfor i in progress.tqdm(range(1), desc=f"Model loading on {device_str}"):ov_model.compile()return current_text

向右滑动查看完整代码

e64659c50e535d354ddd02e6e3971b81.gif

运行指令遵循管道

(instruction-following pipeline)

现在,我们已准备好探索模型功能。请运行以下代码:

from openvino.runtime import Corecore = Core()
available_devices = core.available_devicesexamples = ["Give me recipe for pizza with pineapple","Write me a tweet about new OpenVINO release","Explain difference between CPU and GPU","Give five ideas for great weekend with family","Do Androids dream of Electric sheep?","Who is Dolly?","Please give me advice how to write resume?","Name 3 advantages to be a cat","Write instructions on how to become a good AI engineer","Write a love letter to my best friend",
]with gr.Blocks() as demo:gr.Markdown("# Instruction following using Databricks Dolly 2.0 and OpenVINO.\n""Provide insturction which describes a task below or select among predefined examples and model writes response that performs requested task.")with gr.Row():with gr.Column(scale=4):user_text = gr.Textbox(placeholder="Write an email about an alpaca that likes flan",label="User instruction")model_output = gr.Textbox(label="Model response", interactive=False)performance = gr.Textbox(label="Performance", lines=1, interactive=False)with gr.Column(scale=1):button_clear = gr.Button(value="Clear")button_submit = gr.Button(value="Submit")gr.Examples(examples, user_text)with gr.Column(scale=1):device = gr.Dropdown(choices=available_devices, value=current_device, label="Device")max_new_tokens = gr.Slider(minimum=1, maximum=1000, value=256, step=1, interactive=True, label="Max New Tokens",)top_p = gr.Slider(minimum=0.05, maximum=1.0, value=0.92, step=0.05, interactive=True, label="Top-p (nucleus sampling)",)top_k = gr.Slider(minimum=0, maximum=50, value=0, step=1, interactive=True, label="Top-k",)temperature = gr.Slider(minimum=0.1, maximum=5.0, value=0.8, step=0.1, interactive=True, label="Temperature",)user_text.submit(run_generation, [user_text, top_p, temperature, top_k, max_new_tokens, performance], [model_output, performance])button_submit.click(select_device, [device, user_text], [user_text])button_submit.click(run_generation, [user_text, top_p, temperature, top_k, max_new_tokens, performance], [model_output, performance])button_clear.click(reset_textbox, [user_text, model_output, performance], [user_text, model_output, performance])device.change(select_device, [device, user_text], [user_text])if __name__ == "__main__":try:demo.launch(enable_queue=True, share=False, height=800)except Exception:demo.launch(enable_queue=True, share=True, height=800)

向右滑动查看完整代码

42cf86b681d4140e09d47d2f23a2b5b2.gif

运行结果

此演示提供了一个简单的界面,允许使用文本指令与模型进行通信。在“User instruction” 字段中键入您的指令,或从预定义的示例中选择一个指令,然后单击 “Submit”按钮开始生成。此外,您还可以修改高级生成参数:

  • Device - 允许切换推理设备。请注意,每次选择新设备时,都会重新编译模型,这需要一些时间。

  • Max New Tokens - 生成文本的最大尺寸。.

  • Top-p (nucleus sampling) - 如果设置为 < 1,则只有概率加起来为 top_p 或更高的最小概率的最小标记集一代保留。

  • Top-k - 保留用于 top-k-filtering 的最高概率词汇令牌的数量。

  • Temperature - 用于对数分布 (logits distribution) 进行模块化的值。

以下运行结果约2分钟。

范例1: 

Write instruction on how to become a good AI engineer

21f47bd8c508b6a3f64653e9ba9c74a5.png

范例2: 

Who is Dolly?

938c5540e09182a265c023612b525bb5.png

范例3: 

Explain difference between CPU and GPU?

02c0b67daeb4ed086c7ab696d4191fee.png

以下是右侧设备选择

(GPU.0 为 iGPU;GPU.1 为英特尔锐炫™ 及各参数调控局部放大图)

dce9943607442d4eae11e39392bcbc8e.png

40b036c2dc3212ac3888530ddad6c93e.gif

结语

Dolly 2.0 是第一个开源的,遵循指令的 LLM,由 Databricks 在一个透明且免费提供的数据集上进行微调,该数据集也是开源的,可用于商业目的。这意味着 Dolly 2.0 可用于商业应用程序,而无需支付 API 访问费用或与第三方共享数据。

英特尔 OpenVINO Notebooks 展示了此 LLM 开源代码及原理注释, 配合英特尔锐炫显卡在基于 Gradio 库做了一个用户界面让开发者可亲自体验单机版的 GPT 示例, 感受大语言模型的魅力。

关于原基科技(easy-base.com.cn)

深圳市原基科技有限公司,坐落于深圳科技新区的光明新区,专注于嵌入式主板和工控电脑、AI盒子、边缘计算服务器的研发、定制以及解决方案,是一家集研发、生产、销售、服务为一体的国家高新技术型企业,致力于为大数据、物联网、人工智能的发展提供解决方案。

主要核心骨干均为从事本行业10年以上的资深人员,依据丰富的经验和ISO9001体系的指导,设立了运营部、产品部、研发部、供应链、品质部等,具备了主板的研发设计、生产线的DIP、SMT以及整机的组装测试的能力。目前拥有20多项自主知识产权, 获评为国家高新技术企业且通ISO9001认证。

主要业务涉及智慧社区、智慧园区、智慧零售、智慧教育、智慧办公、智慧安防、智慧工业等领域;凭借灵活、快速响应的特点,得到了客户的大量认可。

6d30f4c4b17bc632eac5f944273cafb8.gif

英特尔锐炫 显卡驱动安装

英特尔锐炫™ 与 Iris® Xe 显示芯片 - WHQL - Windows* 下载并安装英特尔锐炫 驱动:

https://www.intel.cn/content/www/cn/zh/download/726609/intel-arc-iris-xe-graphics-whql-windows.html?wapkw=A380

安装完毕确认版本如下图为31.0.101.4369, 并在左侧性能确认显卡设备已有A380选项。

6a658d699e869f9d9819e3771459c6a9.png

c5fcc812dedf28f16f20f9f9bb3efa95.png

e6b6a4e571c8be5c46d58fb9d28d28af.gif

--END--

你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发者实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理➡️ 图片提取文字很神奇?试试三步实现OCR!➡️【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务➡️使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2023.0
点击 阅读原文 立即体验OpenVINO 2023.0

83b53bfe0f8a2587accb70a039ec552a.png

文章这么精彩,你有没有“在看”?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对比Google翻译、百度翻译和有道翻译

上周&#xff0c;关于有道翻译出现了一则新闻。 网易有道上线神经网络翻译&#xff0c;质量提升超过去十年总和 我个人经常使用Google翻译(Google翻译没有被墙)。然后便对Google翻译、百度翻译和有道翻译做了个对比。 测试了句子&#xff0c;一个问号便说明了问题。

2023下半场,成为首批彻底搞懂支付的人

为什么在2023年的下半场&#xff0c;你需要彻底搞懂支付&#xff1f; 纵观人类发展的历史&#xff0c;每一次支付手段的演变&#xff0c;都给社会经济发展和商品流通带来了巨大的动力和新的发展机会。支付手段在一定程度上影响着社会生产力的发展&#xff0c;是关乎国计民生的重…

小白放心看|简单聊聊Chat-GPT和大模型

今年&#xff0c; Chat-GPT问世之后&#xff0c;国内外诸多知名公司&#xff0c;如百度、阿里和谷歌等纷纷加入到大模型研发优化的行列中来。短时间内&#xff0c;GPT不仅成为科技圈新宠&#xff0c;还频频“破圈”在人们的日常学习办公生活中得到广泛应用。无论是业内人员还是…

免费送书!深度强化学习实战

你听说了吗&#xff1f;微软市值一夜暴涨5450亿美元&#xff01; 难道是出现了什么颠覆人类的“黑科技”吗&#xff1f; 图1&#xff1a;微软股价变动 没错&#xff0c;就是这个令AI界发生震动的ChatGPT&#xff01; ChatGPT因其可以逼真地模拟人类语言、与用户可以自然地交互而…

微软市值暴涨千亿,就靠这个技术!

你听说了吗&#xff1f;微软市值一夜暴涨5450亿美元&#xff01; 难道是出现了什么颠覆人类的“黑科技”吗&#xff1f; 图1&#xff1a;微软股价变动 没错&#xff0c;就是这个令AI界发生震动的ChatGPT&#xff01; ChatGPT因其可以逼真地模拟人类语言、与用户可以自然地交互而…

小白都看明白的「大模型」科普文

自2022年11月ChatGPT正式上线开始&#xff0c;引发了新一轮人工智能热潮&#xff0c;百度发布 “文心一言”、OpenAI发布ChatGPT-4等据中国移动的不完全统计&#xff0c;目前国内包括百度、阿里、华为在内至少19家大型科技公司、科研院校和初创科技团队涉足人工智能大模型训练。…

Transfomer编码器中自注意力机制、前馈网络层、叠加和归一组件等讲解(图文解释)

Transformer中的编码器不止一个&#xff0c;而是由一组N个编码器串联而成&#xff0c;一个编码的输出作为下一个编码器的输入&#xff0c;如下图所示&#xff0c;每一个编码器都从下方接收数据&#xff0c;再输出给上方&#xff0c;以此类推&#xff0c;原句中的特征会由最后一…

图文并茂讲解CUDA, CUDA Toolkit, CUDA Driver, CUDA Runtime, nvcc之间的关系及其版本兼容性

Intorduction: 跑深度学习需要用到GPU&#xff0c;而CUDA就是GPU和程序(如python)之间的桥梁。CUDA的环境依赖错综复杂&#xff0c;环境配置成为深度学习初学者的拦路虎。 同时网上教程大多为解决某个具体环境配置报错&#xff0c;或者分别讲解CUDA、CUDA toolkit(CUDA工具包)、…

谈钱不丢人,但请实事求是

这是头哥侃码的第286篇原创 诺贝尔文学奖得主莫言&#xff0c;他曾在一次采访中说过这样一句话。 “一个人&#xff0c;可以被生活打败&#xff0c;但是不能被它打倒。” 的确&#xff0c;每个人都会遇见自己的人生艰难时刻&#xff0c;像我几个月前那样&#xff0c;突然从快节…

以太网之父鲍勃·梅特卡夫获2022图灵奖,76岁进入新领域再出发!

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 3 月 22 日&#xff0c;计算机协会 ACM 授予 鲍勃梅特卡夫&#xff08;Bob Metcalfe &#xff09;为 2022 年 ACM 图灵奖的获得者&#xff0c;以表彰以太网发明的标准化和商业化。 &…

计算机网络之TCP协议详解

系列文章目录 第一章 计算机网络之http协议详解 第二章 计算机网络之https协议详解 第三章 计算机网络之TCP协议详解 文章目录 系列文章目录前言TCP 传输控制协议TCP的封装格式三次握手四次断开/四次挥手计时器重传计时器——为了控制丢失的数据段坚持计时器——为了防止零窗口…

ROS-Noetic版本的安装(Ubuntu20.04环境)

ROS安装&#xff1a; 关于ROS的安装已经有很多好的博文供以参考&#xff0c;本文总结了一些安装过程中可能出现的报错情况已经解决方法。许多博文的教程步骤大差不差&#xff0c;建议是直接先按照官方步骤走&#xff0c;遇到问题再一步步解决。 ROS官方的参考链接&#xff1a; …

【机器学习】pytorch安装——环境配置(极简教程)

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; 文章目录 省流总结新建环境确定显卡型号安装显卡驱动安装pytorch国内镜像下载本地下载 验证安装成功 最近重新配置环境&#xff0c;简单记录一下。最近chatgpt等大语言模型和ai绘图火热&#xff0c;也为了方便很多…

淘宝天猫重组换血,原核心高管离职;Google Bard 大更新,数学和逻辑能力有所提升;K8s 1.27 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

【Redis】缓存一致性

文章目录 缓存一致性读缓存**双检加锁**策略 写缓存保障最终数据一致性解决方案先更新数据库&#xff0c;再更新缓存案例演示1->更新缓存异常案例演示2->并发导致 先更新缓存&#xff0c;再更新数据库案例演示->并发导致 先删除缓存&#xff0c;再更新数据库案例演示-…

Composer - 学习/实践

1.应用场景 熟练使用composer快速构建php web应用, 弄秦楚composer的基本工作原理. 2.学习/操作 文档 php三种工具pecl pear composer的区别_会飞的鱼的博客-CSDN博客_php-pear Composer 2.0 is now available! // Composer 2.0 is now available! 介绍 A multi-framework Co…

解读最佳实践:倚天 710 ARM 芯片的 Python+AI 算力优化 | 龙蜥技术

编者按&#xff1a;在刚刚结束的 PyCon China 2022 大会上&#xff0c;龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲&#xff0c;作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作&#xff0c;以及在 ARM 云平台…

解读最佳实践:倚天710 ARM芯片的 Python+AI 算力优化

编者按&#xff1a;在刚刚结束的 PyCon China 2022 大会上&#xff0c;龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲&#xff0c;作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作&#xff0c;以及在 ARM 云平台…

论文笔记:AugGPT: Leveraging ChatGPT for Text Data Augmentation

AugGPT&#xff1a;利用 ChatGPT 进行文本数据增强 摘要1 介绍2 相关工作2.1 数据增强2.2 小样本学习2.3 超大型语言模型2.4 ChatGPT&#xff1a;现在与未来 3 数据集3.1 亚马逊数据集3.2 症状数据集3.3 PubMed20k数据集 4 方法4.2 使用 ChatGPT 进行数据增强4.3 小样本文本分类…

好用的文献阅读插件(Easy Scholar、EasyPubMedicine、Sci-Hub X Now!)

目录 一、Easy Scholar 二、EasyPubMedicine 一、Easy Scholar Easy Scholar&#xff1a;自动显示期刊等级&#xff0c;帮助筛选优质论文。 安装&#xff1a; 点击浏览器右上角的“。。。”&#xff0c;选择“扩展”。 点击打开加载项 在浏览器的扩展商店中搜索“easy sch…