• [技术干货] IDEA中SVN项目不同颜色含义
    绿色,已经加入控制暂未提交红色,未加入版本控制蓝色,加入,已提交,有改动白色,加入,已提交,无改动灰色:版本控制已忽略文件
  • [优秀实践] 鲲鹏众智-Java性能分析工具IntelliJ插件实现
    很荣幸参加《鲲鹏Java性能分析工具IntelliJ插件实现》项目开发工作的,我们项目主要是做Inellij插件开发实现性能分析工具功能。由于插件开发的特殊性,常常需要和一些命令行打交道,下面记录一次通过Java代码打开Windows证书安装窗口安装证书cer文件。思路如下:第一步:下载证书,保存到本地    通过cer文件下载接口将文件保存到本地,记录文件的保存位置第二步:通过代码在IDEA的Terminal命令窗口输入命令打开证书安装窗口    // 将项目对象,ToolWindow的id传入,获取控件对象    ToolWindow toolWindow = ToolWindowManager.getInstance(e.getProject()).getToolWindow("Terminal");        if (toolWindow != null) {            // 无论当前状态为关闭/打开,进行强制打开ToolWindow            toolWindow.show(new Runnable() {                @Override                public void run() {                Process p  =  Runtime.getRuntime().exec("rundll32.exe cryptext.dll,CryptExtAddCER "+ path);                }            });        }    }第三步:提醒用户重启IDEA,使证书生效    Messages.showMessageDialog("安装证书", "安装证书后请重启IDEA,证书才能生效", Messages.getInformationIcon());
  • [优秀实践] 鲲鹏Java性能分析工具IntelliJ插件实现
            IDEA是目前Java开发人员最受欢迎的工具开发之一,很重要的原因是其提供了很多插件,这让开发人员降低了开发难度,能更有效更高质量的开发代码,我也很荣幸成为IDEA插件开发的一员。        我所在的是鲲鹏Java性能分析工具IntelliJ这个开源项目,刚开始参与进来的时候感觉这个项目很难,因为对Java Swing这块的技术了解的很少。长时间下来感觉挺有意思的,以下我是我对Swing这块的总结:       Swing图形组件是java中一套图形界面类,主要分为两类:容器类和元素类。容器类表示可以放置其他的元素组件或者容器组件,JFrame 窗体组件,JPanel 面板容器,JMeauBar 菜单栏;元素类表示不可以放其他的组件,比如:JButton 按钮组件,JLable 文本标签组件,JTextField 文本输入框组件,JPasswordField 密码输入框组件,JCheckBox  复选框组件等。主要就是在合理布局下各种组件之间的搭配,其中还有很多重要的事件,如:ActionEvents,ChangeEvents,ItemEvents等,来响应用户的鼠标点击等行为。      每当感觉自己已经掌握了Swing这门技术的时候,但是在开发过程中处处有惊喜,总会碰到这样或那样的难题,因此还是得通过不断的学习来提高自己,这样才能更好、更有效更轻松的为这个团队服务。加油!
  • [其他] 开发环境亮点之一:远程开发 - 支持本地IDE远程访问Notebook
    新版Notebook提供了远程开发功能,通过开启SSH连接,用户本地IDE可以远程连接到ModelArts的Notebook开发环境中,调试和运行代码。对于使用本地IDE的开发者,由于本地资源限制,运行和调试环境大多使用团队公共搭建的CPU或GPU服务器,并且是多人共用,这带来一定的环境搭建和维护成本。而ModelArts的Notebook的优势是即开即用,它预先装好了不同的AI引擎,并且提供了非常多的可选规格,用户可以独占一个容器环境,不受其他人的干扰。只需简单配置,用户即可通过本地IDE连接到该环境进行运行和调试。图1 本地IDE远程访问Notebook开发环境ModelArts的Notebook可以视作是本地PC的延伸,均视作本地开发环境,其读取数据、训练、保存文件等操作与常规的本地训练一致。对于习惯使用本地IDE的开发者,使用远程开发方式,不影响用户的编码习惯,并且可以方便快捷的使用云上的Notebook开发环境。本地IDE当前支持VSCode、PyCharm、SSH工具。还有专门的插件PyCharm Toolkit和VSCode Toolkit,更方便将云上资源作为本地的一个扩展。
  • [技术干货] 推广一个自己写的工具:npustat
    # `npustat` 链接:[https://github.com/wmc1992/npustat](https://github.com/wmc1992/npustat) 一个能够简洁的显示华为atlas设备状态的命令行工具; 之前使用GPU时习惯了使用工具 [`gpustat`](https://github.com/wookayin/gpustat) 查看GPU状态,使用华为的Atlas设备之后发现并没有类似的工具,于是仿照 [`gpustat`](https://github.com/wookayin/gpustat) 自己写了一个; 显示效果如下图: 主要解决命令 `npu-smi info` 的两个缺点: * 显示的信息总是特别长,笔记本单屏显示不下; * `watch` 下,同一芯片每次展示不在屏幕的同一位置,观察该芯片的变化较困难; ## 依赖说明 python版本要求:`python>=3.6`; 基础软件方面依赖说明: 华为Atlas设备目前有两种方式可以获取加速卡的状态信息:`ascend-dmi -i` 和 `npu-smi info`,这两者的区别为: * 命令 `ascend-dmi -i`: * 优点: * 查询结果为json格式,易于解析,不会出错; * 查询结果中包含实时功率信息; * 缺点: * 速度较慢,每次查询耗时约2~3秒; * 需要安装了 `toolbox` 工具包并正确配置了环境变量; * 命令 `npu-smi info`: * 优点: * 查询速度快,每次查询小于1秒; * 只要正确安装了驱动即可,不需要额外安装其他包; * 缺点: * 查询结果中不包含实时功率信息; * 查询结果无法以json格式返回,解析容易出错,遇到错误时欢迎反馈; 默认使用命令 `ascend-dmi -i` 做查询,可以使用参数 `--use-npu-smi` 修改为使用命令 `npu-smi info` 做查询; 目前仅在配备了4张 `Atlas 300I-3000` 推理卡的 Atlas 500 服务器上进行过测试;所以在其他设备上难免会有问题,欢迎反馈问题;有任何优化建议也欢迎反馈; > 注:若要安装 `toolbox` 需要注意,华为的 `toolbox` 工具包相关的版本体系出现过多次变迁: > > * 在`CANN`的`v5.0.1`及以前版本,`toolbox` 工具包归属到`CANN`中,可在`CANN`的软件下载链接中进行下载; > * 在`CANN`的`v5.0.2`及以后的版本中不再包含`toolbox` 工具包,而是迁移到了`mindx`中,需要到`mindx`的软件下载链接中进行下载; ## 安装说明 从 [PyPI](https://pypi.org/project/npustat/) 进行安装: ``` pip install npustat ``` ## 使用说明 使用如下命令单次获取当前atlas设备信息: ``` npustat ``` 使用如下命令动态刷新当前atlas设备信息,默认每2秒刷新一次: ``` npustat --watch ``` 可选参数如下: ``` usage: cli.py [-h] [--json] [-i [INTERVAL]] [--no-header] [--no-title] [--use-npu-smi] [--show-power] [--compact] [--debug] [-v] optional arguments: -h, --help show this help message and exit --json 将所有结果输出为JSON格式; -i [INTERVAL], --interval [INTERVAL], --watch [INTERVAL] 动态刷新模式;INTERVAL为刷新间隔,单位:秒;默认每2秒刷新一次; --no-header 是否隐藏 header 信息;header 信息包含机器名称、当前时间、版本号;默认展示 header 信息,配置该参数后 header 信息不再展示; --no-title 是否隐藏 title 信息;title 信息为对当前设备状态值各字段的说明;默认展示 title 信息,配置该参数后 title 信息不再展示; --use-npu-smi 使用命令"npu-smi info"获取当前设备状态值;注意该命令无法获取到加速卡的实时功率信息; --show-power 是否展示加速卡的功率信息,默认为展示;配置了参数 "--use-npu-smi" 之后该参数无效; --compact 是否采用紧凑模式展示信息,默认为不采用;紧凑模式下会去掉空白行及其他无意义的行,适用于加速卡较多,显示器较小,屏幕显示不下的情况; --debug Debug模式时允许在程序出错的情况下打印更多的调试信息; -v, --version show program's version number and exit ``` #### 常规模式与紧凑模式对比 | `npustat --watch` | `npustat --watch --compact` | | :-: | :-: | | ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20222/26/1645813462069430589.png) | ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20222/26/1645813472887499101.png) | #### 另外: 比较遗憾的是,目前我没有在任何华为的官方文档中找到获取每个设备上运行了哪些进程的功能,在昇腾论坛的询问结果也是如此:[【Atlas 300I 推理卡】怎样查看有哪些进程正在上面运行? ](https://bbs.huaweicloud.com/forum/thread-173510-1-1.html) 所以本项目也不具有显示每个设备上运行了哪些进程的功能;如有人知道如何获取每个atlas上运行了哪些进程,还请告知; ## 显示内容说明 ``` machine_name Mon Dec 20 22:38:59 2021 ascend-dmi version: 2.0.3 ======================================================== [加速卡ID], 加速卡类型, 功率 [芯片ID] [DeviceID] Health, 芯片名称 | 温度, AICore, 内存 ======================================================== [1], Atlas 300I-3000, 16.30 W [0] [1] OK, Ascend 310 | 51°C, 0 %, 2621 MB / 8192 MB ``` * header:第1行为header,可以使用参数 `--no-header` 不展示该信息;展示的信息从左到右依次为机器名称、当前时间、软件 `ascend-dmi/npu-smi` 的版本; * title:第2~5行为title,可以使用参数 `--no-title` 不展示该信息;title是对后面展示的信息的各字段的说明; * `[1], Atlas 300I-3000, 16.30 W`:每个加速卡的信息 * `[1]`:加速卡ID; * `Atlas 300I-3000`:加速卡类型; * `16.30 W`: 加速卡实时功率; * `[0] [1] OK, Ascend310| 51°C, 0%,2621MB/8192MB`:每个芯片的信息 * `[0]`:芯片ID; * `[1]`:DeviceID; * `OK`:芯片健康状态; * `Ascend 310`:芯片名称; * `51°C`:温度; * `0 %`:AICore; * `2621 MB / 8192 MB`:内存;
  • [技术干货] Eclipse跌落神坛,逐渐被Visual Studio Code等新兴IDE占据市场[转载]
    今日热文:原文链接:https://blog.csdn.net/qq_43529978/article/details/122415668你觉得说的对吗?俗话说,工欲善其事,必先利其器,一名好的开发者,必然要有一套好的开发工具,这样才能打造出最好的产品给用户。世界上的IDE种类繁多,要论那个IDE好用,可能有人会选择老牌的Visual Studio 或是Eclipse;也有人会选择使用者人数一路飙升的Intellij;也有人更偏爱Google发布的Android Studio。每位开发者都会按照自己的需求及爱好对IDE做出不同的选择。其中,对于老牌IDE Eclipse来说,众多开发者真的是又爱又恨。曾几何时,在当初那个IDE稀少又昂贵的时期,Eclipse给开发者带来了福音。作为一款免费且开源,速度相对更快,又有Google支持,在各种教科书中备受推崇的IDE,真的是想不流行都难。但在此之后各种IDE百花齐放,Eclipse的各种弊端也逐渐显现,慢慢开始走下神坛。Eclipse的优势Eclipse最初只是一个开源的框架平台,主要是作为Java语言的开发平台。它由IBM公司开发,其目的是为了替代商业软件Visual Age for Java,成为下一代开发环境。Eclipse在2001年被IBM公司贡献给开源社区,之后Eclipse联盟成立为现在的Eclipse基金会,Eclipse自此由其管理。作为一个开源框架,Eclipse拥有很高的灵活性,它可以通过众多插件来获取不同的功能与编程语言支持。也就意味着,开发者可以根据自己的需求,在Eclipse源代码的基础上开发插件,理论上Eclipse可以无限拓展,利用插件成为任何语言的开发工具,也可以通过新插件扩展现有插件的功能。现如今Eclipse就已经拥有插件支持其成为C++、Python、PHP等主流语言的开发工具。也有不少软件开发商以Eclipse为基础框架开发自己的IDE。这些也正是Eclipse所具有的优势。弊端明显,逐渐被取代但相比Eclipse的优势来说,它所拥有的弊端更加明显,其实在2012年Eclipse 发布代号为Luna的4.2版本之前,Eclipse还没有这么多让人诟病的地方,也还没有开始走下坡路。自从4.2版本上线后,各种弊端逐渐显现,但开发者们对此也只能忍着,毕竟Eclipse是为数不多的免费IDE中比较好用的一个,随着Intellij社区版本,免费的Android Studio以及微软的Visual Studio Code的发布,这些新兴IDE疯狂的占据Eclipse的市场份额。使Eclipse神坛上的地位彻底被摧毁。下图是来自PYPL PopularitY of Programming Language index 的TOP 10 IDE排名,该网站的IDE指数是通过分析集成开发环境(IDE)在Google上被搜索下载的频率而创建的。IDE被搜索的次数越多,就认为该IDE越受欢迎。该指数原始数据来源于Google。图片来源PYPL PopularitY of Programming Language index图片来源PYPL PopularitY of Programming Language index从以上数据我们可以看到自2011年1月至2022年1月,Eclipse的搜索下载频率大幅度降低,从51.54%降低至14.05%,这说明人们对于Eclipse的关注度在飞速降低。而相反的Visual Studio Code自从2015年发布以来搜索率飞速上涨。Visual Studio 也再缓慢稳步上升。相比其他的主流IDE,Eclipse的运行占用了更多的内存空间,由于Eclipse的众多插件的存在,每次运行都会占据大量的设备运行内存,这就会导致配置稍微差点的设备在运行Eclipse的时候非常卡。除此之外Eclipse的运行速度相比较其他新兴的IDE也更加缓慢。Eclipse P2的项目的目的是为了让插件的升级更加简单。插件作为Eclipse赖以生存的重要组成部分。Eclipse P2项目可说是非常重要。然而,它最终却让插件升级变得复杂。由于这个原因它最主要的功能安装Eclipse插件,也不像以前那么好用了。在安装插件的时候,这样的对话框随处可见。在著名的计算机新闻网站Hacker News上就有人在为Eclipse的衰落感到悲哀,但是下面的评论却基本没有对此的惋惜,反而是在表示Eclipse的结局本就该如此,毕竟相比优势来说,它的缺陷真的太多了。其实Eclipse的衰落对各种开发人员来说并不算是好事,毕竟没有了Eclipse的竞争,其他的IDE也不会像以前那样为了超越它,去努力的创新了。希望Eclipse基金会能改变现如今Eclipse的弊端,重新走上神坛。参考链接:https://news.ycombinator.com/item?id=29867360
  • [行业资讯] IntelliJ IDEA 2021.3.1 发布,改进远程开发
    据Jetbrains官博显示显示,IntelliJ IDEA发布了2021.3.1版本,为减轻和降低未知的不可信来源对打开项目的相关风险,在IntelliJ IDEA 2020.3.3版本中引入了可信项目概念。在最新的v2021.3.1中,官方更改了Trusted Project对话框的行为和实现。该版本带来了一些重要修复,例如修复了对话框在macOS Big Sur错误窗口中的问题。
  • [其他] 配置本地IDE(VSCode ToolKit连接)
    ModelArts提供了一个VSCode插件工具,协助用户完成SSH远程连接Notebook。前提条件VSCode的下载地址: https://code.visualstudio.com/updates/v1_57VSCode版本要求:当前VSCode最新的版本1.58.2和VSCode最新的remote-ssh插件匹配有问题,建议用户使用VSCode 1.57.1。后续建议用户使用VSCode最新版本。用户本地PC或服务器的操作系统中建议先安装Python环境,创建一个Notebook实例,并开启远程SSH开发,配置远程访问IP白名单.Notebook实例状态处于“运行中”或“停止”状态都可以,如果Notebook实例是停止状态,VSCode插件会先启动实例再去连接。准备好密钥对。密钥对在用户第一次创建时,自动下载,之后使用相同的密钥时不会再有下载界面(用户一定要保存好),或者每次都使用新的密钥对。Step1 下载VSCode插件VSCode的插件工具包VSCode-ToolKit集成在ModelArts管理控制台中,请先下载并安装VSCode插件工具包,下载链接。Step2 安装VSCode插件在本地的VSCode开发环境中,如图所示,选择本地的VSCode插件并单击“安装”。图1 安装VSCode插件安装过程预计1~2分钟,如图2所示,请耐心等待。图2 安装过程安装完成后,系统右下角提示安装完成,导航左侧出现ModelArts图标和SSH远程连接图标,表示VSCode插件安装完成。图3 安装完成提示图4 安装完成Step3 登录VSCode插件在本地的VSCode开发环境中,单击ModelArts图标,单击“User Settings”,配置用户登录信息。图5 登录插件输入如下用户登录信息,单击“登录”。Name:自定义用户名,仅用于VSCode页面展示,不与任何华为云用户关联。AK:在华为云“帐号中心 > 我的凭证 > 访问密钥”中创建访问密钥,获取AK。SK:在华为云“帐号中心 > 我的凭证 > 访问密钥”中创建访问密钥,获取SK。选择站点:例如:北京四。此处的站点必须和远程连接的Notebook在同一个站点,否则会导致连接失败。也可以切换登录方式,采用如图所示方式输入用户信息后,Ctrl+S保存。图6 配置用户登录信息登录成功后显示Notebook实例列表。图7 登录成功Step4 连接Notebook实例在本地的VSCode开发环境中,右键单击实例名称,单击“Connect to Instance”,启动并连接Notebook实例。或者单击实例名称,在VSCode开发环境中显示Notebook实例详情页,单击“连接”,系统自动启动该Notebook实例并进行远程连接。图8 查看Notebook实例详情页第一次连接Notebook时,系统右下角会提示需要先配置密钥文件。根据系统提示单击“确定”。图9 配置密钥文件选择本地密钥pem文件(建议放在用户家目录下),单击“确定”后,插件自动连接远端Notebook实例。首次连接大约耗时1~2分钟,取决于本地的网络情况。VSCode环境左下角显示类似下图即为连接成功。图10 连接成功Step5 上传本地代码到云端开发环境在VSCode界面,单击“File > OpenFolder”打开云端路径。图11 Open Floder选择要打开的路径,单击“OK”。图12 选择文件路径此时,会在IDE左侧出现该开发环境下的目录结构,把想要上传的代码及其他文件直接拖拽至对应得文件夹内即完成本地代码上传至云端。Step6 远程调试代码在VSCode中打开要执行的代码文件,在执行代码之前需要选择合适的Python版本路径,单击下方默认的Python版本路径,此时在上方会出现该远程环境上所有的python版本,选择自己需要的版本即可。图13 选择Python版本对于打开的代码文件,单击run按钮,即可执行,可以在下方的Terminal中看到代码输出信息。如果要对代码进行debug调试,需要单击左侧“Run > Run and Debug”。选择当前打开的默认的python代码文件进行调试。对当前代码进行打断点,即在代码左侧进行单击,就会出现小红点。此时,即可按照正常的代码调试步骤对代码调试,在界面左边会显示debug信息,代码上方有相应的调试步骤。相关操作卸载VSCode插件操作如图所示。图14 卸载VSCode插件
  • [其他] ModelArts本地IDE
    ModelArts支持通过本地IDE环境远程连接到Notebook中,开发基于Pytorch、Tensorflow和MindSpore引擎的AI模型。创建Notebook实例在ModelArts控制台中创建一个Notebook开发环境实例,选择要使用的AI框架,并开启SSH远程开发功能。配置本地IDE远程连接Notebook在用户的PC端配置本地IDE环境,远程连接到ModelArts的开发环境中。支持通过PyCharm和VSCode 2类本地IDE连接云上Notebook。PyCharm和VSCode可以使用插件自动化配置,也可以手工配置。上传数据和代码至开发环境中,进行代码调试。代码直接拷贝至本地IDE中即可,本地IDE中会自动同步至云上开发环境。小于500MB数据量直接拷贝至本地IDE中即可。大于500MB数据量请先上传到OBS中,从OBS上传到默认存储EFS或云硬盘EVS。在本地IDE中编码和调试在本地IDE中编写代码,并调试运行。将调试好的训练脚本和用于训练的数据集上传至OBS目录。提交训练作业。提交训练作业有如下2种方式:在本地IDE中提交训练作业(当前仅支持提交到旧版训练作业)可以基于PyCharm ToolKit直接提交训练作业,具体参考使用PyCharm ToolKit提交训练作业。也可以通过调用ModelArts提供的SDK,创建训练作业,上云训练,调用SDK创建训练作业的操作请参见调用SDK创建训练作业。在ModelArts的Console控制台页面中提交训练作业,具体参考创建训练作业。
  • [问题求助] altas 200dk支不支持AScend -DMI,Benmark
    【功能模块】altas200dk 【操作步骤&问题 1我尝试在altas 200dk使用Ascend-dmi,好的首先我先尝试  固件版本:c75-驱动:1.0.8-candnn 10.1,根据文档Atlas 200 DKV100R020C10环境部署指南,只让我安装了pyacl,然后要用到AScend-dmi,他跟我说这是toolbox自带的,然后跳转到这个地址https://support.huaweicloud.com/instg-cli-cann/atlascli_03_0023.html。 然后我是rc模式嘛,肯定就是运行环境(推理),好的,我按照运行环境推理安装了toolbox和nnrt(几经波折:我普通用户HwHiAiUser安装toolbox会漏了aicpu,后面得root补充安装,好嘛报错了见日志1,怎么改也改不过来,后来放弃了直接全部root用户了),然后安装结束倒是没啥问题,但我现在ascend-dmi试一下看能用不,报错了(ascend-dmi: symbol lookup error: /home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so: undefined symbol: _ZN6Msprof6Engine4InitERKSsPKNS0_10EngineIntfE。)然后我ldd -r了一下,具体信息见日志2,查看了了一下以来的库都在,然后我就去看了一下,ASend-dmi环境适配信息,好像没有alats200dk,然后我问头头,是不是搞错了啊,altas200dkrc不能用ascend-dmi和benmark啊,他说这altas 200dk,核心是ascend 310,型号是 3000,跟500只能小站一个核心,咋不能用,别糊涂了,然后我就开始了第二轮安装 2、这次我索性直接安装最新的cadnn 5.0.2alpha5,对应,固件c78,驱动1.0.11,然后下载的时候我发现咋没有toolbox,看了一下这个[altas 200dk -1.0.11](https://support.huaweicloud.com/environment-deployment-Atlas200DK1011/atlased_04_0016.html) 哦哦,原来集成了toolbox,不过功能简介怎么没包含nnrt,不管了继续安装,按照什么的指导我bash *.sh提示我很多文件夹不存在,也创建不了,安安静静的结束之后我的Ascend文件夹没有任何变化,我在root下执行了几次还是一样,后来想了想之前都是./*.run --install ,不如试试呗,万一有用呢,还真有点用至少创建了aclib和pyacl这些,我想了下再执行了一下bash update_200dk.sh,可以了,至少没报什么错了,具体见日志3,只是这中间创建的nnrt文件夹怎么被删除了,Ascend-dmi我记得之前就放在这路径下面,我find了以下,还是没找到,执行asend-dmi没有这个命令,我也不知道路径在哪里,看了一下各个驱动版本下的altas200dk安装都没有涉及到asend-dmi,开始怀疑是不是有asend-dmi,希望大伙能给个确切答案。 【日志信息1】 >HwHiAiUser@davinci-mini:~/Ascend/AICPU/Tuscany/common$ sudo ./Ascend310-aicpu_kernels-1.75.0.1.220.run --full [sudo] password for HwHiAiUser: Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing ASCEND310 AICPU_KERNELS RUN PACKAGE 100% WARNING: base version was destroyed or not exist. Start time: 2021-10-29 06:09:21 LogFile: /var/log/ascend_seclog/ascend_install.log OperationLogFile: /var/log/ascend_seclog/operation.log /var/davinci/driver/version.info version meet requirement Old run package will be removed, and new run package will be installed The old install path of aicpu_kernels: /var/davinci/opp error:not find upgrade-tool. Run package install failed, please retry after check your device and reboot! 【日志信息2】 >HwHiAiUser@davinci-mini:~/Ascend$ ldd -r /home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so linux-vdso.so.1 (0x0000fffeffffc000) libc_sec.so => /usr/lib64/libc_sec.so (0x0000fffeffe82000) libascend_hal.so => /usr/lib64/libascend_hal.so (0x0000fffeff80b000) libslog.so => /usr/lib64/libslog.so (0x0000fffeff7e7000) libmsprof.so => /usr/lib64/libmsprof.so (0x0000fffeff395000) libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000fffeff369000) libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000fffeff354000) libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000fffeff1c0000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000fffeff107000) libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000fffeff0e3000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000fffefef89000) /lib/ld-linux-aarch64.so.1 (0x0000fffefffd1000) libmmpa.so => /usr/lib64/libmmpa.so (0x0000fffefef6d000) libdevmmap.so => /usr/lib64/libdevmmap.so (0x0000fffefef52000) librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000fffefef3b000) undefined symbol: _ZN6Msprof6Engine4InitERKSsPKNS0_10EngineIntfE (/home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so) undefined symbol: _ZN6Msprof6Engine6UnInitERKSs (/home/HwHiAiUser/Ascend/nnrt/latest/acllib/lib64/libruntime.so) 【日志信息3】 >root@davinci-mini:/home/HwHiAiUser/Ascend# ./update_200dk.sh start update Creating directory /home/HwHiAiUser/Ascend/nnrt Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing ASCEND_RUN_PACKAGE 100% AICPU_FLAG is 0 /home/HwHiAiUser/Ascend/nnrt/run_package/Ascend310-aicpu_kernels_minirc-1.78.t30.0.b300.run [INFO] start upgrade Acllib Verifying archive integrity... 100% All good. Uncompressing ASCEND acllib RUN PACKAGE 100% [Acllib] [2021-11-02 09:28:12] [INFO]: Start time:2021-11-02 09:28:12 [Acllib] [2021-11-02 09:28:12] [INFO]: LogFile:/home/HwHiAiUser/var/log/ascend_seclog/ascend_install.log [Acllib] [2021-11-02 09:28:12] [INFO]: InputParams:--upgrade [Acllib] [2021-11-02 09:28:12] [INFO]: OperationLogFile:/home/HwHiAiUser/var/log/ascend_seclog/operation.log [Acllib] [2021-11-02 09:28:12] [INFO]: Check version matched! [Acllib] [2021-11-02 09:28:12] [INFO]: base version is 1.78.T30.0.B300. [Acllib] [2021-11-02 09:28:12] [INFO]: uninstall /home/HwHiAiUser/Ascend run [Acllib] [2021-11-02 09:28:19] [INFO]: step into run_acllib_uninstall.sh ...... [Acllib] [2021-11-02 09:28:19] [INFO]: uninstall targetdir /home/HwHiAiUser/Ascend, type run. [Acllib] [2021-11-02 09:28:19] [INFO]: Acllib package uninstall success! Uninstallation takes effect immediately. [Acllib] [2021-11-02 09:28:19] [INFO]: upgrade /home/HwHiAiUser/Ascend run [Acllib] [2021-11-02 09:28:19] [INFO]: step into run_acllib_upgrade.sh ...... [Acllib] [2021-11-02 09:28:19] [INFO]: upgrade targetdir /home/HwHiAiUser/Ascend, type run. [Acllib] [2021-11-02 09:28:19] [INFO]: acllib upgrade upgradePercentage:10% [Acllib] [2021-11-02 09:28:43] [INFO]: acllib upgrade upgradePercentage:100% [Acllib] [2021-11-02 09:28:43] [INFO]: Upgrade base version success. [Acllib] [2021-11-02 09:28:43] [INFO]: Acllib package upgrade success! The new version takes effect immediately. Please make sure that - LD_LIBRARY_PATH includes /home/HwHiAiUser/Ascend/acllib/lib64 [Acllib] [2021-11-02 09:28:43] [INFO]: End time:2021-11-02 09:28:43 [INFO] start upgrade pyacl Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompressing pyACL 100% [pyACL] [2021-11-02 09:28:44] [INFO] upgrade start [pyACL] [2021-11-02 09:28:44] [WARNING] this package version installed now, it will be reinstalled [pyACL] [2021-11-02 09:28:44] [INFO] Ascend-pyACL-20.2.rc1 upgrade success cat: /var/davinci/aicpu_kernels/version.info: No such file or directory [INFO] Aicpu is not installed, start the installation Verifying archive integrity... 100% All good. Uncompressing ASCEND aicpu_kernels RUN PACKAGE 100% [Aicpu] [2021-11-02 09:28:51] [INFO]: Start time: 2021-11-02 09:28:51 [Aicpu] [2021-11-02 09:29:09] [INFO]: LogFile: /home/HwHiAiUser/var/log/ascend_seclog/ascend_install.log [Aicpu] [2021-11-02 09:29:09] [INFO]: OperationLogFile: /home/HwHiAiUser/var/log/ascend_seclog/operation.log [Aicpu] [2021-11-02 09:29:10] [INFO]: version meet requirement [Aicpu] [2021-11-02 09:29:10] [INFO]: Aicpu_kernels package has been installed on the path /home/HwHiAiUser/Ascend, the version is 1.78.T30.0.B300, and the version of this package is 1.78.T30.0.B300, do you want to continue? [y/n] [Aicpu] [2021-11-02 09:29:10] [WARNING]: Old run package will be removed, and new run package will be installed [Aicpu] [2021-11-02 09:29:10] [INFO]: The old install path of aicpu_kernels: /home/HwHiAiUser/Ascend [Aicpu] [2021-11-02 09:29:10] [INFO]: upgradePercentage: 20% [Aicpu] [2021-11-02 09:29:11] [INFO]: upgradePercentage: 50% [Aicpu] [2021-11-02 09:29:11] [INFO]: upgradePercentage: 100% [Aicpu] [2021-11-02 09:29:11] [INFO]: Aicpu_kernels package install success! The new version takes effect immediately. [Aicpu] [2021-11-02 09:29:11] [INFO]: Using requirements: when aicpu module install finished or before you run the aicpu module, execute the command [ export ASCEND_AICPU_PATH=/home/HwHiAiUser/Ascend ] to set the environment path. [Aicpu] [2021-11-02 09:29:11] [INFO]: End time: 2021-11-02 09:29:11 If the upgrade is successful, switch to the running user and run the source ~/.bashrc command to make the environment variables take effect.
  • [问题求助] IntelliJ IDEA Ultimate软件支持鲲鹏环境吗
    IntelliJ IDEA Ultimate软件支持鲲鹏环境吗
  • [技术干货] 智能OCR图像文字识别
    体验通过DevStar服务的“智能OCR图像文字识别”模板一站式生成应用代码并部署到函数工作流FunctionGraph,实现识别指定图片中的文字信息并显示在页面上。您将学到什么您将学会如何通过DevStar实现一站式快速开发基于Serverless的智能识别图片文字信息应用,并在此基础上基于华为云EI产品开放能力进行对应用的自定义扩展,体验云上开发的乐趣您需要什么硬件要求PC电脑软件要求Chrome浏览器需要的知识点熟悉常规电脑操作常识具备基本的软件开发能力环境准备注册华为云账号、实名认证如果您已拥有华为账号且已通过实名认证,可直接体验。若您还没有通过实名认证的账号,请注册华为账号,然后完成实名认证(推荐使用“扫码认证”方式,即时完成)。参考如何实名认证和如何扫码认证。应用开发及部署使用Chrome浏览器,登录DevStar,在搜索栏输入“智能OCR图像文字识别”关键字进行搜索,在卡片上点击“开发应用”首次使用可以开通服务“同意授权”并继续创建应用在应用创建页面根据页面提示完成项目、应用名信息输入注:如果没有任何DevCloud项目,可点击“创建项目”新建一个项目注:在创建项目过程中如提示“该企业租户服务处于关闭状态 ”,请点击“立即开通”。然后在DevCloud服务购买页面,选择基础版进行购买操作(基础版5人及以下免费)。开通后,继续完成项目创建注:创建完项目后,点击所属项目选项列表旁的“刷新”图标,可显示新创建的项目,选中并完成页面其它信息输入,点击“立即创建”按钮,进入应用详情界面等待应用使用的代码仓等资源创建完成(约20s),点击左侧的“应用部署”菜单,查看依赖云服务的状态。若有云服务未开通,则点击“去开通”按钮完成服务开通。查看文字识别服务增值税发票识别的开通状态,如果未开通,点击“开通服务”。注意:增值税发票识别API按需付费模式每月0~1千次(含)调用免费,如果超出则会产生费用,计费详情可点击“参考价格”查看。函数工作流FunctionGraph若实际使用量每月调用不超过100万次且计量时间不超过400,000 GB-秒免费,如果超过则会产生费用,计费详情可点击“参考价格”查看。完成服务开通后,点击对应服务的刷新按钮,查看服务开通状态。依赖的云服务全部完成开通后,点击“部署”按钮,进行应用部署。待部署完成后,点击“看看”链接访问部署到函数工作流的云函数。在智能OCR识别页面,点击“选择文件”上传发票图片,体验使用OCR精准识别发票图片上的文字。注:上传的发票图片为JPG/JPEG/BMP/PNG格式,建议大小不超过5M(超出有可能会失败),推荐1M。进阶体验-使用Huawei Cloud Toolkit在本地进行快速开发Huawei Cloud Toolkit是华为云提供的IDE插件工具,支持VSCode平台和Intellij平台。支持查看华为云开放API的文档、SDK、错误码、示例代码、代码模板;基于代码模板快速创建本地工程;智能代码自动补全等场景,能极大提高开发者在本地开发基于华为云API的应用的开发效率。这里我们使用Huawei Cloud Toolkit辅助,给原来的代码快速扩展一个新的“通用文本识别”功能。在应用详情页面的代码仓库栏,点击右边的“克隆/下载”,复制弹出框中的https链接,然后在本地命令行中输入:git clone <仓库链接>,既可把代码仓克隆到本地。(克隆的时候会提示输入用户名和密码,用户名为<华为云账号名>/<华为云账号名形式>,具体可以在codehub的配置页面查找到https://devcloud.cn-north-4.huaweicloud.com/codehub/https)使用本地IDE(使用Intellij或者VSCode)打开刚克隆的代码,这里以Intellij为例。安装 Huawei Cloud Toolkit插件,Intellij点击 File -> Settings -> Plugins,在 Marketplace中搜索“HuaweiCloud Toolkit”,点击“install”进行安装。注:如果您使用VSCode,也可以在VSCode插件市场中搜索“HuaweiCloud”,选择安装“HuaweiCloud Extension Pack”这个插件。打开链接https://console.huaweicloud.com/iam/?region=#/mine/accessKey,点击“新增访问秘钥”添加一个您租户账号的AK/SK。在Intellij中,点击左侧的“Huawei Cloud Toolkit”标签,点击登录图标。将刚才生成的AK/SK(注意excel中的AK/SK后面有一个空格,需要去掉)填入配置中,点击“apply”和“ok”按钮,插件即可登录成功。登录成功后我们在右侧搜索栏搜索“OCR”。选择“云服务”标签下的“文字识别 OCR”,可以看到OCR服务出了支持身份证识别外,还支持很多的其他的文字识别功能。这里我们选择下方的“通用文字识别”,点击“查看文档”。接口文档包含的接口的说明,请求参数,返回参数的详细信息,这里看到这个接口的请求参数只需要一个图片的base64字符串即可。在对要实现的接口有了了解后,我们来改造一下原理的代码。在Intellij中打开代码中的“java”文件。为了方便扩展功能,我们已经在代码中预留好扩展的位置。找到代码的第50行,按注释提示添加一个识别类型:修改后:接着我们来实现调用接口的逻辑,找到代码中第101行的函数“recognizeGeneralText”:把注释删掉,输入我们刚才搜到的api名称“recognizeGeneral”,这是我们看到会有自动提示弹出,选择第一个提示选择后可以看到API调用的基础代码已经被插入:然后我们只需要简单的添加一下输出和输入即可实现API调用的功能,添加下图红框里面的两行代码:到这里我们的代码已经完成,为了使用“通用文本识别”功能,我们需要到OCR服务开通该服务,打开OCR页面:https://console.huaweicloud.com/ocr/#/ocr/overview,找到“通用文本识别”点击开通服务。(按需计费模式下,每个月的前1000次调用免费)将代码push到远端的git仓库,回到我们的应用部署页面,重新部署应用(请参考本文“应用开发及部署小节步骤6、7”),现在可以上传一张带有文字内容的图片,体验添加的通用文本识别功能,识别图片中的文本。到这里我们已经实现了一个新的识别功能的添加,您可以继续查看OCR服务的文档,添加更多的文本识别功能到项目中。恭喜您已完成体验,您还可以了解和体验DevStar AI识图作诗应用开发模板。
  • [交流分享] Java入门
    过去学习编程语言的方法、经验和教训过去学习了C/C++和Python,以下是我的一些经验与教训:学习的时候看教材,但不局限于教材,要与相关参考书籍相结合,教材的版本可能比较老旧,要注意知识的更新,多看一些讲得更加具体、全面的书,例如在学习C++的过程中,《C++ Primer Plus》就给了我很大的帮助。切勿只看书不实践,要将理论与实际相结合,勤写代码才是快速提升对语言掌握能力的最佳方法。纸上谈兵并不可取,实践出真知。可以找相关的视频、博客进行观看学习,别人的讲解有时候可以让你豁然开朗,可以减少许多不必要的时间浪费。遇到不会的问题,要积极查阅各种资料,利用能利用的资源,现在各种资源鱼龙混杂,要有一定的鉴别能力,不要别人说啥就是啥,要有质疑的能力。高级语言的编译型和解释型语言的编译执行过程的区别编译型语言编译型语言是一次性把源文件编译成机器语言,生成可执行文件,运行时不需要重新编译,一次编译永久执行。执行效率高,但跨平台性差。编译型语言编译器处理流程:源代码→ 预处理器→ 编译器→ 目标代码→ 链接器→ 可执行程序→执行。解释型语言解释性语言源代码不需要预先编译,在运行时,边解释边运行。执行效率低,但跨平台性好。解释型语言解释器处理流程:源代码→解释器中间代码(字节码)和机器指令→执行。Java语言的特点,与C/C++, Python的异同与C/C++的区别Java语言是C++语言的一个“简化”版本。有垃圾自动回收机制,没有头文件、指针运算、虚基类等。Java的面向对象比C++更彻底,一切皆对象,Java与C++的主要不同点在于多继承,在Java中,取而代之的是接口概念。Java适用于网络/分布式环境。从一开始,Java程序能够防范各种攻击,其中包括:运行时堆栈溢出。破坏自己进程空间之外的内存。未经授权读写文件。可移植性更强,Java编译器通过生成与特定计算机体系结构无关的字节码指令,不仅可以在任何机器上解释执行,而且可以动态地翻译成本地机器代码,跨平台能力强,一次编译处处运行,只要装有不同平台对应的JVM,便可在不同操作系统上解释执行。Java与C/C++相比更具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量。与Python的区别Java和Python之间最大的区别之一就是两种语言处理变量的方式。Java强迫你在第一次声明变量时就定义其类型并且不允许你在后面的程序中更改它的类型,是静态类型。而Python不许声明时定义变量类型,可以改变一个变量的类型,是动态类型。Java的可移植性更强与上文同理。Python有非常丰富的库,程序的开发效率高。JDK、JRE、JVM是什么,它们之间的联系和区别JDKJDK,全称Java Development Kit,是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的核心。JREJRE,全称Java Runtime Environment,是指Java的运行环境,是可以在其上运行、测试和传输应用程序的Java平台。JVMJVM,全称Java Virtual Machine(Java虚拟机),是一种用于计算设备的规范,它是一个虚构出来的计算机,引入JVM后,Java语言在不同平台上运行时不需要重新编译。JVM是Java跨平台的核心。关系JDK包含了Java的运行环境(即JRE)和Java工具。JRE包含了一个Java虚拟机(JVM)以及一些标准的类别函数库。总的来说,JDK、JRE、JVM三者都处在一个包含关系内,JDK包含JRE,而JRE又包含JVM。
  • [其他] 使用PyCharm ToolKit工具快速实现模型训练和部署
    这里简单提供了使用MXNet实现手写数字图像识别应用的示例,帮助您使用ModelArts提供的PyCharm ToolKit工具,在本地快速完成模型的训练和部署。MNIST是一个手写体数字识别数据集,常被用作深度学习的入门样例。本示例将针对MNIST数据集,使用MXNet原生接口编写的模型训练脚本(ModelArts默认提供),在ModelArts PyCharm ToolKit中完成模型训练,并将此模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片中的数字。开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。本示例模型构建的步骤如下所示:准备工作本地已安装PyCharm 2019.2或以上版本,推荐Windows版本,Community或Professional均可,请单击PyCharm工具下载地址获取工具并在本地完成安装。已注册华为云帐号,且在使用ModelArts前检查帐号状态,帐号不能处于欠费或冻结状态。在ModelArts管理控制台中,当前帐号已完成访问授权的配置。如果已完成,此操作可跳过。如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。已在OBS服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表1所示的文件夹。创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。确保您使用的OBS目录与ModelArts在同一区域。表1 文件夹列表步骤1:安装PyCharm ToolKit,并添加访问密钥获取PyCharm ToolKit工具安装包,单击ToolKit工具的下载地址,获得工具包。打开本地PyCharm工具。在PyCharm工具中,选择菜单栏的“File > Settings”,弹出“Settings”对话框。在“Settings”对话框中,首先单击左侧导航栏中的“Plugins”,然后单击右侧的设置图标,选择“Install Plugin from Disk”,弹出文件选择对话框。图1 选择从本地安装插件在弹出的对话框中,从本地目录选择ToolKit的工具包,然后单击“OK”。图2 选择插件文件单击“Restart IDE”重启PyCharm。在弹出的确认对话框中,单击“Restart”开始重启。图3 重启PyCharm重启成功后,当PyCharm工具栏出现“ModelArts”页签,表示ToolKit工具已安装完成。图4 安装成功获取访问密钥,并在PyCharm中添加密钥。获取此帐号的访问密钥(“AK/SK”),详细操作请参见获取访问密钥。PyCharm ToolKit安装后,在ToolKit工具中添加访问密钥,详细操作请参见使用访问秘钥登录。图5 填写区域和访问密钥查看认证结果。在Event Log区域中,当提示如下类似信息时,表示访问密钥添加成功。16:01Validate Credential Success: The HUAWEI CLOUD credential is valid.步骤2:准备数据ModelArts在公共OBS桶中提供了MNIST数据集,命名为“Mnist-Data-Set”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-mnist”。单击数据集下载链接,将“Mnist-Data-Set”数据集下载至本地。在本地,将“Mnist-Data-Set.zip”压缩包解压。例如,解压至本地“Mnist-Data-Set”文件夹下。参考上传文件,使用批量上传方式将“Mnist-Data-Set”文件夹下的所有文件上传至“test-modelarts/dataset-mnist”OBS路径下。“Mnist-Data-Set”数据集包含的内容如下所示,其中“.gz”为对应的压缩包。“t10k-images-idx3-ubyte”:验证集,共包含10000个样本。“t10k-images-idx3-ubyte.gz”:验证集的压缩包文件。“t10k-labels-idx1-ubyte”:验证集标签,共包含10000个样本的类别标签。“t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件。“train-images-idx3-ubyte”:训练集,共包含60000个样本。“train-images-idx3-ubyte.gz”:训练集的压缩包文件。“train-labels-idx1-ubyte”:训练集标签,共包含60000个样本的类别标签。“train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件。步骤3:编写训练代码ModelArts提供了本示例需要使用的训练代码,请获取并在PyCharm工程中打开。在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,下载工程。下载完成后,解压缩“ModelArts-Lab-master.zip”文件,然后在“\ModelArts-Lab-master\official_examples\Using_MXNet_to_Create_a_MNIST_Dataset_Recognition_Application\codes”目录中获取到训练代码文件“train_mnist.py”。打开PyCharm工具,单击“File > New Project”创建新工程, 在工程目录下创建“src”文件夹,并将训练代码文件“train_mnist.py”拷贝到“src”文件夹下。图6 将训练代码拷贝至src目录步骤4:训练模型数据和代码准备完成后,您可以创建一个训练作业,选用MXNet引擎,基于本地的train_mnist.py训练脚本,并最终生成一个可用的模型。本示例已提供编码完成的脚本(基于MXNet引擎的原生接口),如果使用自行编写的代码,请使用ModelArts支持的引擎类型及其对应版本的接口,并满足其要求。在PyCharm工具栏中,选择“ModelArts > Edit Training Job Configuration”。在弹出的对话框中,按照如下示例配置训练参数。“Job Name”:自动生成,首次提交训练作业时,该名称也可以自己指定。“AI Engine”:选择“MXNet”,版本为“MXNet-1.2.1-python3.6”。“Algorithm Source”:选择“Frequently-used”,代表常用框架。“Specifications”:选择GPU规格。“OBS Path”:填写准备工作中创建的输出路径,用于存储训练输出模型和日志文件。“Data Path in OBS”:填写步骤2:准备数据中数据上传的OBS目录。此处需完整OBS路径,需包含OBS桶名称。此示例填写的值如图所示,请务必修改为您自己的OBS桶及路径。“Boot File Path”:选择本地的训练脚本“train_mnist.py”。“Code Directory”:选择启动脚本所在“src”目录。“Running Parameters”:是训练脚本所需要的输入参数,本样例中没有参数,无需填写。填写完成后,单击“Apply and Run”提交训练作业到云上ModelArts。说明: 由于MNIST数据集数据较多,为提升训练效率,操作示例选择GPU训练。但是,GPU的费用高于CPU,请根据实际情况选择可用的资源池。图7配置训练作业训练作业提交后,可在下方查看训练日志。当训练日志中出现“Current training job status: Successful”类似信息时,表示训练作业运行成功。图8 查看训练日志其中, “ModelArts Event Log”栏为工具打印的日志,“ModelArts Training Log”为训练脚本代码打印的日志。从日志可以看到,工具会先将本地工程的代码自动上传至云上OBS,然后自动提交一个训练作业。作业提交成功后,工具会实时从云上的训练环境获取日志并展示在“ModelArts Training Log”窗口,直至作业运行结束。在PyCharm的左边菜单栏,单击“ModelArts Explorer”,选择刚才提交的作业,双击版本号“V0001”,可以查看作业详情。图9选择对应的训练作业及版本图10 训练作业详情步骤5:编写推理代码和配置文件,并上传至模型所在路径ModelArts提供了本示例需要使用的推理代码“customize_service.py”和配置文件“config.json”,文件路径和下载的git工程中的训练代码在同一目录。此推理代码和配置文件是ModelArts提供的示例。在步骤4:训练模型中,训练作业生成的模型存储在“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V0001”路径下(其中MA-mnist-11-30-16是Job Name,如果配置时填写了自定义Job Name,则路径中就是自定义的Job Name),且系统将自动生成“model”文件夹,模型相关的文件存储在此目录下。将获取的“customize_service.py”和“config.json”文件,上传至OBS的“model”文件夹下。说明:如果训练作业运行多次,将在“训练输出位置”生成不同的版本,即“mnist-output”目录下将生成多种版本的目录,如“V0001”、“V0002”,请基于训练作业的版本,将文件上传至对应版本下的“model”文件夹内。前往OBS管理控制台,找到“test-modelarts”桶,然后进入“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V001/model”路径,执行“上传对象”的操作。OBS的上传操作指导,请参见上传文件。步骤6:部署在线服务训练完成的模型还是存储在OBS路径中,您可以将此模型导入到ModelArts中并部署为在线服务。在训练作业版本号上单击鼠标右键,选择“Deploy to Service”。图11 部署为在线服务在弹出的对话框中,按照如下说明填写部署为在线服务的参数。“Service Name”:自动生成,也可以自定义。“Auto Stop”:勾选Auto Stop,表示启动自动停止功能,服务会在指定时间后自动停止。“Model Path”:自动填写,无需自己配置。与您选择的训练作业及其版本一致。“Environment Variables”:填写运行参数,设置为“input_data_name=images;input_data_shape=0,1,28,28;output_data_shape=0,10”。“input_data_name”:参数值必须是images。针对自己开发训练脚本的场景,此参数是必须设置的。您可以在导入模型时设置参数,也可以写到推理代码中。“input_data_shape”:代表NCHW。本示例的数值为“0,1,28,28”,表示设置了输入图片的规则,其中,输入预测图片大小必须是“28px*28px”。“output_data_shape”:置信度。本示例指定范围为“0~10”。表示输出结果会显示“0~9”中10个类别,属于每一个类别的概率。信息填写完成后,单击“OK”,开始服务部署。图12 部署为在线服务可以在最下方的日志栏查看服务部署进度。图13查看部署进度模型部署上线需要花费一些时间,请耐心等待几分钟。当出现类似“Service status is running”信息时,表示服务部署成功。服务部署成功后,将展示在线服务的链接,单击链接可以进入华为云ModelArts在线服务的界面。说明:首次进入需要输入华为云帐号密码登录。图14 完成部署步骤7:测试服务在线服务部署成功后,您可以进入在线服务,发起预测请求进行测试。部署成功后,单击提供的链接进入在线服务。在线服务详情页面中,单击“预测”页签,进入预测页面。在“选择预测图片文件”右侧,单击“上传”按钮,上传一张黑底白字的图片,然后单击“预测”。预测完成后,预测结果显示区域将展示预测结果,根据预测结果内容,可识别出此图片的数字是“8”的概率为“1”。说明:由于推理代码和配置文件中已指定图片要求,用于预测的图片,大小必须为“28px*28px”,且图片必须是黑底白字。建议不要使用数据中自带的图片,可以使用Windows自带的画图工具绘制一张。图15 预测结果步骤8:清除相应资源,避免产生费用为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如在线服务、训练作业及其OBS目录。进入ModelArts管理控制台,删除在线服务:在“在线服务”页面,单击操作列的“更多>删除”。进入ModelArts管理控制台,删除训练作业:在“训练作业”页面,单击操作列的“删除”。进入OBS管理控制台,删除数据准备阶段创建的OBS桶。先逐个删除桶内文件夹和文件,再执行删除桶的操作。
  • [技术干货] IDEA数据库工具--database
    我们开发中经常用到一些第三方连接数据库的工具 ( navicat/SQLyog/sqldeveloper等 ) 进行调试, 这样回来切换工具很不方便。其实IDEA集成了一个数据库管理工具,可以可视化管理很多种类的数据库。配置IDEA版本:2020.3Windows 101、打开IDEA工具,选择view---Tool Windows---Database鼠标点击+----Data Source,会出现很多种数据库类型,点击自己对应的就行。2、 本人以oracle为例,进行连接先点击switch,配置对应的oracle驱动信息其次按要求填写对应的连接信息填写完成后,点击Test Connection按钮,查看是否可以正常连接。连接成功,会提示下方的语句。3、访问数据库简单的查询到此结束。还可以创建表等一些信息,后续再详细写!
总条数:133 到第
上滑加载中