前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用腾讯云 Serverless 开发公众号后端

使用腾讯云 Serverless 开发公众号后端

原创
作者头像
陈少文
修改于 2021-08-30 02:42:10
修改于 2021-08-30 02:42:10
3.6K0
举报
文章被收录于专栏:陈少文陈少文

1. Serverless 的使用场景

如果说云计算是希望资源能够像自来水一样,隋开随用、随关随停,那么 Serverless 就是云计算的未来方向之一。相较于 IaaSKubernetes 这些运行时,Serverless 提供更细粒度资源控制的同时,还能提供更大的弹性,允许开发者快速交付功能。

常见的 Serverless 场景有聚合服务、构建轻量服务、海量按需付费,能够覆盖大部分的需求。本文将以腾讯云的 Serverless 服务,构建一个微信公众号的服务后端。

2. 在腾讯云 Serverless 上创建函数服务

目前腾讯云 Serverless 主要提供两种类型:

  • 函数服务,提供一些函数执行的服务
  • Serverless 应用,提供完整应用的运行时

Serverless 应用类型目前并没有提供编译型应用,也没有 Gin 框架,主要是 PHP、Python。但函数服务中,Serverless 提供了一种镜像类型,可以直接运行镜像中的文件。因此,可以提前构建好应用的镜像,再借助函数服务创建应用服务。

2.1 初始化镜像

  • 创建命名空间

打开链接 https://console.cloud.tencent.com/tke2/registry/user/space , 新建一个命名空间,这里我使用的是 shaowenchen

  • 创建一个镜像

点击【新建】,创建一个空的镜像,用于创建函数服务。这里需要记住镜像地址,ccr.ccs.tencentyun.com/shaowenchen/xxx

2.2 创建函数服务

打开链接 https://console.cloud.tencent.com/scf/list-create?rid=1&ns=default&createType=empty

按照上图,依次按照如下步骤操作:

  1. 选择自定义创建
  2. 选择 Web 函数
  3. 选择镜像部署,点击选择镜像, 选中上一步创建的镜像
  4. 完善 Command, 填入镜像中应用服务的启动命令 /app

最后点击 【完成】 创建服务,但是提供的网关地址 https://service-xxx.gz.apigw.tencentcs.com/release/ 并不能打开,因为镜像还是空的。下一步,我们创建项目,推送镜像。

3. 在 Github 上创建后端项目

3.1 使用 Gin 初始化项目

使用 Gin 创建一个后端项目,下面是 main.go 文件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" "github.com/yaotian/gowechat" "github.com/yaotian/gowechat/mp/message" "github.com/yaotian/gowechat/wxcontext" ) func main() { router := gin.Default() router.Any("/mp/", hello) router.Any("/", func(c *gin.Context) { c.String(http.StatusOK, "OK") }) router.Run(":9000") } func hello(c *gin.Context) { //配置微信参数 config := wxcontext.Config{ AppID: "从公众号管理页获取", AppSecret: "从公众号管理页获取", Token: "从公众号管理页获取", EncodingAESKey: "从公众号管理页获取", } wc := gowechat.NewWechat(config) mp, err := wc.MpMgr() if err != nil { return } // 传入request和responseWriter msgHandler := mp.GetMsgHandler(c.Request, c.Writer) //设置接收消息的处理方法 msgHandler.SetHandleMessageFunc(func(msg message.MixMessage) *message.Reply { //回复消息:演示回复用户发送的消息 text := message.NewText(msg.Content) text.Content = "I get a msg : " + text.Content return &message.Reply{message.MsgTypeText, text} }) //处理消息接收以及回复 err = msgHandler.Handle() if err != nil { fmt.Println(err) return } }

代码实现的效果是,响应用户的输入 xxx,返回消息 I get a msg : xxx, 服务端配置在 /mp/ 路径上。

需要特别注意的是端口需要监听 9000,否则 Serverless 无法响应

3.2 添加 Dockerfile

Dockerfile 内容如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

