华为云用户手册

  • 数据库兼容性行为配置项behavior_compat_options设置不同 场景:add_months函数计算结果不一致。 database1: 1 2 3 4 5 SELECT add_months('2018-02-28',3) from dual; add_months --------------------- 2018-05-28 00:00:00 (1 row) database2: 1 2 3 4 5 SELECT add_months('2018-02-28',3) from dual; add_months --------------------- 2018-05-31 00:00:00 (1 row) 原因分析: 数据库兼容性配置项behavior_compat_options不同会导致部分行为不同,该参数选项可参考behavior_compat_options中的相关选项描述。 此场景中behavior_compat_options配置项中的end_month_calculate参数控制add_months函数计算逻辑配置项。设置end_month_calculate配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期比小,计算结果中的日期字段(Day字段)和result的月末日期保持一致。 解决方法: 需要将数据库中参数behavior_compat_options的兼容性配置项设置为一致。该参数类型为USERSET类型,可session级别设置或集群级修改。
  • 使用UN LOG GED表 场景: 使用unlogged表后,在集群重启后,关联查询结果集异常,查看unlogged表缺少部分数据。 原因分析: 如果设置max_query_retry_times为0,且在建表时指定UNLOGGED关键字,则创建的表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是非日志表在冲突、执行操作系统重启、强制重启、切断电源操作或异常关机后会被自动截断,会造成数据丢失的风险。非日志表中的内容也不会被复制到备服务器中。在非日志表中创建的索引也不会被自动记录。因此当集群发生异常重启(进程重启、节点故障、集群重启)时,会导致部分内存中的数据未及时落盘,造成部分数据丢失,从而导致结果集异常。 解决方法: unlogged表在集群异常情况下的安全性无法保证,一般不能作为业务表使用,更多的场景是作为临时表使用。当出现集群故障后,为了保证数据正常,需要重建unlogged表或将数据备份后重新导入数据库。
  • 自定义函数属性设置不合理 场景:自定义函数get_count()并调用该函数出现结果不一致场景。 1 2 3 4 5 6 7 8 9 10 11 CREATE FUNCTION get_count() returns int SHIPPABLE as $$ declare result int; begin result = (select count(*) from test); --test表是hash表 return result; end; $$ language plpgsql; 调用该函数。 1 2 3 4 5 6 7 8 9 10 11 SELECT get_count(); get_count ----------- 2106 (1 row) SELECT get_count() FROM t_src; get_count ----------- 1032 (1 row) 原因分析: 由于该函数指定了SHIPPABLE的函数属性,因此生成计划时该函数会下推到DN上执行,该函数下推到DN后,由于函数定义中的test表是hash表,因此每个DN上只有该表的一部分数据,所以select count(*) from test; 返回的结果不是test表全量数据的结果,而是每个DN上部分数据的结果,因此导致加上from表后函数返回预期发生变化。 解决方法: 以下两种方法任选其一即可(推荐第一种方法): 将函数改为不下推:ALTER FUNCTION get_count() not shippable; 将函数中用到的表改为复制表,这样每个DN上都是一份该表的全量数据,即使下推到DN执行,也能保证结果集符合预期。
  • 使用string_agg 场景:使用string_agg查询表employee,出现查询结果不一致。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 SELECT * FROM employee; empno | ename | job | mgr | hiredate | sal | comm | deptno -------+--------+---------+------+---------------------+-------+------+-------- 7654 | MARTIN | SALEMAN | 7698 | 2022-11-08 00:00:00 | 12000 | 1400 | 30 7566 | JONES | MANAGER | 7839 | 2022-11-08 00:00:00 | 32000 | 0 | 20 7499 | ALLEN | SALEMAN | 7698 | 2022-11-08 00:00:00 | 16000 | 300 | 30 (3 rows) SELECT count(*) FROM (select deptno, string_agg(ename, ',') from employee group by deptno) t1, (select deptno, string_agg(ename, ',') from employee group by deptno) t2 where t1.string_agg = t2.string_agg; count ------- 2 (1 row) SELECT count(*) FROM (select deptno, string_agg(ename, ',') from employee group by deptno) t1, (select deptno, string_agg(ename, ',') from employee group by deptno) t2 where t1.string_agg = t2.string_agg; count ------- 1 (1 row) 原因分析: String_agg函数的作用是将组内的数据合并成一行,但是如果某用户的用法是string_agg(ename, ',') ,结果集就是不稳定的,因为没有指定组合的顺序。例如,上述语句中,对于select deptno, string_agg(ename, ',') from employee group by deptno; 输出结果既可以是: 1 30 | ALLEN,MARTIN 也可能是: 1 30 |MARTIN,ALLEN 两个结果都是合理的,因此上述关联场景下,有可能出现t1这个subquery中的结果和t2这个subquery中的结果对于deptno=30时的输出结果不一致。 解决方法: String_agg中增加order by排序,保证按顺序拼接。 1 SELECT count(*) FROM (select deptno, string_agg(ename, ',' order by ename desc) from employee group by deptno) t1 ,(select deptno, string_agg(ename, ',' order by ename desc) from employee group by deptno) t2 where t1.string_agg = t2.string_agg;
  • 子查询limit 场景:子查询中使用limit,两次查询结果不一致。 1 2 3 4 5 6 7 8 9 10 11 SELECT * FROM (select a from test limit 1 ) order by 1; a --- 5 (1 row) SELECT * FROM (select a from test limit 1 ) order by 1; a --- 1 (1 row) 原因分析: 子查询中的limit会导致获取随机结果,从而最终查询结果为随机提取。 解决方法: 要保证最终查询结果的稳定,需避免在子查询中使用limit。
  • 窗口函数中使用排序后取部分结果 场景: 窗口函数row_number()中使用排序后查询表t3的c列,两次查询结果不同。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SELECT * FROM t3 order by 1,2,3; a | b | c ---+---+--- 1 | 2 | 1 1 | 2 | 2 1 | 2 | 3 (3 rows) SELECT c,rn FROM (select c,row_number() over(order by a,b) as rn from t3) where rn = 1; c | rn ---+---- 1 | 1 (1 row) SELECT c,rn FROM (select c,row_number() over(order by a,b) as rn from t3) where rn = 1; c | rn ---+---- 3 | 1 (1 row) 原因分析: 如上所示,执行同一条语句:select c,rn from (select c,row_number() over(order by a,b) as rn from t3) where rn = 1; 两次查询结果不同,因为在窗口函数的排序列a、b上存在重复值1、2且重复值在c列上的值不同,就会导致每次按照a,b列排序结果取第一条时,所取的数据是随机的,造成结果集不一致。 解决方法: 该场景需要将取值列c列也加到排序中,使排序结果获取的第一条数据固定。 1 2 3 4 5 SELECT c,rn FROM (select c,row_number() over(order by a,b,c) as rn from t3) where rn = 1; c | rn ---+---- 1 | 1 (1 row)
  • 子视图/子查询中使用排序 场景: 创建表test和视图v后,子查询中使用排序查询表test,出现查询结果不一致。 1 2 3 4 5 6 CREATE TABLE test(a serial ,b int); INSERT INTO test(b) VALUES(1); INSERT INTO test(b) SELECT b FROM test; … INSERT INTO test(b) SELECT b FROM test; CREATE VIEW v as SELECT * FROM test ORDER BY a; 问题SQL: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT * FROM v limit 1; a | b ---+--- 3 | 1 (1 row) SELECT * FROM (select * from test order by a) limit 10; a | b ----+--- 14 | 1 (1 row) SELECT * FROM test order by a limit 10; a | b ---+--- 1 | 1 (1 row) 原因分析: 对于子视图和子查询中order by是无效的。 解决方法: 不建议在子视图和子查询中使用order by,若要保证结果有序,需在最外层查询中使用order by。
  • 查询分区边界 1 2 3 4 5 6 7 8 9 SELECT relname, partstrategy, boundaries FROM pg_partition where parentid=(select parentid from pg_partition where relname='my_table'); relname | partstrategy | boundaries -------------+--------------+------------ my_table | r | my_table_p1 | r | {600} my_table_p2 | r | {800} my_table_p3 | r | {950} my_table_p4 | r | {1000} (5 rows)
  • 查询数据在各DN分布 1 2 3 4 5 6 7 8 9 10 SELECT table_skewness('my_table'); table_skewness ------------------------------------ ("dn_6007_6008 ",3,50.000%) ("dn_6009_6010 ",2,33.333%) ("dn_6003_6004 ",1,16.667%) ("dn_6001_6002 ",0,0.000%) ("dn_6005_6006 ",0,0.000%) ("dn_6011_6012 ",0,0.000%) (6 rows)
  • 查询某一有数据分布DN上分区P1所对应的cudesc和delta表名称 1 2 3 4 5 6 EXECUTE DIRECT ON (dn_6003_6004) 'select a.relname from pg_class a, pg_partition b where (a.oid=b.reldeltarelid or a.oid=b.relcudescrelid) and b.relname=''my_table_p1'''; relname ---------------------- pg_delta_part_60317 pg_cudesc_part_60317 (2 rows)
  • 场景一:返回结果集很大 以行存表的Seq Scan和Index Scan为例: Seq Scan:按照表的记录的排列顺序从头到尾依次检索扫描,每次扫描要取到所有的记录。这也是最简单最基础的扫表方式,扫描的代价比较大。 Index Scan:对于指定的查询,先扫描一遍索引,从索引中找到符合要求的记录的位置(指针),再定位到表中具体的Page去获取,即先走索引,再读表数据。 因此,根据两种扫描方式的特点可知,多数情况下,Index Scan要比Seq Scan快。但是如果获取的结果集占所有数据的比重很大时(超过70%),这时Index Scan因为要先扫描索引再读表数据反而不如直接全表扫描的速度快。
  • 列转行 使用union all,将各科目(math、physics和literature)整合为一列,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 SELECT * FROM ( SELECT name, 'math' AS subject, math AS score FROM students_info1 union all SELECT name, 'physics' AS subject, physics AS score FROM students_info1 union all SELECT name, 'literature' AS subject, literature AS score FROM students_info1 ) order by name; name | subject | score ------+------------+------- jack | math | 90 jack | physics | 95 jack | literature | 95 lily | math | 95 lily | physics | 80 lily | literature | 92 matu | math | 75 matu | physics | 90 matu | literature | 85 (9 rows)
  • 动态行转列 8.1.2及以上集群版本可使用GROUP_CONCAT生成列存语句。 1 2 3 4 5 6 7 8 9 10 SELECT group_concat(concat('sum(IF(subject = ''', subject, ''', score, 0)) AS "', name, '"'))FROM students_info; group_concat ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------ sum(IF(subject = 'literature', score, 0)) AS "jack",sum(IF(subject = 'literature', score, 0)) AS "lily",sum(IF(subject = 'literature', score, 0)) AS "matu",sum(IF(subject = 'math', score, 0)) AS "jack",sum(IF (subject = 'math', score, 0)) AS "lily",sum(IF(subject = 'math', score, 0)) AS "matu",sum(IF(subject = 'physics', score, 0)) AS "jack",sum(IF(subject = 'physics', score, 0)) AS "lily",sum(IF(subject = 'physics ', score, 0)) AS "matu" (1 row) 8.1.1及更低版本中可用LISTAGG生成列存语句。 1 2 3 4 5 6 7 8 SELECT listagg(concat('sum(case when subject = ''', subject, ''' then score else 0 end) AS "', subject, '"'),',') within GROUP(ORDER BY 1)FROM (select distinct subject from students_info); listagg ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- sum(case when subject = 'literature' then score else 0 end) AS "literature",sum(case when subject = 'physics' then score else 0 end) AS "physics",sum(case when subject = 'math' then score else 0 end) AS "math " (1 row) 再通过视图动态重建: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE OR REPLACE FUNCTION build_view() RETURNS VOID LANGUAGE plpgsql AS $$ DECLARE sql text; rec record; BEGIN sql := 'select LISTAGG( CONCAT( ''sum(case when subject = '''''', subject, '''''' then score else 0 end) AS "'', subject, ''"'' ) ,'','' ) within group(order by 1) from (select distinct subject from students_info);'; EXECUTE sql INTO rec; sql := 'drop view if exists get_score'; EXECUTE sql; sql := 'create view get_score as select name, ' || rec.LISTAGG || ' from students_info group by name'; EXECUTE sql; END$$; 执行重建: 1 CALL build_view(); 查询视图: 1 2 3 4 5 6 7 SELECT * FROM get_score; name | literature | physics | math ------+------------+---------+------ matu | 85 | 90 | 75 lily | 92 | 80 | 95 jack | 95 | 95 | 90 (3 rows)
  • 静态行转列 静态行转列需要手动指定每一列的列名,如果存在则取其对应值,否则将赋其默认值0。 1 2 3 4 5 6 7 8 9 10 SELECT name, sum(case when subject='math' then score else 0 end) as math, sum(case when subject='physics' then score else 0 end) as physics, sum(case when subject='literature' then score else 0 end) as literature FROM students_info GROUP BY name; name | math | physics | literature ------+------+---------+------------ matu | 75 | 90 | 85 lily | 95 | 80 | 92 jack | 90 | 95 | 95 (3 rows)
  • 示例表 创建行存表students_info并插入数据。 1 2 3 4 5 6 7 8 9 10 CREATE TABLE students_info(name varchar(20),subject varchar(100),score bigint) distribute by hash(name); INSERT INTO students_info VALUES('lily','math',95); INSERT INTO students_info VALUES('lily','physics',80); INSERT INTO students_info VALUES('lily','literature',92); INSERT INTO students_info VALUES('matu','math',75); INSERT INTO students_info VALUES('matu','physics',90); INSERT INTO students_info VALUES('matu','literature',85); INSERT INTO students_info VALUES('jack','math',90); INSERT INTO students_info VALUES('jack','physics',95); INSERT INTO students_info VALUES('jack','literature',95); 查看表students_info信息。 1 2 3 4 5 6 7 8 9 10 11 12 SELECT * FROM students_info; name | subject | score ------+------------+------- matu | math | 75 matu | physics | 90 matu | literature | 85 lily | math | 95 lily | physics | 80 lily | literature | 92 jack | math | 90 jack | physics | 95 jack | literature | 95 创建列存表students_info1并插入数据。 1 2 3 4 CREATE TABLE students_info1(name varchar(20), math bigint, physics bigint, literature bigint) with (orientation = column) distribute by hash(name); INSERT INTO students_info1 VALUES('lily',95,80,92); INSERT INTO students_info1 VALUES('matu',75,90,85); INSERT INTO students_info1 VALUES('jack',90,95,95); 查看表students_info1信息。 1 2 3 4 5 6 7 SELECT * FROM students_info1; name | math | physics | literature ------+------+---------+------------ matu | 75 | 90 | 85 lily | 95 | 80 | 92 jack | 90 | 95 | 95 (3 rows)
  • 场景介绍 以学生成绩为例: 老师会按照学科录入成绩,每科老师都会单独录入每个学生对应学科的成绩,而每位学生只关注自己各科的成绩。如果把老师录入数据作为原始表,那么学生查看自己的成绩就要用到行转列;如果让学生自己填写各科的成绩并汇总,然后老师去查自己学科所有学生的成绩,那就是列转行。 行转列与列转行的示意图如下: 图1 示意图 行转列 将多行数据转换成一行显示,或将一列数据转换成多列显示。 列转行 将一行数据转换成多行显示,或将多列数据转换成一列显示。
  • 为什么 GaussDB (DWS)使用一段时间后执行SQL很慢? 数据库在使用一段时间后,随着业务的增加使得表数据增加,或者对表数据经常进行增、删、改之后,引发数据膨胀和统计信息不准造成性能下降。 建议对于频繁增、删、改的表,定期执行vacuum full和analyze操作。操作步骤如下: 默认每30000条数据收集100条做统计信息,当数据量大的时候,发现sql时快时慢,一般是执行计划发生了变化,统计信息的需要调整采样率。set default_statistics_target可以提高采样率,对优化器生成最优计划有所帮助。 重新执行analyze。详细信息请参见ANALYZE | ANALYSE。 若用户想要知道是否是磁盘碎片的问题影响了数据库的性能,可以使用以下函数进行查询: SELECT * FROM pgxc_get_stat_dirty_tables(30,100000); 父主题: 数据库性能
  • 操作步骤 在AI原生应用引擎工作台的左侧导航栏选择“资产中心”。 在“资产中心”页面可依次展开平台预置的AI应用、技能、大模型、数据集、提示语模板页签,可执行如表1所示的操作。 表1 AI应用广场支持的操作 分类 支持的操作 说明 AI应用 快速筛选 选择“AI应用”页签,在左侧“筛选”区域,进行不同维度的快速筛选、查看和搜索。 查看应用详情 单击应用卡片上的应用名称,进入应用详情页面,可查看应用的基础信息、应用组成、接口信息、套件介绍、原理介绍等信息。 收藏应用 通过如下两种方法,将自己关注或后续计划使用的应用收藏后,可便捷的在创建及管理Agent中对应用进行运行调试等操作。 方法一:鼠标光标移至应用卡片上,单击卡片右上角(单击可取消收藏)。 方法二:在查看应用详情的页面,单击右上角(单击可取消收藏)。 体验应用 鼠标光标移至应用卡片上单击“体验”,进入“应用体验”页面。 在“应用体验”页面,进行以下相关参数和请求体配置。 选择应用部署:无需配置,默认为平台预置的应用部署。 选择应用:无需配置,默认为当前选择的应用。 选择接口API:在下拉列表选择调试应用的接口API。 请求体:输入应用接口中的请求体内容。示例如下: { "query": "请详细说明AppStage平台有哪些大模型", "file_id": [] } 在“应用体验”页面右侧“API调测”区域,单击查看调测结果。 说明: 对话框中输入API调试语句也可进行调测。 单击右上角可清空历史调试语句。 大模型 快速筛选 选择“大模型”页签,在左侧“筛选”区域,进行不同维度的快速筛选。 查看大模型详情 单击模型卡片,进入模型详情页面,查看模型信息(模型类型、来源、发布者、上架状态、更新时间等)和模型介绍等。 收藏大模型 通过如下两种方法,将自己关注或后续计划使用的模型收藏后,可便捷的在模型训练、模型部署时使用。 方法一:鼠标光标移至模型卡片上,单击卡片右上角(单击可取消收藏)。 方法二:在查看模型详情的页面,单击右上角(单击可取消收藏)。 体验大模型 鼠标移至大模型卡片并单击“体验”,进入模型调测页面。 部署大模型 鼠标移至大模型卡片并单击“部署”,进入“创建推理服务”页面,参见创建及管理模型服务将模型部署为在线服务,对在线服务进行预测和调用。 调优大模型 鼠标移至大模型卡片并单击“调优”,进入“创建微调任务”页面,参见创建模型微调流水线调整大型语言模型的参数以适应特定任务。 设置鉴权 第三方的大模型需要设置鉴权信息,鼠标移至第三方大模型卡片单击“设置鉴权”,弹出“设置鉴权信息”对话框,在对话框中可根据提示链接跳转至第三方模型官网获取相应API Key。 如果未设置API Key,在“设置鉴权信息”对话框输入API Key,单击“保存”。 如果已设置API Key,在“设置鉴权信息”对话框单击“移除”可清除已存在的API Key;鼠标移至模型卡片再次单击“设置鉴权”,在“设置鉴权信息”对话框重新输入API Key,单击“保存”即可。 数据集 快速筛选 选择“数据集”页签,在左侧“筛选”区域,进行不同维度的快速筛选、查看和搜索。 查看数据集详情 鼠标移至数据集卡片并单击数据集名称,进入“数据概况”页面,可查看数据预览、基础信息(数据集用途、格式、来源、创建时间等)、数据介绍(如数据结构、数据使用注意事项等)信息。 收藏数据集 通过如下两种方法,将自己关注或后续计划使用的数据集收藏后,可便捷的在模型训练、数据标注、创建知识库时使用。 方法一:鼠标光标移至数据集卡片上,单击卡片右上角(单击可取消收藏)。 方法二:在查看数据集详情的页面,单击右上角(单击可取消收藏)。 提示语模板 快速筛选 选择“提示语”页签,在左侧“筛选”区域,进行不同维度的快速筛选、查看和搜索。 查看提示语模板详情 鼠标移至提示语卡片并单击模板名称,进入提示语详情页面,查看提示语的基础信息(适用行业、适用任务类型、更新时间等)及提示语信息(适用模型服务、提示语内容、变量)。 收藏提示语模板 通过如下两种方法,将自己关注或后续计划使用的提示语收藏后,可便捷的在创建应用、调测模型中快速使用。 方法一:鼠标光标移至提示语卡片上,单击卡片右上角(单击可取消收藏)。 方法二:在查看提示语详情的页面,单击右上角(单击可取消收藏)。 测试提示语 单击提示语卡片上的“去测试”,进入“模型调测”页面,在调测文本对话类型模型时,可引用提示语模板预览效果,具体请参见引用已有提示语模板。 复制内容 鼠标移至提示语卡片并单击“复制内容”,可一键复制提示语模板的全部内容。
  • 修改个人华为账号的密码 适用于修改个人华为账号(包括购买AppStage的租户开通者的个人华为账号、通过邀请成员加入组织的个人华为账号)的密码。为保障账号安全,建议定期更新密码。 鼠标光标移至右上角登录的用户名,弹出“账号信息”页面。 在“账号信息”页面,单击“修改密码”,进入华为账号的“帐号与安全”页面。 在“安全中心”区域单击“重置帐号密码”右侧“重置”。 在“重置帐号密码”页面,输入旧密码、新密码及再次输入新密码,单击“确定”。 密码需满足以下要求: 至少8个字符。 至少包含字母和数字,不能包含空格。 密码强度:勿使用其他账号的密码。 如果忘记旧密码,可通过如下操作找回密码: 单击“忘记旧密码”。 在“找回密码”页面,输入华为账号(注册账号的手机号或邮件地址)。 输入图形验证码,单击“下一步”。 单击“获取验证码”,输入相应的邮件验证码或手机验证码,再单击“下一步”。 设置新密码并确认新密码,单击“确定”。 密码需满足以下要求: 至少8个字符。 至少包含字母和数字,不能包含空格。 密码强度:勿使用其他账号的密码。 如果您有其他设备使用此账号,设置新密码后需重新登录,以确保正常使用华为服务。
  • 修改成员账号密码(通过OrgID创建的成员账号) 适用于通过添加成员加入组织的成员账号修改密码。为保障账号安全,建议定期更新密码。 在开发中心工作台,鼠标光标移至右上角登录的用户名,弹出“账号信息”页面。 在“账号信息”页面,单击“修改密码”。 为确认本人操作需进行身份验证,可选择手机短信验证码方式或邮件验证码方式。 如果该账号已同时绑定手机号码和邮箱,则可使用手机短信验证码方式或邮件验证码两种方式。 如果该账号仅绑定手机号码或邮箱其中一个,则相应的只需使用手机验证码方式或邮政验证码一种方式。 手机短信验证码验证方式的操作如下: 单击“获取验证码”。 输入手机上收到的短信验证码,单击“确定”。 邮件验证码验证方式的操作如下: 单击“选择其他验证方式”。 勾选使用邮箱的方式,单击“下一步”。 单击“获取验证码”。 输入邮箱收到的邮件验证码,单击“确定”。 在“重置帐号密码”页面,输入旧密码、新密码及再次输入新密码,单击“确定”。 密码需满足以下要求: 至少8个字符。 至少包含字母和数字,不能包含空格。 密码强度:勿使用其他账号的密码。 如果忘记旧密码,可通过如下操作找回密码: 单击“忘记旧密码”。 在“找回密码”页面,输入华为账号(注册账号的手机号或邮件地址)。 输入图形验证码,单击“下一步”。 单击“获取验证码”,输入相应的邮件验证码或手机验证码,再单击“下一步”。 设置新密码并确认新密码,单击“确定”。 密码需满足以下要求: 至少8个字符。 至少包含字母和数字,不能包含空格。 密码强度:勿使用其他账号的密码。 如果您有其他设备使用此账号,设置新密码后需重新登录,以确保正常使用华为服务。
  • 操作须知 该功能仅对组织管理员可见。 组织管理员可将任一用户添加为开发中心用户,已添加的用户不可重复添加。 添加至开发中心“用户管理”中的用户称为开发中心用户,未添加至开发中心“用户管理”中的用户称为非开发中心用户。 开发中心的“项目经理”、“开发人员”、“测试人员”、“浏览者”角色仅开发中心用户可申请。 仅开发中心用户才能被添加至团队空间成员。 组织管理将用户从开发中心用户中删除时,会同步删除该用户在开发中心中所有的角色权限。 非组织管理员且非开发中心用户访问开发中心时,不可查看团队列表,不可关注团队,需要在开发中心概览页根据页面提示进行申请,申请时可选择任一组织管理员审批(申请电子流将生成待办推送至业务控制台由审批人进行审批)。 开发中心用户总人数只能小于等于总配额,超过用户总配额可联系AppStage开通者在AppStage管理控制台购买开发人员增量包来扩展开发中心用户数。
  • 操作步骤 登录AppStage管理控制台。 在AppStage管理控制台“总览”页顶部根据提示单击“去配置”或在左侧导航栏选择“开发中心”。 在开发中心详情页“使用向导”区域的“关联CodeArts”节点,单击“去关联”,如图1所示。 图1 关联CodeArts 在“关联CodeArts”面板关联CodeArts服务,存在以下情况: 所选区域已开通CodeArts:在“关联CodeArts”对话框中“关联的CodeArts区域”下拉列表中选择需要关联的区域,如图2所示,单击“关联”,在“关联CodeArts”对话框对将要关联的区域进行二次确认,单击“确定”。 图2 所选区域已开通CodeArts 当所选区域CodeArts被冻结后,可能导致开发中心部分功能不可使用。 所选区域未开通CodeArts(包括未订购或退订CodeArts场景):单击“前往开通”前往开通CodeArts的链接完成开通,再返回“关联CodeArts”对话框单击“CodeArts开通情况”右侧刷新CodeArts开通情况显示“已开通”,以未订购CodeArts场景如图3所示(退订CodeArts的场景与此相似),单击“关联”,在“关联CodeArts”对话框对将要关联的区域进行二次确认,单击“确定”。 图3 所选区域未开通CodeArts 所选区域的CodeArts已被冻结:需要先解冻CodeArts(可参考资源冻结)后,再返回“关联CodeArts”对话框单击“CodeArts开通情况”右侧刷新CodeArts开通情况显示“已开通”,单击“关联”,在“关联CodeArts”对话框对将要关联的区域进行二次确认,单击“确定”。
  • 编排Agent的流程 图1 编排Agent的流程 表1 编排Agent的流程详解 序号 流程环节 说明 1 创建数据集 创建微调数据集/创建知识库数据集 用户根据需要创建微调数据集、知识库数据集,分别用于模型微调、创建知识库。 标注数据 用户可以将数据集中的某些元素进行标记或分类,以便模型可以更好地理解和使用这些数据。 2 创建提示语 选择平台预置提示语或自定义提示语 用户根据需要选择平台预置的提示语模板或自定义提示语模板,可在创建Agent、调测模型中快速引用。 优化提示语 针对提示语进行结构、排版、内容等维度的优化和改进,将大模型的输入限定在一个特定的范围中,进而更好地控制模型的输出。 3 创建模型服务 模型需要部署成功后才可正式提供模型推理服务,平台支持将微调后的模型、系统预置的模型以及通过自建模型服务接入的模型发布为模型服务。调测模型、应用调用均需先部署模型(即部署模型服务)。 4 创建知识库 自定义创建并管理知识库,创建的知识库启用后可在创建Agent时引用。 5 编排Agent 创建及发布Agent 将准备好的模型服务、提示语、知识库等编排Agent应用,以及将应用程序和相关的组件发布,使其能够正常运行。
  • 调优大模型的流程 图2 调优大模型的流程 表2 调优大模型的流程详解 序号 流程环节 说明 1 创建数据集 创建微调数据集 用户根据需要创建微调数据集,用于模型微调。 标注数据 用户可以将数据集中的某些元素进行标记或分类,以便模型可以更好地理解和使用这些数据。 2 创建提示语 选择平台预置提示语或自定义提示语 用户根据需要选择平台预置的提示语模板或自定义提示语模板,可在创建Agent、调测模型中快速引用。 优化提示语 针对提示语进行结构、排版、内容等维度的优化和改进,将大模型的输入限定在一个特定的范围中,进而更好地控制模型的输出。 3 调优大模型 创建模型微调流水线 通过选择合适的数据集,调整参数,训练平台预置的模型以提高模型效果,可通过训练过程/结果指标初步判断训练效果。 创建模型服务 训练好的模型需要部署后才可提供推理服务(在线测试模型、应用调用均需先部署模型)。 调测模型 通过调测模型,检验模型的准确性、可靠性及反应效果,发现模型中存在的问题和局限性。
  • 工作空间 在AI原生应用引擎工作台左侧导航栏选择“工作空间” ,进入工作空间页面,可获得系统中各资源数据概览及产品的相关快速指引。 工作空间页面分为数据统计、选择应用创建类型、操作指引三个区域,如图1所示,各区域的功能说明如表1所述。 图1 工作空间 表1 AI工作空间页面说明 序号 区域 说明 1 创建Agent快捷入口 在该区域单击“创建Agent”可快速进入一站式创建Agent页面,详细介绍请参见一站式创建Agent。 2 平台资产 在“平台资产”区域,可查看下述信息数据: Agent数据 模型数据 数据集数据 提示语数据 技能数据 知识库数据 3 我的空间 在“我的空间”区域,可查看下述信息数据: Agent:当前账号创建的、收藏的、订阅的Agent个数 模型:当前账号部署的、收藏的、接入的模型个数 数据集:当前账号创建的微调数据集个数、知识库数据集个数 提示语:当前账号创建的、收藏的提示语个数 技能:当前账号创建的、收藏的、订阅的技能个数 知识库:当前账号创建的知识库个数 4 操作指引 在“操作指引”区域,可概览各使用场景的流程指引: 零代码应用开发:详细流程说明请参见零代码应用开发。 全码化应用开发:详细流程说明请参见全码化应用开发。 模型调用与优化:详细流程说明请参见创建模型微调流水线、调测模型、创建及管理模型服务。 提示语优化工程:详细流程说明请参见创建提示语、优化提示语。 知识库构建:详细流程说明请参见创建及管理知识库。 5 为您推荐 为您推荐的热门Agent、热门模型。 单击“换一批”可查看更多推荐的热门Agent、热门模型。 6 我的任务 分别展示我创建的模型微调任务、数据标注任务状态统计,包括如下: 进行中、已完成、异常状态的模型微调任务数 进行中、已完成状态的标注数据数 父主题: AI原生应用引擎
  • AI原生应用引擎应用场景 面向不同的企业需求,AI原生应用引擎提供不同的功能服务。 例如,智能对话、以文搜图、NL2SQL等通用应用场景,可在AI原生应用引擎体验各大模型推理云服务,并通过可视化画布流程编排进行业务集成。 细分领域如金融、电网场景,需要对推理结果进行定制调整,则可在AI原生应用引擎使用模型在线微调训练功能,快速生成行业场景定制模型服务,满足用户特定需求。 对话沟通 针对客户服务和销售团队,通过对话沟通,快速理解并响应客户的需求,以提供高效的解决方案或产品信息。这包括了使用CRM系统进行客户管理、利用即时通讯工具与客户进行互动、进行销售拓展,以及提供定制化的服务方案,旨在提高客户满意度和忠诚度。 内容创作 可应用于市场营销和品牌传播部门。根据目标受众的偏好和需求,创作吸引人的营销文案、视频剧本和故事内容,包括市场研究、内容策划、以及利用各种数字媒体平台发布和推广内容。帮助企业增强品牌影响力,提高用户参与度和品牌忠诚度。 分析控制 针对数据分析和业务智能部门,利用先进的数据分析工具和算法,从海量数据中提取有价值的信息,帮助企业做出基于数据的决策。包括客户行为分析、市场趋势预测、以及优化业务流程等。帮助企业提高运营效率,降低成本,同时为客户提供更加个性化的服务。 父主题: AI原生应用引擎简介
  • AI原生应用引擎基本概念 使用之前,请先了解表1中相关概念,从而更好的使用AI原生应用引擎。 表1 基本概念说明 基本概念 说明 Agent Agent指具备自主智能的实体,具有一定的智能和自主性,可以自主地发现问题、设定目标、构思策略、执行任务等。 技能 技能是在自动化和人工智能领域的应用程序。能够自动地执行一些任务或提供一些服务,如客户服务、数据分析、信息传输、智能助手、自动回复等。 智能编排 智能编排是一种基于人工智能技术的自动化流程编排工具,通过分析业务流程,自动构建流程模型,并根据预设规则自动化执行流程,从而提高工作效率和准确性。 ClickHouse ClickHouse是一个开源的分布式列式数据库管理系统,主要用于在线分析处理(OLAP)场景。它具有高性能、高可靠性、高可扩展性等特点,可以处理海量数据,支持复杂的查询和数据分析操作。ClickHouse支持SQL语言,同时还提供了许多扩展功能,如数据压缩、数据分区、分布式查询等。它被广泛应用于互联网企业、金融、电商、游戏等领域。 节点数 节点数是指在一个特定的环境中,例如测试或生产环境,需要部署的节点数量。 镜像名称 用于标识环境配置的镜像。 镜像版本 用于区分一个镜像库中不同的镜像文件所使用的标签。 资源规格 指根据不同的环境类型和用途,对服务器的 CPU 、内存、数据盘等硬件资源进行合理分配和管理的过程。例如,开发环境的资源规格可能会比生产环境的小,而性能测试环境的资源规格可能会更大,以满足其对硬件资源的需求。 容器端口 容器端口是指在容器内部运行的应用程序所监听的网络端口。容器是一种虚拟化技术,它可以将应用程序及其依赖项打包在一起,形成一个独立运行的环境。在容器内部,应用程序需要监听一个或多个网络端口,以便与外部系统进行通信。 服务端口 服务端口是计算机网络中用于标识应用程序的端口号,它是一个16位的整数,范围从0到65535。在一个计算机上,可以同时运行多个应用程序,每个应用程序都需要一个唯一的端口号来标识自己。当一个应用程序需要接受网络请求时,它会监听自己的端口号,等待来自网络的连接请求。当连接请求到达时,应用程序会接受连接并开始处理请求。 推理单元 推理单元是指计算机系统中的一个模块,用于进行逻辑推理和推断。其主要功能是根据已知的事实和规则,推导出新的结论或答案。 推理单元常常被用于解决问题、推理、诊断、规划等任务。它可以帮助计算机系统自动推理出一些结论,从而实现智能化的决策和行为。推理单元通常包括知识表示、推理机和推理策略三个部分。知识表示用于将事实和规则以一定的形式表示出来,推理机则用于实现推理过程,推理策略则用于指导推理机的搜索和推理方向。 大语言模型 大语言模型是一种能够理解和生成人类语言的人工智能模型。这些模型通常使用大量的数据进行训练,以便它们能够识别语言中的模式和规律。大语言模型的应用范围非常广泛,包括 自然语言处理 机器翻译 语音识别 、智能问答等领域。 向量化模型 向量化模型是将文本数据转换为数值向量的过程。常用于将文本转换为机器可以处理的形式,以便进行各种任务,如文本分类、情感分析、机器翻译等。 多模态模型 多模态模型是指能够处理多种类型数据(如文本、图像、音频等)的机器学习模型。这些模型可以将不同类型的数据进行融合和联合分析,从而实现更全面的理解和更准确的预测。多模态模型的应用非常广泛,例如在图像识别中,可以将图像和文本信息结合起来,提高图像识别的准确性;在自然语言处理中,可以将文本和语音信息结合起来,提高文本语义理解的准确性。 LoRA Low-Rank Adaptation,低秩适应,是一种将预训练模型权重冻结,并将可训练的秩分解矩阵注入Transformer架构每一层的技术,该技术可减少下游任务的可训练参数数量。 Loss曲线 Loss曲线是一个用于评估模型训练效果的工具,它展示了模型在训练过程中产生的损失(Loss)随时间的变化情况。通过观察Loss曲线,可以了解模型的收敛效果、参数的敏感性和有效性。 父主题: AI原生应用引擎简介
  • 开发中心工作台介绍 开发中心工作台首页界面区分开发中心用户和非开发中心用户有所不同: 开发中心用户进入工作台如图1所示。 图1 开发中心工作台首页(开发中心用户视角) 一站式开发功能地图 在图1的“一站式开发功能地图”区域,根据工作场景,指引了应用开发的主流是操作,同时鼠标光标移至各流程环节图标上时,可查看该环节相关的岗位人员角色及其参与的活动。 常用功能 常用功能模块的快捷入口,单击功能名称可快捷跳转到相应的功能操作界面。 开发插件及示例代码 在该区域可总览常用的开发插件,单击“更多”,可快捷跳转至开发插件库页面,获取更多开发插件及示例代码。 我的团队 在图1的“我的团队”区域,可快捷管理团队信息,相关操作详见表1。 表1 我的团队相关操作 操作 说明 创建团队 单击“我的团队”区域右上角“创建团队”。 在“创建团队”页面,设置团队相关参数,包括团队名称、团队归属部门、关联服务、团队LOGO、团队简介。 单击“创建”。 在“我的团队”区域可查看到创建的团队的卡片。 关注团队 单击“我的团队”区域右上角“关注团队”。 在“关注团队”页面的“团队列表”中,单击需要添加的团队名称右侧的“关注”。 在“我的团队”列表中可查看到此新关注的团队卡片。 设置默认团队 选中“我的团队”区域内团队卡片左下角的“设为默认”,可将此团队设置为默认团队,此默认团队将置顶显示在开发中心团队空间中的团队首位。 移出团队 单击“我的团队”区域内团队卡片右下角的“移出”,可将此团队从我的团队列表移出,我的团队列表中将不显示此团队。移出后通过右上角“添加团队”可再次添加到我的团队。 非开发中心用户进入工作台如图2所示,请先根据界面提示单击“用户管理”添加开发中心的访问权限,具体操作请参见管理AppStage开发中心用户。 图2 开发中心工作台首页(非开发中心用户视角)
  • AI原生应用引擎功能介绍 AI原生应用引擎的主要功能如表1所示。 表1 AI原生应用引擎功能介绍 主要功能 功能简介 Agent管理 提供自定义创建、开发、发布、取消发布AI应用,还可以对自己收藏的AI应用进行运行调试等。用户可以将自己在AI资产中心关注或后续计划使用的AI应用、技能(工具)进行收藏或取消收藏。 AI应用体验 将平台预置的应用和用户自己创建的应用进行API调测,帮助开发人员发现并解决应用接口上的问题和错误。 数据管理 平台纳管了用户自定义的和平台预置的数据集,用户使用这些数据集进行模型训练、知识库构建等,快速完成平台使用并验证模型训练效果。 模型管理 用户可以将平台预置模型通过创建模型微调流水线生成微调的模型,还可以创建模型服务及调测模型,检验模型的准确性、可靠性及反应效果。 提示语管理 用户可以将自己创建的、收藏的及平台预置的提示语模板进行优化和改进。 知识库管理 用户可以自定义创建并管理知识库,用于组织和管理大量的数据信息,且创建的知识库启用后可在创建及管理Agent时引用。 父主题: AI原生应用引擎简介
  • AppStage开发中心功能介绍 开发中心的主要功能如表1所示。 表1 开发中心功能介绍 主要功能 功能简介 团队管理 团队和成员管理,团队所属部门、关联服务等信息配置以及成员的新增、修改和删除。 版本管理 需求和业务规划,制定版本计划,跟踪交付任务,跟踪发布上线。 需求管理 需求管理流程覆盖需求的收集、分析、评审、排序、分发、实现、验证、确认的全过程。 代码管理 提供分布式代码管理和协同开发能力,包括代码托管、代码检查、代码审核、代码追溯、持续集成等功能。 流水线管理 将产品需求纳入流水线进行需求设计、开发、验证,最终通过软件包将实现的用户需求交付给下游。 缺陷管理 从缺陷的发现和提出,到分析定位、实施修复,再到测试和验收,最终导向缺陷的闭环。 部署发布管理 版本发布后自动推送、自动部署,实现从开发到发布、部署、运行全生命周期可追溯。 效能管理 提供从需求、缺陷、代码、构建、测试、部署、发布到运营等研发各阶段作业数据的分析洞察能力。 父主题: AppStage开发中心简介
共100000条