当前位置: 首页 > news >正文

威海建设集团网站hyper cache wordpress

威海建设集团网站,hyper cache wordpress,圣辉友联北京网站建设公司,博山专业网站优化哪家好一、说明 在NLP的眼见的应用#xff0c;就是在“ 当你在谷歌上提出一个问题并立即得到答案时会发生什么#xff1f;例如#xff0c;如果我们在谷歌搜索中询问谁是美国总统#xff0c;我们会得到以下回答#xff1a;Joe Biden#xff1b;这是一个搜索问题#xff0c;同时… 一、说明 在NLP的眼见的应用就是在“  当你在谷歌上提出一个问题并立即得到答案时会发生什么例如如果我们在谷歌搜索中询问谁是美国总统我们会得到以下回答Joe Biden这是一个搜索问题同时又是一个QA问答问题本文将叙述在Google的搜索引擎种NLP库hume-face库的部署可以作为应用参考。 二、谷歌的问答和搜索 它显示Google 最初在 1.6 秒内搜索并排名了 1 亿个页面然后执行了额外的处理步骤以从页面中找到答案片段。第一个任务是谷歌作为搜索引擎的核心产品。第二个处理步骤从网页中查找问题的答案是问答 QA NLP 问题。QA NLP 系统是一种 NLP 系统旨在回答以自然语言如英语或中文提出的问题。这些系统使用自然语言理解和知识表示技术的组合来分析问题并提供相关且准确的响应。这些系统通常用于搜索引擎、客户服务聊天机器人和虚拟助手等应用程序。 在QA NLP系统中问题和上下文被传递给模型模型从上下文中提取答案。此方法可用于构建企业级 QA 系统。例如文档搜索引擎如弹性搜索可用于对获得问题答案概率最高的文档进行排名并使用 QA 模型在该文档中查找答案。这些系统通常被称为读者检索器系统其中文档搜索是检索器的任务找到问题的答案是阅读的任务。由专注于NLP的德国公司Deepset开发的Haystack库可用于构建企业级的读取器检索器系统。但是本文将只关注系统的QA回答读者部分我们有一个上下文和一个问题并希望得到答案。 图 2使用 Haystack 库的 QA 系统取自 Haystack GitHub 存储库 图 3 显示了用于问答 NLP 系统的读取器-检索器架构示例。 图 3问答系统的读取器-检索器架构 2.1 带变压器的 QA NLP 现代自然语言处理NLP应用程序通常使用Google研究人员在2017年提出的转换器架构构建。1 这些架构优于递归神经网络RNN和长短期记忆LSTM网络并使NLP领域的迁移学习成为可能。为大多数NLP应用提供动力的两种最流行的变压器架构是生成式预训练变压器GPT2和来自变压器的双向编码器表示BERT。3 最初的转换器论文基于编码器和解码器架构通常用于机器翻译等任务其中单词序列从一种语言到另一种语言图 4。后来编码器和解码器模块在许多NLP模型中被改编为独立模型。仅编码器模型将输入标记转换为丰富的数字表示形式非常适合文本分类或命名实体识别等问题。BERTRoBERTa和DistilBERT是一些使用仅编码器变压器块的型号。仅解码器模型即 GPT 模型通常用于文本生成或自动完成任务其中每个任务的表示形式取决于左侧上下文。 图4 变压器架构摘自变压器原文) 变压器还使NLP领域的迁移学习成为可能。迁移学习是计算机视觉中的一种普遍实践其中卷积神经网络在一项任务上进行训练然后在新任务上进行微调和采用。在架构上这涉及将模型拆分为主体和头部其中头部是特定于任务的网络。在训练期间体重从大规模数据集如 ImageNet中学习广泛的特征这些数据集用于为新任务初始化新模型。这种方法成为计算机视觉的标准方法。生产中的大多数计算机视觉模型都是使用迁移学习技术进行训练的。 图 5 迁移学习其中一个域的主体用于另一个域。 在变压器架构支持NLP中的变压器学习之后许多机构发布了他们训练有素的NLP模型供学者和从业者使用。GPT 和 BERT 是两个预先训练的模型它们在各种 NLP 基准测试中采用了新的技术水平并开创了变压器时代。随着时间的推移不同的研究机构发布了转换器架构的不同变体一些使用PyTorch另一些使用Tensorflow这使得从业者很难使用这些模型。HuggingFace创建了一组统一的API和一组预先训练的模型和数据集简化了从业者采用最先进的NLP模型的过程。 2.2 用于 NLP 的 “抱面”humg-face 库 拥抱面变压器是最受欢迎的 NLP 库之一为各种转换器模型以及代码和工具提供了标准化接口以使这些模型适应新的用例。它还支持三个主要的深度学习框架PytorchTensorflow和JAX。Hugging Face 生态系统主要由两部分组成一系列库和 Hub如下所示。库提供代码Hub 提供预先训练的模型权重、数据集、评估指标脚本等。 图 6 拥抱脸库的组件。 2.3 质量保证模型构建 我们使用squad_v2数据集从拥抱面模型中心微调预训练的变压器模型。Squad_v2将 SQuAD100.000 中的 11 个问题与众包工作者对抗性编写的 50000 多个无法回答的问题结合起来看起来与可回答的问题相似。系统尽可能回答问题确定段落何时支持不回答并放弃回答。我们将使用MobileBert流行的BERT模型的压缩版本。在 SQuAD v1.1/v2.0 问答任务中MobileBERT 获得了 1.90/0.79 的 dev F2 分数比 BERT_BASE 高 1.5/2.11。 我们将从拥抱面库中引入预先训练的模型和分词器。由于这将是一个同步的无服务器应用程序我们将使用BERT模型mobilebert的小型版本来加快处理时间。以下 python 代码将在数据集上微调Squad_v2 mobilebert 模型下载到目录中。./model from transformers import AutoModelForQuestionAnswering, AutoTokenizerdef get_model(model):Loads model from Huggin face model hub intothe ./model directorytry:model AutoModelForQuestionAnswering.from_pretrained(model, use_cdnTrue)model.save_pretrained(./model)except Exception as e:raise (e) get_model(mrm8488/mobilebert-uncased-finetuned-squadv2) 以下 python 代码将 mibilbert 分词器下载到目录中。./model def get_tokenizer(tokenizer):Loads tokenizer from Huggin face model hub intothe ./model directorytry:tokenizer AutoTokenizer.from_pretrained(tokenizer)tokenizer.save_pretrained(./model)except Exception as e:raise (e)get_tokenizer(mrm8488/mobilebert-uncased-finetuned-squadv2) 一旦我们有了分词器我们就可以对进入模型的数据进行编码并对来自模型的响应进行解码。以下代码适用于编码器函数该函数接受问题、上下文和分词器并返回将传递给模型的 。attention_masksinpud_ids def encode(tokenizer, question, context):encodes the question and context with a given tokenizerthat is understandable to the modelencoded tokenizer.encode_plus(question, context)return encoded[input_ids], encoded[attention_mask] 此代码片段会将模型的答案解码为人类可读的字符串格式。 def decode(tokenizer, token):decodes the tokens to the answer with a given tokenizerto return human readable response in a string formatanswer_tokens tokenizer.convert_ids_to_tokens(token, skip_special_tokensTrue)return tokenizer.convert_tokens_to_string(answer_tokens) 我们必须将编码器、模型预测和解码器组合在一个方法中。下面的代码首先从目录中加载模型和分词器并通过前面定义的编码器方法传递问题和上下文。然后输出通过模型传递最后答案标记通过解码方法传递以字符串格式获取答案。./model from transformers import AutoModelForQuestionAnswering, AutoTokenizer, AutoConfig import torchdef serverless_pipeline(model_path./model):Initializes the model and tokenzier and returns a predictfunction that ca be used as pipelinetokenizer AutoTokenizer.from_pretrained(model_path)model AutoModelForQuestionAnswering.from_pretrained(model_path)def predict(question, context):predicts the answer on an given question and context.Uses encode and decode method from aboveinput_ids, attention_mask encode(tokenizer, question, context)start_scores, end_scores model(torch.tensor([input_ids]), attention_masktorch.tensor([attention_mask]))ans_tokens input_ids[torch.argmax(start_scores) : torch.argmax(end_scores) 1]answer decode(tokenizer, ans_tokens)return answerreturn predict 三、无服务器架构 图 1 显示了使用 AWS 云的 QA NLP 应用程序的无服务器架构。该应用程序的无服务器后端使用 AWS lambda、DynamoDB、API 网关和 ECR 进行容器注册表。Lambda 函数是包装在 docker 映像中并上传到 AWS ECR 的推理服务器。AWS API 网关将 POST 请求负载发送到 lambda 函数。AWS DynamoDB 存储发送到推理服务器的数据以进行监控。Lambda 可以使用仅允许对数据库进行写入访问的 IAM 角色与 DynamoDB 通信。 图 7 AWS 上的无服务器 QA NLP 架构 3.1 在 DynamoDB 中存储日志 DynamoDB 是一个完全托管的无服务器 NoSQL 数据库非常适合存储模型的输入和输出以便监控和评估模型。我们使用 boto3 库将日志放入我们的数据库中。我们将 DynamoDB 的名称保留在 Lambda 的环境变量中。我们希望将时间、有效载荷上下文和问题以及模型的答案存储在数据库中。以下代码在 DyanmoDB 中编写问题、上下文和模型答案。DYNAMO_TABLE import boto3 import os import uuid import timedynamodb boto3.resource(dynamodb, region_nameus-east-1) table dynamodb.Table(os.environ[DYNAMODB_TABLE])timestamp str(time.time()) item {primary_key: str(uuid.uuid1()),createdAt: timestamp,context: body[context],question: body[question],answer: answer, } table.put_item(Itemitem) 3.2 λ函数 Lambda 是来自 AWS 的无服务器计算服务将在其中提供推理服务。Lambda 处理程序是来自 API 请求的信息通过函数并将输出返回到 API 的地方。我们还将包括用于在函数中编写代码的 DynamoDB。 def handler(event, context):try:# loads the incoming event into a dictonarybody json.loads(event[body])# uses the pipeline to predict the answeranswer question_answering_pipeline(questionbody[question], contextbody[context])timestamp str(time.time())item {primary_key: str(uuid.uuid1()),createdAt: timestamp,context: body[context],question: body[question],answer: answer,}table.put_item(Itemitem)return {statusCode: 200,headers: {Content-Type: application/json,Access-Control-Allow-Origin: *,Access-Control-Allow-Credentials: True,},body: json.dumps({answer: answer}),}except Exception as e:print(repr(e))return {statusCode: 500,headers: {Content-Type: application/json,Access-Control-Allow-Origin: *,Access-Control-Allow-Credentials: True,},body: json.dumps({error: repr(e)}),} 3.3 Dockerize Lambda 函数 由于 Lambda 函数现在支持 docker 映像因此我们可以将所有内容 dockerize 并将其上传到 Amazon Elastic Container Registry Amazon ECR 存储库。Lambda 函数将访问此图像以进行预测。Dockerfile 使用 AWS 发布的基础映像来执行 Lambda 函数。 FROM public.ecr.aws/lambda/python:3.8# Copy function code and models into our /var/task COPY ./ ${LAMBDA_TASK_ROOT}/# install our dependencies RUN python3 -m pip install -r requirements.txt --target ${LAMBDA_TASK_ROOT}# run get_model.py to get model weights and tokenizers RUN python3 get_model.py# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ handler.handler ] 我们需要发送以构建、标记 docker 镜像并将其推送到 ECR 存储库。首先我们必须使用 AWS CLI 登录到我们的 ECR 存储库。 aws_regionyour aws region aws_account_idyour aws accountaws ecr get-login-password --region $aws_region \ | docker login username AWS --password-stdin $aws_account_id.dkr.ecr.$aws_region.amazonaws.com 然后构建、标记 docker 镜像并将其推送到 ECR 存储库。 docker build -t nlp-lambda:v1 serverless-bert/. docker tag nlp-lambda:v1 $aws_account_id.dkr.ecr.$aws_region.amazonaws.com/nlp-lambda:v1 docker push $aws_account_id.dkr.ecr.$aws_region.amazonaws.com/nlp-lambda:v1 3.4 部署无服务器应用程序 我们将使用 Serverless 库这是一个开源且与云无关的库适用于所有主要的公共云提供商。使用 npm 安装无服务器如果计算机上尚未安装。如果您的计算机上没有 npm请按照此处的安装说明进行操作。 npm install -g serverless 下面是一个无服务器配置文件示例用于使用 API 网关和 DynamoDB 部署 Lambda 函数类似于图 7 中所示的架构 service: serverless-bert-qa-lambda-dockerprovider:name: aws # providerregion: us-east-1 # aws regionmemorySize: 5120 # optional, in MBtimeout: 30 # optional, in secondsenvironment:DYNAMODB_TABLE: ${self:service}-Table-${sls:stage}iamRoleStatements:- Effect: AllowAction:- dynamodb:PutItemResource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}-Table-${sls:stage} functions:questionanswering:image: ${ACOUNT_NUMBER}.dkr.ecr.us-east-1.amazonaws.com/bert-lambda:v1 #ecr urlevents:- http:path: qa # http pathmethod: post # http method resources:Resources:CustomerTable:Type: AWS::DynamoDB::TableProperties:AttributeDefinitions:- AttributeName: primary_keyAttributeType: SBillingMode: PAY_PER_REQUESTKeySchema:- AttributeName: primary_keyKeyType: HASHTableName: ${self:service}-Table-${sls:stage} 无服务器框架需要 AWS 凭证才能代表我们访问 AWS 资源。如果您没有 IAM 用户请按照此说明创建 IAM 用户并使用该用户设置凭证。建议使用 AWS-CLI 配置 AWS 凭证。要通过 进行设置请先安装它然后运行以配置 AWS-CLI 和凭证aws-cliaws configure $ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]: 一切准备就绪后以下命令将使用无服务器配置文件并将基础设施部署到 AWS。确保您与配置文件位于同一目录中。 serverless deploy 部署完成后无服务器将返回可用于测试模型的 API 网关的 URL。您可以使用 Postman、javascript 或 curl 来调用模型。在此项目的 GitHub 存储库中创建了一个使用 HTML、CSS 和 javascript 的简单前端应用程序用于与部署的 API 网关进行交互。 图 8 QA NLP 应用程序的前端应用程序 四、总结 问答 NLP 模型通常用于搜索引擎、客户服务聊天机器人和虚拟助手等应用程序。这篇博文描述了 QA NLP 问题并使用 HuggingFace 库和 AWS 基础设施构建和部署了一个全栈无服务器 QA NLP 应用程序。无服务器 ML 应用程序可能不是适用于所有用例的良好部署方法但它是您将模型投入生产而无需担心底层基础设施的重要第一步。
http://www.w-s-a.com/news/473185/