ARG GO_VERSION=1.16 FROM golang:${GO_VERSION}-alpine AS builder RUN apk update && apk add alpine-sdk git && rm -rf /var/cache/apk/* RUN mkdir -p /builder WORKDIR /builder COPY go.mod . COPY go.sum . RUN go mod download COPY . . RUN go build -o ./app ./main.go FROM alpine:latest RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* WORKDIR / COPY --from=builder /builder/app . EXPOSE 9000

分阶段构建, 将代码编译到 alpine:latest 镜像中, 可执行文件为 /app, 暴露的端口为 9000。

3.3 添加 Github Action

为了方便持续集成,在仓库中新增文件 .github/workflows/build.yaml , 内容如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

name: Go on: push: branches: - "main" jobs: build: name: Build runs-on: ubuntu-latest env: GO111MODULE: on steps: - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Set up Go 1.16 uses: actions/setup-go@v2 with: go-version: 1.16 - name: Login Resigtry if: github.event_name == 'push' run: | echo ${{ secrets.REGISTRY_PASSWORD }} | docker login ccr.ccs.tencentyun.com -u ${{ secrets.REGISTRY_USERNAME }} --password-stdin - name: Build run: | docker build -t ccr.ccs.tencentyun.com/shaowenchen/xxx -f ./Dockerfile . docker push ccr.ccs.tencentyun.com/shaowenchen/xxx:latest

提交代码之后,Github Action 自动编译代码,推送镜像到腾讯云的镜像仓库

4. 公众号配置及测试

4.1 启用公众号服务器配置

如上图,在微信公众号的管理页面,启用服务配置。需要记下如下信息,用于后端代码代码鉴权:

  • AppID
  • AppSecret
  • Token
  • EncodingAESKey

这里的服务器地址就是函数服务的网关地址 https://service-xxx.gz.apigw.tencentcs.com/release/ + mp/ 。由于服务尚未更新,验证无法通过,需要停留在这个页面,等待服务就绪再保存即可。

4.2 配置秘钥更新服务

将上一步获取到的配置填写到 main.go 文件的配置中:

1 2 3 4 5 6

config := wxcontext.Config{ AppID: "从公众号管理页获取", AppSecret: "从公众号管理页获取", Token: "从公众号管理页获取", EncodingAESKey: "从公众号管理页获取", }

提交之后,等待 Github Action 执行完毕,推送镜像成功。

4.3 更新函数服务

虽然服务镜像更新成功,但是函数服务并不会更新。

如上图,我们打开函数管理的页面,选择镜像版本,勾选 latest 提交。提交成功之后,页面会提示拉取镜像、服务更新中,此时打开访问地址,页面响应 OK

此时再去报错公众号服务配置,即可成功。

4.4 发送消息测试

最后,在微信公众号测试一下功能:

在腾讯云的函数服务后端,也可以查看到相关的请求日志。

5. 总结

本文主要以微信公众号后端开发为需求,尝试了一下腾讯云 Serverless 服务。由于目前,腾讯云 Serverless 服务有一定的免费额度,对于个人的一些小项目、Demo 项目,也算够用。本文主要涉及如下内容:

  • 创建了一个腾讯云 Serverless 函数服务
  • 使用 Github Action 创建了一个 Gin 持续集成项目
  • 微信公众号服务器端配置

最终实现了一个能自动响应用户公众号消息输入的功能需求。


原文地址: https://www.chenshaowen.com/blog/develop-a-wechat-backend-using-tencent-serverless.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
历时6个月,Hugging Face开源LLM「超大规模实战手册」!200页3万字4000次训练
最近,Hugging Face发布了一个「超大规模训练手册」,教我们如何在GPU集群上训练LLM。
新智元
2025/03/03
2250
历时6个月,Hugging Face开源LLM「超大规模实战手册」!200页3万字4000次训练
AI Infra论文阅读之将流水线并行气泡几乎降到零(附基于Meagtron-LM的ZB-H1开源代码实现解读)
这篇论文对应的链接为:https://openreview.net/pdf?id=tuzTN0eIO5 ,最近被ICLR 2024接收,但不少AI Infra的同行已经发现了这个工作的价值,并且已经开源在 https://github.com/sail-sg/zero-bubble-pipeline-parallelism ,在一些AI Infra相关的地方也存在一些讨论和介绍。比如 https://www.zhihu.com/question/637480969/answer/3354692418
BBuf
2024/02/22
2.5K0
AI Infra论文阅读之将流水线并行气泡几乎降到零(附基于Meagtron-LM的ZB-H1开源代码实现解读)
AI Infra论文阅读之LIGHTSEQ(LLM长文本训练的Infra工作)
从 https://github.com/RulinShao/LightSeq 注意到这篇paper(https://arxiv.org/pdf/2310.03294.pdf),paper里面有一些比较有趣的发现并且这个paper的代码是基于Triton来实现的,所以激发了我阅读兴趣。我后续也会从源码的角度来解读这篇paper核心idea的代码实现,顺便学习下Triton。介于篇幅原因,这篇文章只读一下这篇paper,把握一下核心的Infra相关的idea。这篇paper应该还没有中会议,处于openreview阶段。
BBuf
2024/02/22
4490
AI Infra论文阅读之LIGHTSEQ(LLM长文本训练的Infra工作)
大模型训练:Megatron-Core中的通信优化
来源丨https://zhuanlan.zhihu.com/p/694877232
BBuf
2024/06/03
1.2K0
大模型训练:Megatron-Core中的通信优化
大模型训练之难,难于上青天?预训练易用、效率超群的「李白」模型库来了!
机器之心发布 机器之心编辑部 LiBai(李白)模型库覆盖了 Hugging Face、Megatron-LM、DeepSpeed、FairSeq 这些所有主流 Transformer 库的优点,让大模型训练飞入寻常百姓家。 大模型多了去了,告诉我怎么加速?自 2018 年 BERT 诞生,到 GPT-3、ViT 等拥有数以亿计的参数规模的模型不断涌现,AI 模型参数量的爆发式增长已不足为奇,让炼丹师无暇顾及甚至感到麻木。 与此同时,大模型对计算和内存资源提出了巨大的挑战。训练成本急剧上升,比如用一块非
机器之心
2022/07/07
1.2K0
大模型训练之难,难于上青天?预训练易用、效率超群的「李白」模型库来了!
LLM高性能并行训练技术
- **深度学习的重要性**:人工智能成为国际竞争焦点,深度学习是其核心技术,在众多领域取得突破,推动社会向智能化跃升。
zhangjiqun
2024/12/31
1790
DeepSpeed结合Megatron-LM训练GPT2模型笔记(上)
本文基于DeepSpeedExamples仓库中给出的Megatron相关例子探索一下训练GPT2模型的流程。主要包含3个部分,第一个部分是基于原始的Megatron如何训练GPT2模型,第二个部分是如何结合DeepSpeed的特性进行训练Megatron GPT2,由于篇幅原因这篇文章只写了第一部分,主要是非常细致的记录了跑起来Megatron GPT2训练流程碰到的一些问题和如何解决的。本文主要以 https://github.com/microsoft/DeepSpeedExamples/tree/bdf8e59aede8c8e0577e8d4d557298ca8515268f 这里的codebase展开写作。
BBuf
2023/08/22
2.3K0
DeepSpeed结合Megatron-LM训练GPT2模型笔记(上)
Megatron-LM 分布式执行调研
Created by: strint Created time: May 31, 2023 6:02 PM
BBuf
2023/08/22
2.2K0
Megatron-LM 分布式执行调研
【AI系统】张量并行
在大模型的训练中,单个设备往往无法满足计算和存储需求,因此需要借助分布式训练技术。其中,模型并行(Model Parallelism, MP)是一种重要的方法。模型并行的基本思想是将模型的计算任务拆分到不同的设备上执行,以提高训练效率和处理更大规模的模型。下面将重点介绍模型并行中的张量并行。
用户11307734
2024/12/09
3320
OpenAI炼丹秘籍:教你学会训练大型神经网络
来源:新智元本文约3000字,建议阅读5分钟本文详细介绍了一些训练大型神经网络的相关技术及底层原理。 想知道那些超大规模神经网络都是怎么训出来的?OpenAI一篇文章总结:除了显卡要多,算法也很重要! 如今AI的很多进步都要归功于大型神经网络,尤其是大公司和研究机构提供的预训练模型更是推动了下游任务的进步。 但想自己动手训练一个大型神经网络并不简单,首先要面对的就是海量的数据、多机协调和大量GPU的调度工作。 一提到「并行」,冥冥之中就会感觉多了很多隐藏的bug。 最近OpenAI发布了
数据派THU
2022/07/19
4050
OpenAI炼丹秘籍:教你学会训练大型神经网络
如何准确的估计llm推理和微调的内存消耗
Command-R+, Mixtral-8x22b和Llama 3 70b都在最近的几周内发布了,这些模型是巨大的。它们都有超过700亿个参数:
deephub
2024/04/30
7340
如何准确的估计llm推理和微调的内存消耗
硬件高效的线性注意力机制Gated Linear Attention论文阅读
上篇文章 flash-linear-attention中的Chunkwise并行算法的理解 根据GLA Transformer Paper(https://arxiv.org/pdf/2312.06635 作者是这位大佬 @sonta)通过对Linear Attention的完全并行和RNN以及Chunkwise形式的介绍理解了Linear Attention的Chunkwise并行算法的原理。但是paper还没有读完,后续在paper里面提出了Gated Linear Attention Transformer,它正是基于Chunkwise Linear Attention的思想来做的,不过仍有很多的工程细节需要明了。这篇文章就来继续阅读一下paper剩下的部分,把握下GLA的计算流程以及PyTorch实现。下面对Paper的第三节和第四节进行理解,由于个人感觉Paper公式有点多,所以并没有对paper进行大量直接翻译,更多的是读了一些部分之后直接大白话一点写一下我对各个部分的理解和总结。这样可能会忽略一些细节,建议读者结合原Paper阅读。
BBuf
2024/06/05
4480
硬件高效的线性注意力机制Gated Linear Attention论文阅读
[源码解析] PyTorch 流水线并行实现 (1)--基础知识
本系列开始介绍PyTorch的流水线并行实现。实质上,PyTorch就是 GPipe 的PyTorch版本。这些开源软件在互相借鉴思路,互相学习,从 PyTorch 的源码注释中,可以见到我们之前介绍的部分框架/库的引用或者论文链接。
罗西的思考
2021/09/26
1.9K0
[源码解析] PyTorch 流水线并行实现 (1)--基础知识
放弃Softmax,首个线性注意力Transformer大模型:1750亿参数,速度、精度更优
近日,上海人工智能实验室和 OpenNLPLab 的一个研究团队提出了一种新的大型语言模型 TransNormerLLM,其中完全抛弃了基于 Softmax 的注意力机制,而是使用了新提出的线性注意力。据介绍,TransNormerLLM 是首个基于线性注意力的大型语言模型(LLM),其在准确度和效率方面的表现优于传统的基于 Softmax 注意力的模型。研究者也将发布其预训练模型的开源版本。
机器之心
2023/08/08
4660
放弃Softmax,首个线性注意力Transformer大模型:1750亿参数,速度、精度更优
DeepSeek开源周 Day04:从DualPipe聊聊大模型分布式训练的并行策略
今天是DeepSeek开源周的第四天,官方开源了一种新型并行计算优化策略——DualPipe。 其实大家阅读过Deepseek-V3技术报告的同学,对这个技术并不陌生。
致Great
2025/02/28
4240
DeepSeek开源周 Day04:从DualPipe聊聊大模型分布式训练的并行策略
FlashAttention:快速且内存高效的准确注意力机制
在深度学习领域,注意力机制是提高模型性能的关键组件。然而,传统的注意力机制在长序列处理时会消耗大量内存和计算资源。为了解决这个问题,Tri Dao等人提出了FlashAttention,这是一种快速且内存高效的注意力机制。本文将介绍FlashAttention及其改进版FlashAttention-2的核心概念、安装方法和使用示例。
857技术社区
2024/07/04
1.8K0
FlashAttention:快速且内存高效的准确注意力机制
腾讯云TACO推出混合序列并行USP,大幅提升LLM和DiT训练性能
大语言模型长序列是近期研究的热点,如何训练超长序列的模型成为关注的重点。序列并行(SP)是一种将输入序列维度进行切分的技术,它已成为训练和推理更长序列的一种有效方法。近段时间,腾讯云在大模型序列并行领域取得重大突破,推出了创新的USP(Unified Sequence Parallel)技术。对比主流的DeepSpeed-Ulysses[1]和Ring-Attention[2]序列并行方式,USP在DiT场景下生图的性能提升最多24%,在LLAMA2-7B场景的性能提升最多2倍以上,为DiT和长序列场景提供强力支持。
腾讯云计算产品团队
2024/07/12
8410
腾讯云TACO推出混合序列并行USP,大幅提升LLM和DiT训练性能
用FP8训练大模型有多香?微软:比BF16快64%,省42%内存
大型语言模型(LLM)具有前所未有的语言理解和生成能力,但是解锁这些高级的能力需要巨大的模型规模和训练计算量。在这种背景下,尤其是当我们关注扩展至 OpenAI 提出的超级智能 (Super Intelligence) 模型规模时,低精度训练是其中最有效且最关键的技术之一,其优势包括内存占用小、训练速度快,通信开销低。目前大多数训练框架(如 Megatron-LM、MetaSeq 和 Colossal-AI)训练 LLM 默认使用 FP32 全精度或者 FP16/BF16 混合精度。
机器之心
2023/11/02
9330
用FP8训练大模型有多香?微软:比BF16快64%,省42%内存
以 GPT-175B 为例,聊聊大语言模型分布式训练的最佳实践
导读本文分享主题为大语言模型分布式训练的相关技术及量化分析,并以GPT-175B 为例,介绍相关技术的最佳实践。
NewBeeNLP
2023/12/20
1.8K0
以 GPT-175B 为例,聊聊大语言模型分布式训练的最佳实践
北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
“炼大模型”已成为人工智能领域的主流研发趋势。从GPT-3的1750亿,到如今悟道2.0的1.75万亿,超大语言模型在 NLP 基准任务中不断刷新SOTA。
AI科技评论
2021/10/11
1.5K0
北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
推荐阅读
相关推荐
历时6个月,Hugging Face开源LLM「超大规模实战手册」!200页3万字4000次训练
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档