首页 文章 精选 留言 我的

精选列表

搜索[数智赋能],共10000篇文章
优秀的个人博客,低调大师

DINOv3+MobileCLIP2高效协同,LiZAD轻量级零样本异常检测赋能工业智能制造,推理实测30ms以内,内存仅1.01 GB

摘要:在现代高通量工业生产线上,产品配置和视觉特征频繁变化,因此为每个新场景收集和标注数据变得不切实际。这种动态环境使得零样本异常检测特别适用,因为它能够在无需对特定目标样本进行训练的情况下实现缺陷检测。尽管近期的ZSAD方法显示出有前景的结果,但它们计算密集,不适合部署在资源受限的设备上。我们提出了LiZAD:一个专为边缘设备实时ZSAD设计的轻量级框架。所提出的方法将DINOv3密集且具有空间感知能力的视觉特征(对于精确的像素级定位至关重要)与MobileCLIP2的高计算效率文本嵌入相结合。这些特征随后通过低内存可训练的投影头映射到一个共享的潜在空间。与六个最先进的ZSAD模型相比,LiZAD实现了平均内存减少61.5%,参数减少74.6%,以及延迟加速3.02倍。尽管计算和内存成本大幅降低,我们的方法仍保持了有竞争力的异常检测性能,在VisA、BTAD、MPDD和MVTec-AD数据集上,相对于最佳最先进模型,平均P-AUROC仅下降了6.4%。最后,它已成功部署在NVIDIA Jetson NX和Jetson AGX边缘设备上,并在维罗纳大学工业计算机工程实验室的真实生产线上进行了测试。

优秀的个人博客,低调大师

解密数仓的SQL ON ANYWHERE技术

