• [迁移系列] 【TD语法迁移】MDIFF分析函数替换
    -- MDiff 移动汇总 1) Teradata语法: MDiff(colname,n,sort_list)    指基于预定的行数n计算一列的移动差分值;    若前面的行数小于n,则产生NULL值;    指根据sort_list字段列信息进行逐步差分;    n<4096;     2) 举例 SELECT salesdate, sales, MDiff(sales, 3, salesdate) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 替换等价SQL: SELECT salesdate, sales, sales-lag(sales,3) over(ORDER BY salesdate ASC) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 返回结果示例  salesdate| sales| sum  ----------+------+------ 2023-02-16| 1.00 | Null 2023-02-17| 2.00 | Null --没有间隔2行 2023-02-18| 3.00 | Null  2023-02-19| 4.00 | 3.00 --间隔2行的差值 2023-02-28| 5.00 | 3.00 2023-03-17| 6.00 | 3.00 --间隔2行的差值 
  • [迁移系列] 【TD语法迁移】MAVG分析函数替换
    -- MAvg 移动汇总 1) Teradata语法: MAvg(colname,n,sort_list)    指基于预定的行数n计算一列的移动平均值;    若前面的行数小于n,则使用前面所有行;    指根据sort_list字段列信息进行逐步平均;    n<4096;     2) 举例 SELECT salesdate, sales, MAvg(sales, 3, salesdate) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 替换等价SQL: SELECT salesdate, sales, avg(sales) over(ORDER BY salesdate ASC rows 2 preceding) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 返回结果示例  salesdate| sales| sum  ----------+------+------ 2023-02-16| 1.00 | 1.00 2023-02-17| 2.00 | 1.50 --前2行平均 2023-02-18| 3.00 | 2.00 --前3行平均 2023-02-19| 4.00 | 3.00 2023-02-28| 5.00 | 4.00 2023-03-17| 6.00 | 5.00 --前3行平均 
  • [迁移系列] 【TD语法迁移】MSUM分析函数替换
    MSum 移动汇总 、 移动求和1) Teradata语法: MSum(colname,n,sort_list)    指基于预定的行数n计算一列的移动汇总值;    若前面的行数小于n,则使用前面所有行;    指根据sort_list字段列信息进行逐步累加     2) 举例 SELECT salesdate, sales, msum(sales, 3, salesdate) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 替换等价SQL: SELECT salesdate, sales, SUM(sales) over(ORDER BY salesdate ASC rows 2 preceding) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 返回结果示例  salesdate| sales| sum  ----------+------+------ 2023-02-16| 1.10 | 1.10 2023-02-17| 1.20 | 2.30 --前2行求和 2023-02-18| 1.30 | 3.60 --前3行求和 2023-02-19| 1.40 | 3.90 2023-02-28| 1.50 | 4.20  2023-03-17| 1.10 | 4.00 --前3行求和 
  • [迁移系列] 【TD语法迁移】CSUM分析函数替换
    CSum 累计求和 1) Teradata语法: CSum(colname,sort_list)    指计算一列的连续累计值;    指根据sort_list字段列信息进行逐步累加;     2) 举例 2.1) 无group by场景 SELECT salesdate, sales, csum(sales, salesdate) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 替换等价SQL: SUM(sales) over(ORDER BY salesdate ASC)SELECT salesdate, sales, SUM(sales) over(ORDER BY salesdate ASC) FROM daily_sales WHERE salesdate BETWEEN 980101 AND 980301 AND itemid = 10; -- 返回结果示例  salesdate| sales| sum  ----------+------+------ 2023-02-16| 1.10 | 1.10 2023-02-17| 1.20 | 2.30 2023-02-18| 1.30 | 3.60 2023-02-19| 1.40 | 5.00 2023-02-28| 1.50 | 6.50 2023-03-17| 1.10 | 7.60 2.2) 有groupby场景 SELECT salesdate, sales, csum(sales, salesdate) FROM daily_sales ds, sys_calendar.calendar sc WHERE ds.salesdate = sc.calendar_date AND sc.year_of_calendar = 1998 AND sc.month_of_year in (1,2) AND ds.itemid = 10 GROUP BY sc.month_of_year; -- 替换等价SQL: SUM(sales) over(partition by sc.month_of_year ORDER BY salesdate ASC)SELECT salesdate, sales, SUM(sales) over(partition by sc.month_of_year ORDER BY salesdate ASC) FROM daily_sales ds, sys_calendar.calendar sc WHERE ds.salesdate = sc.calendar_date AND sc.year_of_calendar = 1998 AND sc.month_of_year in (1,2) AND ds.itemid = 10; -- 返回结果示例  salesdate| sales| sum  ----------+------+------ 2023-02-16| 1.10 | 1.10 2023-02-17| 1.20 | 2.30 2023-02-18| 1.30 | 3.60 2023-02-19| 1.40 | 5.00 2023-02-28| 1.50 | 6.50 2023-03-17| 1.10 | 1.10
  • [迁移系列] TD迁移之金融家算法
    GaussDB(DWS)暂不支持“四舍六入五成双”/"奇进偶舍"(金融家算法)建议暂采用函数进行替换--参数1:需要取小数点精度的数值;--参数2:指小数点后取多少位;CREATE OR REPLACE FUNCTION public.Banker_Rounding(num numeric,i integer)RETURNS numericLANGUAGE sqlNOT FENCED SHIPPABLEAS $$/*逻辑:四舍六入五成双,五后有数就进一,五后无数看五前,五前为偶应舍弃,五前为奇要进一*/select case when abs(num-round(num,i))*(10^(i+1))::numeric=5 thenround(num,i)-(right(round(num,i),1)%2)*0.1^ielseround(num,i)end;$$;Select Banker_Rounding(9.115,2), Banker_Rounding(9.125,2), Banker_Rounding(9.1250000000000001,2); --返回结果 9.12, 9.12, 9.13*注:主要修正了18位以上小数异常问题,显式强转(10^(i+1))::numeric
  • [调优经验] 记一次网络中MatMul溢出调试
    背景一个encoder-decoder结构的网络,主干网络里面有很多矩阵乘MatMul和LayerNorm,由于在Ascend平台上跑的,如果使用float32进float32出,性能会慢的难以接收,但是使用float16会训着训练连续溢出导致训练失败。排查策略加loss scale由于不确定溢出是上溢还是下溢,一般可以添加动态的loss scale来排查是哪种溢出情况:iterator = dataset.create_tuple_iterator() for i, data in enumerate(iterator): loss, overflow, scaling_sens = train_net(*data) print("step: {}, loss: {}, overflow:{}, scale:{}".format(i, loss, overflow, scaling_sens))train_net参考官网迁移指南-调试调优篇 包装训练网络和loss scale。注意需要使用动态的loss scale,默认scale值要大一点才好做判断。如果一直持续overflow,但是到scale值小到一定值就不overflow了,那之前应该是上溢,用小一点的loss scale就行;如果持续overflow,直至scale值到1还是会持续溢出,那不确定是上溢还是下溢,需要开溢出dump来继续排查了。溢出dumpMindSpore 异步dump有个dump溢出算子输入输出的功能,只需要将op_debug_mode设置成3就行,其他按需配置。按教程执行训练,整个过程会慢一点,并且需要dump目录留有足够的硬盘空间,当发生溢出时会dump该算子的输入和输出,可以直接用numpy打开看下输入数据是否合理,如果有不合理的数据的话,在代码里加措施规避,比如:Sqrt的输入是0,反向溢出,除法的除数是0等等。如果输入是合理的,那需要看下计算算子精度表达范围,float16表达范围:-65504~65504,超出这个范围也会有溢出,这时需要对计算输入加clip或者Norm操作缩小输入的范围。我这次遇到的情况就是数值超过float16能表达的上线了,接MatMul的Cast操作溢出。解决策略由于不想让网络变慢,保留了MatMul float16计算,增加了MatMul之前的LayerNorm的eps,从1e-5 -> 1e-3,保证MatMul输入不要过大,另外给MatMul的两个输入除一个系数,我这次是除了32,由于MatMul后面接的SoftMax,线性操作不影响其分布,所以可以这么做,这样修改完之后溢出情况基本解决。
  • [SQL] 【Oracle语法迁移】存储过程入参及过程中table%Rowtype语法迁移
    > Oracle原存储过程Procedure xxxLog ( p_row test1%ROWTYPE ) IsBegindelete from test1 awhere a.t_period = p_row.t_period and (a.t_code=p_row.t_code or p_row.t_code is null);insert into test1 values p_row;commit;end xxxLog;> 改写GaussDB(DWS)语法示例CREATE FUNCTION xxxLog ( p_row test1 ) AS $$Begindelete from test1 awhere a.t_period = p_row.t_period and (a.t_code=p_row.t_code or p_row.t_code is null);insert into test1 values (p_row.*);END;$$ LANGUAGE plpgsql;即:1、入参时 p_row test1%ROWTYPE 调整为 p_row test1,即可表示引用test1表的字段类型;2、插入全部数据时 values p_row 调整为 values (p_row.*),即表示当前行所有信息;3、其它对于ROWTYPE定义的用法一致。> 实验示例create table test1 ( a int,b int);create table test2 ( a int,b int);CREATE FUNCTION merge_fields(t_row public.test1) RETURNS text AS $$DECLARE t2_row public.test2%ROWTYPE;BEGIN select * INTO t2_row FROM public.test1 where a=t_row.a; delete from public.test1 where a=t_row.a; insert into public.test2 values (t2_row.*); return 'from:'||t_row.a||'-'||t_row.b||' to:'||t2_row.a||'-'||t2_row.b;END;$$ LANGUAGE plpgsql;insert into test1 values(444000,2);select merge_fields(t1.*) from test1 t1 WHERE a=444000;select * FROM public.test1 where a=444000;select * FROM public.test2 where a=444000;
  • [其他] pink galaxy
    醉后不知天在水,满船清梦压星河
  • [问题求助] DevKit 代码迁移工具实验无法正常使用,portadv web端无法正常访问
    我申请了远程实验室,按照申请的指引进行代码迁移实现。但是遇到了问题如下:远程服务器中部署的portadv服务虽然启动,端口 8084  也是通的。但是通过指引https://xxx.xx.xx.xx:8084 的地址访问,显示无法访问服务器。希望得到帮助解答问题
  • [API使用] MS 中有没有和 torch 中的 view 算子类似的 inplace 的算子
    MS 提供了 view 算子,但其似乎和 torch 中的 view 算子不太一样。torch 中的 view 算子是 inplace 的,view 操作后的 tensor 和原tensor 在底层仍是同一份数据。MS 中的 view 算子则会复制一份原tensor的数据,因此 view 操作后的 tensor 和原 tensor 就是两份不一样的数据了。那 MS 中有没有类似的 inplace 的 view 算子呢?
  • [技术干货] gpg使用
    gpg使用问题发现以下报错是在openeuler20.03系统下发现的在鲲鹏社区下载鲲鹏代码迁移工具下载完成后进行解压安装执行./install web安装web界面开始出现报错原来是因为我的gpg检查导致我的部分软件包无法成功下载当关闭了gpgcheck之后便可以正常安装了那么什么是gpgcheck呢?gpgcheck介绍gpgcheck是gpg签名是否开启的选项名称,1是开启,0是不开启,一般内部部署软件包下载可以关掉。gpg签名主要用来在Linux实现官方发布的包的签名机制,主要为了软件下载使用的安全。添加gpgcheck有效的防止了软件包被篡改的情况gpg使用gpg采用的是非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件。如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的私钥就可解密。也就是说,公钥是锁,私钥是钥匙。非对称加密方式很好地解决了传递信息的问题。查看gpg信息gpg --version查看gpg版本信息生成主密钥使用如下命令生成主密钥gpg --full-generate-key显示如下内容这一段是版权声明,选择自己使用的加密算法,默认选择第一个选项,表示加密和签名都使用RSA算法这里系统询问密钥长度 同样默认长度为2048 长度越长则越安全接着开始设定密钥的有效期:这里默认是没有期限的之后就需要提供个人的信息GnuPG needs to construct a user ID to identify your key. Real name: Email address: Comment: 姓名填入英语拼音,下面的地址填入电子邮箱comment这一项可以不用填写输入O就表示确定Q表示放弃这里可以通过N、C、E对名字和邮箱进行修改这里我们输入O进入到下一步稍后系统就会要求你做一些随机的举动,以生成一个随机数We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.稍后密钥就生成成功了密钥管理列出密钥gpg --list-keys第一行显示公钥文件名(pubring.kbx),第二行显示公钥特征(2048位,Hash字符串和生成时间),第三行显示"用户ID",第四行显示私钥特征。删除密钥gpg --delete-secret-keys [用户ID]删除用户私钥gpg --delete-keys [用户ID]删除用户公钥注意在删除公钥时必须要先删除对应的私钥部分才能成功过删除删除子密钥gpg --expert --edit-key [pud下方的字符]gpg --expert --edit-key D2673C470EDD2A1EE169781C86A5F36CA4FAD524 gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. sec rsa3072/86A5F36CA4FAD524 created: 2022-01-10 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa3072/87E977522ACB63C9 created: 2022-01-10 expires: never usage: E ssb rsa2048/6DC53EC22366279E created: 2022-01-10 expires: never usage: S [ultimate] (1). zhaoyl gpg> key 6DC53EC22366279E sec rsa3072/86A5F36CA4FAD524 created: 2022-01-10 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa3072/87E977522ACB63C9 created: 2022-01-10 expires: never usage: E ssb* rsa2048/6DC53EC22366279E created: 2022-01-10 expires: never usage: S [ultimate] (1). zhaoyl gpg> delkey 6DC53EC22366279E Do you really want to delete this key? (y/N) y sec rsa3072/86A5F36CA4FAD524 created: 2022-01-10 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa3072/87E977522ACB63C9 created: 2022-01-10 expires: never usage: E [ultimate] (1). zhaoyl gpg> save输出密钥公钥文件(.gnupg/pubring.kbx)以二进制形式储存,armor参数可以将其转换为ASCII码显示;gpg --output public-key.txt --export [用户ID]"用户ID"指定哪个用户的公钥,output参数指定输出文件名(public-key.txt)。 类似地,export-secret-keys参数可以转换私钥导入密钥gpg --import [密钥文件]公钥文件可以上公钥服务器上寻找gpg --keyserver keys.openpgp.org --search-keys [用户ID]参考文章gpg使用
  • [问题求助] 代码迁移工具(鲲鹏服务器安装)报错
    以下报错是在openeuer20.03系统出现的下载完成后进行解压进入到解压好的目录中去执行./install web安装web界面开始出现报错安装失败应该是我的yum源没有配置好,不知道上哪里找合适的yum源
  • [问题求助] 模型迁移pb2om
    运行结果如上这是日志
  • [问题求助] 鸿蒙手表开发中,使用JAVA UI的话,用什么组件实现安卓中那种在应用的上方向下拖动(或从下向上拖动)就可以拖出来一个菜单的效果?
    在安卓中是使用“androidx.wear.widget.drawer.WearableDrawerView”来实现,可是在鸿蒙中没有找到类似的组件,也没有任何这类的说明。是说鸿蒙的手表,不可能实现这样的显示方式吗?
  • [API使用] Pytorch中的torch.device该如何迁移到MindSpore中
    想把一个用PyTorch写的UNet网络转成用MindSpore写的,其中一个torch.device的API找不到MindSpore的映射,请问应该怎么改?torch写的代码如下:torch写的代码的运行结果如下:​尝试用ms.set_context(device_target="GPU\cpu\acsend"),但是运行结果输出为None.
总条数:44 到第
上滑加载中