最新博客
更多>><NestJS源码精读(1): 启动与依赖注入/>
March 09, 2023
如果要说近几年NodeJS开发者中最流行和热门的MVC框架,那非NestJS莫属了。下图是2012年至2023年Github上各个知名NodeJS Web框架的Star数趋势: 我们可以直观得看出,从2018年以来,就异军突起,力压,和,仅用两年时间就稳居最受环境的NodeJS框架至今。 NestJS作为一个受Spring和Angular启发的框架,实现了非常优秀的依赖注入功能。那我们今天就从NestJS的启动过程开始,了解一下他是如何做好依赖注入这一件“小”事的吧。 本文基于NestJS…
<使用AWS Athena搭建基于S3的数据湖(1): 概念与架构/>
December 21, 2022
机器学习和大数据分析技术在过去十年内高速发展,到今天已经成为了现代化的服务与应用不可或缺的一部分。而搭建一套数据湖系统则是开始将机器学习与数据分析带到项目中的第一步。在这几篇文章里,我们将会学习到如何使用服务与文件存储搭建一套完整的数据湖解决方案。 1. AWS的数据湖 在AWS的这篇文章中,阐述了与的主要区别。简单地概括一下即: “数据仓库”一般指存储结构化业务数据的系统,数据的Schema在数据存储时就已经确定(),这种系统经常用来做批量的业务数据分析以及可视化。比较典型的例子就是AWS…
<关键信息提取网络SDMGR代码详解(4): 损失函数与模型评估/>
August 19, 2022
在前面的几篇文章中,我们结合代码介绍了关键信息提取(KIE)任务网络SDMGR(Spatial Dual-Modality Graph Reasoning for Key Information Extraction)的整个前向计算过程,包含了处理图片信息的主干网络U-Net,处理文字信息的LSTM,以及特征融合的图神经网络部分。今天就让我们继续看看SDMGR的损失函数以及模型评估部分吧。 1. 损失函数 损失函数部分的代码位于。我们先来看一下损失函数的前向计算: 相对而言,SDMGR…
<关键信息提取网络SDMGR代码详解(3): 循环神经网络与图神经网络/>
July 12, 2022
在上篇文章关键信息提取网络SDMGR代码详解(2): 数据处理与主干网络中我们结合代码介绍了PaddleOCR中用于关键信息提取(KIE)任务网络SDMGR(Spatial Dual-Modality Graph Reasoning for Key Information Extraction)的主干网络部分。今天我们了解对文字部分处理的循环神经网络LSTM与融合多模态特征后进行图推理的图神经网络模块。而这两个模块也是SDMGR网络中最重要也是最复杂的模块。 这两部分的代码都位于。…
<关键信息提取网络SDMGR代码详解(2): 数据处理与主干网络/>
July 06, 2022
在上篇文章关键信息提取网络SDMGR代码详解(1): 概览与应用中我们简单介绍了PaddleOCR中用于关键信息提取(KIE)任务网络SDMGR(Spatial Dual-Modality Graph Reasoning for Key Information Extraction)并且手动尝试使用预训练模型对WildReceipt数据集进行了推理。那这篇文章我们就从头开始对网络的代码实现逐步解读一下吧。…
<关键信息提取网络SDMGR代码详解(1): 概览与应用/>
June 27, 2022
在上篇文章Windows环境下利用WSL搭建GPU训练/推理PaddlePaddle神经网络环境中我们简单介绍了如何在Windows的WSL2环境中搭建PaddlePaddle的GPU训练/推理环境,那么这次就来结合代码一起来看看PaddleOCR中KIE模块: SDMGR网络的代码与如何推理/训练吧。 1. 什么是KIE任务与SDMGR网络 KIE(Key Infomation Extraction…
<Windows环境下利用WSL搭建GPU训练/推理PaddlePaddle神经网络环境/>
June 13, 2022
TL;DR PaddlePaddle是百度出品的深度学习框架。基于PaddlePaddle百度还推出了PaddleOCR,PaddleNLP,PaddleHub等实用的工具。作为深度学习框架,自然也在多个平台支持基于GPU的模型训练和推理,其中也包括Windows平台。如果你想使用Windows系统训练神经网络模型,而又想获得Linux的开发体验的话,Windows Subsystem for Linux ()显然是一个不错的选择。如今英伟达的官方显卡驱动官方支持了在WSL系统内部调用CUDA…
<Lima: Docker Desktop for Mac的平替?/>
January 27, 2022
在2021年8月31日,Docker官方发布了一条博客表明了Docker desktop即将进入订阅收费制模式,并给了一段缓冲期至到2022年1月31日。这也意味着从2022年2月1日开始,所有将Docker用于商业目的,公司规模大于250人或者年收大于一千万美元的公司必须缴纳订阅费用了。虽然个人,非盈利组织和教育机构并不会被收费,但除了Docker desktop之外,还有没有一个适用于Mac平台的容器解决方案以便于日常的开发工作呢? 得益于Linux内核对于Namespace与Cgroup…
<Zanzibar与Ory/Keto: 权限管理服务简介/>
May 07, 2021
用户的权限管理对每个项目来说都至关重要。不同的业务场景决定了不同的权限管理需求,不同的技术栈也有不同的解决方案:如果你在写一个Ruby On Rails应用,那你可能会选择cancan, 如果你正在使用K8S,那你很可能需要与K8S的RBAC系统打交道。那如果你面对一个非常复杂的业务,需要实现极为灵活的权限配置,并且同时对接多个服务怎么办呢?谷歌的一致性全球授权系统Zanzibar以及其开源实现Ory/Keto或许可以帮到你。 Zanzibar 简介 Google Zanzibar是谷歌201…
<从零搭建AWS网络(二): ELB与NAT Gateway/>
April 19, 2021
在上一篇文章中从零搭建AWS网络(一): VPC与Internet Gateway中,我们学习了如何从零开始搭建一套最简单的AWS网络并通过Internet Gateway来向公网提供服务。在文章的最后我留下了两个问题: 没有详细配置Security Group等安全措施,安全性无法得到保障 实例直接配置了公网ip地址,缺少安全性和可扩展性,占用宝贵的ip资源 在今天的文章里,我们就来通过添加ELB,NAT Gateway等设施来解决这些问题。…