本文分享自华为云社区《GaussDB DWS的SQL ON ANYWHERE技术解密》,作者:tooooooooooomy。 1. 前言 适用版本:【8.1.1(及以上)】 查询分析是大数据要解决的核心问题之一,虽然大数据相关的处理引擎组件种类繁多,并提供了丰富的接口供用户使用,但相对传统数据库用户来说,SQL语言依然是使用最简单、最广泛和方便的一种接口。如果能在一个客户端中使用SQL语句操作不同的大数据组件,将极大提升使用各种大数据组件的效率。 2. 什么是SQL On Anywhere GaussDB(DWS)的SQL On Anywhere,主要指对大数据的文件系统和与其他异构数据库的访问和交互,构筑起统一的大数据计算平台。大数据文件系统主要包括HDFS和OBS,其他异构数据库主要包括Oracle、Spark和Other GaussDB(DWS)。 3. GaussDB(DWS)SQL On Anywhere的作用及其应用场景 通过SQL On Anywhere特性可以实现与其他大数据组件和数据库互联互通访问,可以直接同时处理本地和HDFS/OBS上的数据集,甚至其他异构数据库的数据,而无需导入导出数据,将其分析能力从本地存储扩展到数据湖中,扩大GaussDB DWS的大数据分析的应用场景;通过该特性可以帮助客户实现冷热数据分离,将使用频度更高的热数据存储在本地,而使用频度更低的冷数据存储在成本更低廉的共享存储HDFS或者DWS上,降低用户成本。 从应用场景来看,可以满足如下业务需求: 针对多数据源需要构建虚拟的统一数据仓库,实现多数据源联邦查询,跨数据仓库热数据和HDFS/OBS冷数据的复杂混合查询,需要提供一致的、熟悉的数据仓库操作体验。 满足低频的业务全数据的低成本低延迟即席查询。 4. GaussDB(DWS)SQL On Anywhere的实现方式 GaussDB(DWS)SQL On Anywhere针对大数据的文件系统的访问主要通过FDW或ELK机制(已停止演进)实现的,而跨数据库的访问主要通过EC+ODBC的方式实现的。 3.1 利用FDW访问HDFS/OBS数据 GaussDB(DWS)对存储在HDFS上的Hadoop或者OBS原生数据的访问,采用FDW(Foreign Data Wrapper)机制,也称外表机制。首先通过创建Foreign Data Server来定义对HDFS数据源或同构其他集群的连接信息;之后创建Foreign Table,用于在GaussDB A数据库内部系统表中,定义对应的HDFS数据源上Hadoop原生结构化数据表的结构或对应同构其他集群结构化数据表的结构。 例如读取hdfs上的数据,其流程如下: ​ 1)建立一个hdfs_server,其中hdfs_fdw为数据库中存在的foreign data wrapper。 --创建hdfs_server。 postgres=# CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS (address '10.146.187.231:8000,10.180.157.130:8000' , hdfscfgpath '/opt/hadoop_client/HDFS/hadoop/etc/hadoop', type 'HDFS' ) ; ​ 2)创建一个hdfs外表读取hdfs上的数据 CREATE FOREIGN TABLE region ( R_REGIONKEY INT4, R_NAME TEXT, R_COMMENT TEXT ) SERVER hdfs_server OPTIONS( FORMAT 'orc', FOLDERNAME '/user/hive/warehouse/mppdb.db/region_orc11_64stripe/' ) DISTRIBUTE BY roundrobin; ​ 3)查询HDFS外表,例如: select * from region limit 10; 目前外表支持与普通表进行关联查询,并支持多种文件存储格式,其支持的文件格式如下(不同版本能力可能存在差异,以官方文档为准): 3.2 通过ELK访问HDFS(已停止演进,不推荐) ELK的方式类似于HAWQ,它是通过建立表空间为HDFS表空间,直接将数据存储和访问HDFS文件系统,目前只支持访问HDFS文件系统,而不支持访问OBS上的数据。首先通过创建HDFS表空间,然后会创建一个HDFS表,在创建时指定表空间为HDFS表空间,最后对HDFS表的操作如同普通表的操作,可进行插入修改删除数据。 以GaussDB数据库数据推到HDFS中 ​ 1)在数据库中创建HDFS表空间 CREATE TABLESPACE hdfs_table RELATIVE LOCATION ‘tmp/hdtest’ With (filesystem=’hdfs’, address=’28.4.136.221:9000’, cfgpath=’/opt/Huawei/bigdata/mppdb/hdfs_conf/zhndnrop/omm@HADOOP.COM/’, storepath=’/tmp/test’); ​ 2)数据库中创建HDFS表 CREATE TABLE abc( zjxxlh char(20), nbbsh char(20), khwybh char(20), zjlx char(20) )WITH (orientation=orc) TABLESPACE tables_hdfs; ​ 3)向表中插入数据 insert into abc select * from region10; 3.3 基于EC+ODBC的跨集群访问数据 GaussDB(DWS)支持通过 EC(全称Extension Connector)+ODBC统一访问其它大数据组件——将SQL发给其它大数据组件并接收执行结果,实现跨集群访问数据。目前EC+ODBC为用户提供了三种功能: SQL on Oracle、SQL on Spark和SQL on other GaussDB,分别用于连接Oracle数据库、Spark集群和其他GaussDB集群。 EC+ODBC的基本工作原理是:用户首先构建Data Source对象(其中包含目标库的一些连接信息和字符编码方式),然后用户获取该Data Source的使用权限,最后通过标准ODBC API连接目标库,发送SQL语句并获取执行结果。 为了方便使用,EC+ODBC为用户提供了统一的连接函数exec_on_extension(text, text)。其中,第一个参数为Data Source名称,第二个参数为发送的SQL语句,例如: postgres=# SELECT * FROM exec_on_extension('ds_spark', 'select * from a;') AS (c1 int); 5. GaussDB(DWS) SQL On Anywhere的实现方式优缺点对比 点击关注,第一时间了解华为云新鲜技术~

优秀的个人博客,低调大师

数仓如何递归查询视图依赖