相关文章:

  • 免费网站404免费进入重庆的公需科目在哪个网站做
  • 网站空间租用费用网站建设公司怎么宣传
  • 镇江网站建设优化案例分析dw2018网页制作步骤图文
  • 网站开发一个多少钱为什么前端都不用dw
  • 网站降权的原因北京中小企业网站建设公司
  • 个人域名能做网站吗wordpress
  • 手机网站设计只找亿企邦工业设计公司简介
  • 腾讯云主机做网站免费网站怎么做啊
  • 网站建设推广销售话术广州网页定制多少钱
  • 备案号是哪个网站项目管理pmp
  • 做网站需要哪些硬件软件网站视频链接怎么做的
  • 电子商务网站建设试题二wordpress主页显示浏览数
  • 网站快照没了广州企业电话大全
  • 网站项目开发收费标准网站开发app开发主营业务
  • 怎么到国外网站去接模具订单做互联网建设企业网站
  • 深圳品牌网站建设公司排名洪雅网站建设
  • nodejs 做网站wordpress主题绕过激活码
  • 平湖模板网站建设公司网页美工培训
  • 顺德网站建设市场建设工程交易中心网站
  • 深圳企业网站怎么做浪琴手表网站建设图
  • 2018网站外链怎么做济南 网站设计公司
  • 承德百度网站建设郑州网站seo优化公司
  • 四川建站模板网站公司分类信息网站制作
  • 网站开发前后端有wordpress模板安装教程视频教程
  • 有网站想修改里面的内容怎么做怎么做黑彩黑彩网站
  • 什么专业会做网站网站建设续费合同
  • 网站开发的项目开发网站做直播功能需要注册吗
  • 网站开发新手什么软件好网站设计师和ui设计师
  • 太仓苏州网站建设软件开发网站建设
  • 一个虚拟主机做2个网站吗工信部怎么查网站备案