本文分享自华为云社区《GaussDB(DWS)如何递归查询视图依赖》,作者:半岛里有个小铁盒。 1. 前言 适用版本:【8.1.0(及以上)】 本文通过介绍with recursive递归查询的办法来实现查询视图的层级依赖关系 2. 实现简介 对于postgres生态来说,视图的依赖关系没有现成的查询方法,需要对系统表pg_depend及pg_rewrite编写复杂的组合查询才能得知,而对于Oracle和MySql,该需求都较易实现,分别查询USER_DEPENDENCIES和INFORMATION_SCHEMA.VIEWS即可轻易查出,因此在pg生态来说有必要编写一个直观的视图来查看各个视图与基表或与其他视图的层级依赖关系。本文通过with recursive递归查询的办法来实现视图的层级依赖关系查询。效果如下: 首先建立两个基表t1、t2,表结构随意,再建立一系列的视图进行层级关联,关联关系也随意。本文的建表及视图语句如下: create table t1 (a int, b int) distribute by hash(a); create table t2 (a int, b int) distribute by hash(a); create view v1 as select * from t1; create view v2 as select * from v1; create view v3 as select * from v2; create view v4 as select * from v3; create view v5 as select * from t2; create view v6 as select * from v5; create view v7 as select * from v6; create view v8 as select * from v2; 实际的局点中,用户的视图依赖关系肯定要比这复杂得多,本文仅讲解原理。对于上述的视图依赖关系,可以通过如下查询得出: SELECT c.ev_class::regclass::varchar AS objname, pc.oid::regclass::varchar AS refobjname, pc.relkind AS relkind FROM pg_depend a,pg_depend b,pg_class pc,pg_rewrite c WHERE a.refclassid=1259 AND a.classid=2618 AND b.deptype='i' AND a.objid=b.objid AND a.classid=b.classid AND a.refclassid=b.refclassid AND a.refobjid<>b.refobjid AND pc.oid=a.refobjid AND c.oid=b.objid AND (a.objid>=16384 or a.refobjid>=16384) GROUP BY c.ev_class,pc.oid,pc.relkind ORDER BY relkind; 其中倒数第二行的16384表示过滤掉系统对象,relkind表示上级依赖对象的类型,r说明依赖于基表,v表示依赖另一个视图。其查询结果如下: 可见这种查询并不直观,只能通过肉眼分析得出递归的依赖关系,对用户并不友好。莫急,先将上述查询保存为视图,例如起名为PUBLIC.gs_view_dependency。接下来我们来学习一下with recursive语法的使用方法,从pg官网可以get到的知识是,WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。WITH语句作为一个辅助语句依附于主语句,WITH语句和主语句都可以是SELECT,INSERT,UPDATE,DELETE中的任何一种语句。WITH语句还可以通过增加RECURSIVE修饰符来引入它自己,从而实现递归: WITH RECURSIVE语句包含了两个部分: (非递归部分)non-recursive term,即上图中的union all前面的部分 (递归部分)recursive term,即上图中union all后面的部分 执行步骤如下: 执行non-recursive term。(如果使用的是union而非union all,则需对结果去重)其结果作为recursive term中对result的引用,同时将这部分结果放入临时的working table中 重复执行如下步骤,直到working table为空:用working table的内容替换递归的自引用,执行recursive term,(如果使用union而非union all,去除重复数据),并用该结果(如果使用union而非union all,则是去重后的结果)替换working table 因此,照葫芦画瓢,我们可以先给这个CTE查询起个名字,例如: WITH RECURSIVE get_view_dependency AS ( ... ) 然后,我们可以把非递归部分写成: SELECT a.objname, a.refobjname, a.refobjname path FROM PUBLIC.gs_view_dependency a where a.relkind = 'r' 因为查找到类型为’r’的基表的时候,递归就应该结束了。并且我们需要将refobjname组装成一条path来实现依赖路径的直观表示。因为是递归,所以我们需要不止一次的调用PUBLIC.gs_view_dependency,因此我们给它起个别名a。而递归的条件显而易见,应该是用refobjname来与objname做内关联,因此我们可以写作: INNER JOIN get_view_dependency cte ON b.refobjname=cte.objname 其中cte就用来指代上一次的递归查询结果,而递归的退出条件就应该是最开始写的类型为’r’的情况。其中b就应该是递归部分每次调用的PUBLIC.gs_view_dependency。而我们除了要查询objname和refobjname外,更重要的是要组成一个path,而path每个节点最好通过一个’->'来直观表示,因此递归部分我们就可以写成: SELECT b.objname, b.refobjname, cte.path ||' -> '|| b.refobjname path FROM PUBLIC.gs_view_dependency b INNER JOIN get_view_dependency cte ON b.refobjname=cte.objname 因此,整个CTE递归查询便可以写成: WITH RECURSIVE get_view_dependency AS ( SELECT a.objname, a.refobjname, a.refobjname path FROM PUBLIC.gs_view_dependency a where a.relkind = 'r' UNION ALL SELECT b.objname, b.refobjname, cte.path ||' -> '|| b.refobjname path FROM PUBLIC.gs_view_dependency b INNER JOIN get_view_dependency cte ON b.refobjname=cte.objname ) SELECT * FROM get_view_dependency; 为了方便以后的使用,我们可以给它起个名字保存起来,例如CREATE VIEW PUBLIC.gs_view_table_dependency AS …。效果就是文章开头所示那样,便大功告成。 3. 总结 在数据库中,查询视图是一种非常有用的工具,它可以帮助我们更好地组织和管理数据。然而,查询视图的层级依赖关系可能会让人感到困惑。本文将介绍一种通过 with recursive 递归查询的办法来实现查询视图的层级依赖关系的方法,希望对你有所帮助。 点击关注,第一时间了解华为云新鲜技术~

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册