• [互动交流] 盘古大模型什么时候能开放给开发者用?
    盘古大模型什么时候能开放给开发者用?
  • [其他问题] 沙盒实验桌面没有script文件--MindSpore训练手写数字识别模型
    沙盒实验界面没有script文件,我看了桌面只有Xfce、谷歌、data文件夹。导致后面60%的实验都不能进行下去。请问这种情况怎么处理?
  • [赛事资讯] 2023“域见杯”医检人工智能开发者大赛开启报名
    AIGC(生成式AI),正掀起人工智能新一波巨浪,重塑各行各业。围绕AIGC技术,金域医学携手华为云等举办2023“域见杯”医检人工智能开发者大赛,6月21日重磅开启,探索AIGC新范式!2022年首届“域见杯”成功吸引海内外405支队伍参赛引爆医检人工智能领域2023年6月2023“域见杯”精彩再现6月21日报名通道正式开启未来已来医检AIGC未来等你开创了解更多华为云AI平台ModelArts:cid:link_0ModelArts 是面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。
  • [赛事资讯] 金域医学2023“域见杯”医检人工智能开发者大赛正式启动
    人工智能与大模型开发迎来“新风口”,AIGC(生成式AI)技术正在重构各行各业。为培养交叉复合型人才,构建智慧医检新范式,汇聚医检生态合作伙伴,6月27日,由广州市科学技术局、广州市工业和信息化局指导,广州金域医学检验集团股份有限公司和广东省人工智能产业协会主办,广州人工智能公共算力中心协办,华为云计算技术有限公司提供技术支持的2023“域见杯”医检人工智能开发者大赛正式启动。▲2023“域见杯”医检人工智能开发者大赛正式启动大赛依托海量医检文本数据,从应用场景需求出发,围绕检前临床咨询和检后报告解读场景设置双赛题,吸引全球初创企业、IT巨头、高等院校、科研院所等多领域、多层次的团队及个人开发者同场PK。大赛最终将决出两个一等奖,每支队伍可获得10万元奖金。▲广州市科技局党组成员、总工程师林焕绪致辞广州市科技局党组成员、总工程师林焕绪表示:“广州着眼于打造我国人工智能技术创新、应用示范和产业发展高地。金域医学举办的‘域见杯’为行业打造智慧医检创新生态进行了有益尝试与突破。这也是‘产业界出题、科技界答题’的有力抓手。我相信,大赛举办将成为建设广州市医学人工智能交叉领域的应用场景示范。”▲金域医学董事长兼首席执行官梁耀铭致辞“医检AIGC的开发与应用是大势所趋。”金域医学董事长兼首席执行官梁耀铭表示,“通过举办本次大赛,我们希望能够凝聚医检生态伙伴之力,共同探索生物技术与新一代信息技术融合创新的应用场景,着力培养一批技术、产业的交叉复合型人才,让疾病诊断更加高效可及,共同将‘域见杯’打造成广州市、广东省乃至全国医检人工智能领域的一张名片。”▶聚焦真实应用场景,大赛首次设置双赛题作为广东省新一代人工智能开放创新平台的承建单位,金域医学早已在医检AIGC领域有所布局。目前已建立起标准报告语言规范及高质量专病数据库,并利用预训练模型在医学文本实体抽取、病理报告结构化等领域开展探索与应用。为探索AIGC在医检领域应用的更多可能,2023“域见杯”医检人工智能开发者大赛,设置“智能临床咨询模型”“智能染色体核型分析结果解读模型”双赛题。据了解,金域医学每年完成检测项目临床咨询量达17.6万条,完成用于染色体核型分析的细胞遗传染色体标本量超40万例。本次赛题中提到的智能临床咨询模型,主要为临床医生医检项目决策提供多维度、个性化辅助支持;智能染色体核型分析结果解读模型,主要生成便于医生理解的结果解释,为部分遗传病的结果判读提速,缩短报告出具时间。作为大赛的技术支持方,华为云也将依托盘古基础大模型,提供NLP(自然语言处理)方向的技术服务,帮助开发者们开发出优秀的模型。▲华为云大数据与人工智能领域总经理尤鹏致辞华为云大数据与人工智能领域总经理尤鹏表示:“华为云持续在AI领域投入研发资源,从通用大模型到垂直行业应用大模型开发,始终坚持AI for Industries方向。本次大赛以当前医检业务的真实场景为题目,向全社会征集解决方案,有助于开发出优秀的模型和解决方案,加速大模型在医检行业场景应用落地探索。我们将携手金域医学,一同助力医检行业向智慧医疗迈进,探索符合产业发展的新思路和新方案。”▲金域医学高级副总裁于世辉为田奇教授(左一)和陈俊龙教授(右一)颁发评委会主席聘书本届大赛还特别邀请华为云人工智能领域首席科学家、国家欧亚科学院院士田奇教授,华南理工大学计算机科学与工程学院院长、欧洲科学院外籍院士陈俊龙教授担任评委会主席。据了解,初赛于6月27日正式开启。每道赛题前25名将进入复赛,并分别决出6名参加决赛,角逐最高荣誉。每个赛题的获胜者不仅最高可得10万元奖金,更有机会赢得入职金域医学的offer直通车、创投机会等诸多奖励。▶构建智慧医检生态,金域数字化转型工作提速金域医学大赛项目组总监兼自然语言处理算法总监刘斯分享“从启动数字化转型工作至今,金域的智慧医检建设工作已经取得初步成效。”据金域医学副总裁李映华介绍,金域医学在自然语言处理、计算机视觉、多模态AI和大数据应用等方面进行建设,相继开发出宫颈细胞学AI辅筛、新生儿遗传代谢病辅助诊断、淋巴瘤基因分型预测模型、智慧报告解读系统、病原学大数据监测网等;依托广东省临床检验与病理诊断人工智能开放创新平台,实现了“政产学研金用”智慧医检生态共建。去年,金域医学举办首届“域见杯”医检人工智能开发者大赛。赛事吸引了全球405支参赛队伍,提交超过5000件作品,引爆医检行业,为探索医检AI真实应用场景落地带来极大的启发。今年,金域医学依托每年超1.5亿例的检测量,超7PB的总数据量,从当前的前沿技术研究热点出发,再次汇聚全球伙伴加速推动医检AIGC落地应用。数字化已成为当前推进企业高质量发展的重要引擎,也是构筑企业竞争新优势的重要支撑。金域医学将把握AIGC“新风口”,进一步提速数字化转型工作,以大样本和大数据为基础,协同合作伙伴开发出医检大模型,作为新引擎推动医检新基建,助力广州抢占国内乃至全球智慧医检发展制高点。未来,金域医学将汇聚医检生态合作伙伴,利用人工智能算法辅助医生找到最优的治疗方案,重构医检产业价值,实现智慧医检生态共创、共享、共赢,让患者享受到“多、快、好、省”的医检服务。了解更多华为云AI平台ModelArts:cid:link_0ModelArts 是面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。
  • [其他] TensorFlow在OBS写入TensorBoard到达5GB时停止
    问题现象ModelArts训练作业出现如下报错:Encountered Unknown Error EntityTooLargeYour proposed upload exceeds the maximum allowed object size.:If the signature check failed. This could be because of a time skew. Attempting to adjust the signer原因分析OBS限制单次上传文件大小为5GB,TensorFlow保存summary可能是本地缓存,在每次触发flush时将该summary文件覆盖OBS上的原文件。当超过5GB后,由于达到了OBS单次导入文件大小的上限,导致无法继续写入。处理方法如果在运行训练作业的过程中出现该问题,建议处理方法如下:推荐使用本地缓存的方式来解决,使用如下方法:import moxing.tensorflow as moxmox.cache()
  • [其他] MindStudio介绍
    MindStudio是一款由微软开发的AI开发平台,它提供了一整套的工具和平台,帮助开发者创建和部署AI应用。以下是一些关于MindStudio的详细介绍:集成开发环境(IDE):MindStudio提供了一个基于Web的集成开发环境(IDE),开发者可以在此环境中编写、调试和测试AI应用。同时,MindStudio还支持各种主流编程语言,如Python、C++等。模型训练:MindStudio提供了各种模型训练工具和算法,包括深度学习框架、优化器、损失函数等。开发者可以使用这些工具和算法来训练自己的模型,并使用MindStudio提供的可视化工具来监视模型训练的过程。模型评估:MindStudio提供了一些模型评估工具和指标,包括准确率、精度、召回率等。开发者可以使用这些工具和指标来评估模型的性能和可靠性,并确定模型是否可以用于实际应用。部署与集成:MindStudio提供了多种部署和集成选项,包括云部署、本地部署、容器化等。开发者可以根据实际需求选择最适合的部署和集成方式,并将MindStudio集成到自己的应用程序中。数据管理:MindStudio提供了一些数据管理工具和功能,包括数据集管理、数据标签、数据标注等。开发者可以使用这些工具来处理和管理数据,并使用MindStudio提供的数据可视化工具来查看和分析数据。总的来说,MindStudio是一个功能强大、易于使用、集成全面的AI开发平台,适用于各种类型的AI应用。无论是初学者还是专业人士,都可以使用MindStudio来创建和部署AI应用。
  • [其他] PyTorch介绍
    PyTorch是一个由Facebook开发的开源机器学习库,也是一个用于构建深度学习模型的动态图框架。以下是一些关于PyTorch的详细介绍:动态图模式:PyTorch使用动态图模式,这意味着在构建神经网络时,计算图是在运行时构建的,而不是在编译时。这种动态图模式使得开发更加灵活和易于理解,也让调试更加方便。张量计算:PyTorch中的基本数据类型是张量(Tensor),它支持各种张量操作,如切片、旋转、缩放、变形等。这些操作可以用于构建深度学习模型的基本构建块,如卷积神经网络、循环神经网络等。优化器:PyTorch提供了各种优化器,如随机梯度下降(SGD)、Adam等,可以用于训练深度学习模型。这些优化器可以帮助我们在训练过程中更新模型参数,从而提高模型的性能。损失函数:PyTorch提供了各种损失函数,如均方误差(MSE)、交叉熵损失等,可以用于评估模型的性能。这些损失函数可以帮助我们在训练过程中衡量模型的预测结果与实际结果之间的差异。强大的GPU支持:PyTorch支持GPU加速,这使得训练深度学习模型更加快速和高效。PyTorch的GPU支持通过使用CUDA、cuDNN等库来实现。社区支持:PyTorch有一个活跃的社区,有许多开发者、研究人员和使用者共享他们的经验和知识。这个社区支持可以通过论坛、博客、社交媒体等方式获得。总的来说,PyTorch是一个功能强大、灵活、易于使用的深度学习框架,适用于各种应用,如图像识别、自然语言处理、推荐系统等。无论是初学者还是专业人士,都可以使用PyTorch来构建和训练深度学习模型。
  • TensorFlow框架
    TensorFlow的主要特点包括:灵活的语法和API:TensorFlow提供了一种简单而灵活的语法和API,使得用户可以轻松地创建和训练深度学习模型,无论是传统的神经网络还是最新的模型,都可以使用TensorFlow实现。多平台支持:TensorFlow支持多种硬件和平台,包括CPU、GPU、TPU等,并且可以在不同的操作系统上运行,例如Windows、Linux、macOS等。分布式训练:TensorFlow支持分布式训练,可以在多个机器上分布计算任务的多个部分,从而提高训练速度和效率。可扩展性:TensorFlow可以扩展到大规模数据集和模型,并且可以通过使用TensorFlow Reescale和TensorFlow Extended(TFX)来实现自动化机器学习(AutoML)。社区支持:TensorFlow拥有庞大的社区支持,包括Google工程师和其他开发者,可以在Stack Overflow、GitHub等平台上获得帮助。TensorFlow是一个由Google开发的深度学习框架,它提供了一个方便的工具来创建和训练深度学习模型,并可以在各种硬件和平台上运行。动态图模式和静态图模式:TensorFlow支持两种图模式,即动态图模式和静态图模式。动态图模式允许在运行时构建计算图,而静态图模式需要在编译时构建计算图。动态图模式可以更加灵活地构建模型,而静态图模式可以更加高效地执行模型。张量操作:TensorFlow提供了许多张量操作,例如矩阵乘法、卷积、池化等。这些操作可以用于创建深度学习模型的基本构建块。此外,TensorFlow还支持自定义张量操作,可以根据具体的需求自定义张量操作。模型训练:TensorFlow提供了一个内置的优化器,可以用于训练深度学习模型。它还提供了一些损失函数和评估指标,例如均方误差、准确率等,可以用于评估模型的性能。TensorFlow还支持分布式计算,可以将模型分布在多个计算机上进行训练,从而提高训练效率。可视化工具:TensorFlow提供了一些可视化工具,例如TensorBoard,可以用于监视模型的训练过程、查看训练数据、可视化模型结构等。这些工具可以帮助开发者更好地理解和调试模型。语言支持:除了Python,TensorFlow还支持Java、C++等语言。这使得开发者可以使用自己熟悉的语言来创建和训练深度学习模型。总之,TensorFlow是一个强大而灵活的深度学习框架,可以帮助用户创建各种深度学习模型,并且可以在各种硬件和平台上运行,具有广泛的应用前景。
  • [其他] 人工智能干货合集(2023年6月)
    6月份人工智能整理了如下干货合集:1. AI开发平台ModelArts新功能6月份的没有新功能上线,因为5月份已经上线了挺多新功能。2. 人工智能相关直播合集6月份的大会直播还是比较丰富的。共享技术盛宴:华为开发者联创日-深圳站联创日主要是围绕AI技术领域,包括AI技术趋势解读、行业应用实践解析等等。第一个演讲是关于金融科技的,FIRST。第二个演讲是关于大模型的发展和演进的,这个讲的挺好,值得一看。比如提示工程:关于大模型的正确打开方式。你要是打开方式不正确,可能就得不到自己想要的效果。也就是说,本来是个好东西的,不会用的人,可能就发挥不出它的好处。第三个演讲是夏飞老师来讲的,脱稿,挺不错,主要是讲的文生图的AI方向,即AIGC、内容创作方面。当然少不了华为云ModelArts AIGC体验案例的分享。包括云原生Notebook一键运行--ControlNet涂鸦生图、Instruct-pix2pix文字编辑图片。第四个演讲是关于昇腾的:昇腾CANN调优引擎夯实AI网络性能底座,释放昇腾澎湃算力。第五个演讲是关于Harmony的,如何通过 IoT+OpenHarmony 方案打造极致万物互联的新时代。华为云 IoT 把 IoT SDK 开源至 OpenHarmony,使用 OpenHarmony 加载 IoT 组件,并提供 OpenHarmony L0/L1/L2版本联云的功能,这意味着物联网设备开发者调用2个接口即可实现设备上鸿就上云。第六个演讲是关于大模型中的协助编码能力、大模型与研发工具的结合。介绍了CodeArts Snap智能编程助手如何协助编程。第七个演讲是一个使用ModelArts的应用案例介绍:对恶性皮肤肿瘤诊断系统的智慧升级,可以大幅缩短诊断时间,提升诊断准确度。而且使用简便,使用一个鸿蒙APP或其他网页方式就可以使用。该演讲者也是2022华为开发者大赛-最佳学生团队成员。人工智能框架生态峰会2023峰会提出了“共建人工智能框架生态,繁荣中国人工智能产业”的倡议,举行了上海昇思AI框架&大模型创新中心启动暨伙伴入驻仪式。举行了国家全民数字素养与技能培训基地授牌仪式,举行了昇思MindSpore开源社区理事会成立仪式,并举行了昇思MindSpore开源社区技术委员会专家聘请仪式(12位专家)。至此仪式就举行完了。下面是嘉宾演讲。第一个演讲是:从微观分子到地球生态:AI加速水分子奥秘探索。演讲者是研究计算化学的,演讲听起来也很有意思。水确实是一个很奇妙的物质。不过有些瑕疵的是,这个演讲时间严重超时了....第二个演讲是:紫东.太初2.0:基于昇思的全球首个全模态大模型。“紫东.太初”大模型一开始就是沿着多模态的技术路线在进行,通过这个演讲学到了不少新的知识。特别是,通过文本描述,和少量的图像打标签,可以让大模型学习到压实线的交通违规,让人印象深刻。而且我也感觉到,与chatGPT大出风头相比,国内的大模型在技术路线上并不差,甚至更先进。并且与实体经济、社会治理结合的更紧密。第三个演讲是:凝心聚力,共建AI框架开源新生态。主要介绍AI框架MindSpore2.0的各种功能和特性,生态建设等。第四个演讲是:开放、融合、共享,以大算力赋能AI产业生态。介绍了AI的性能测试行业标准:MLPerf;OAM Open acceleration Module等。第五个演讲是:云从携手昇思联创 打造AI自主方案。讲人机协同操作系统。案例:智慧机场。第六个演讲是:电力行业加速推动人工智能生态建设。对于飞无人机巡检拍图,AI看图,用电的AI预测等,很有电网的特色。其他的如客服、财务等领域的AI应用,就不太有行业特色,因为其他大企业应该是通用的。说到算子,国产的比NVIDIA还是要少一些,通过赛马的方式来加速开发。第七个演讲是:新时代的AI框架:昇思2.0全新技术升级。比如各种AI领域的开发套件,动静统一(动态图和静态图)、pytorch到mindspore的迁移支持、大模型套件、合作很多,大模型能力非常完整了。第八个演讲是:科技赋能产教融合,开创人工智能人才培养新模式。讲产教融合的。然后是:昇思MindSpore开源社区卓越贡献者颁奖,奖励了3个做出价值的团队、以及一些个人贡献者。以上是主论坛。还有TechDay,和各专题论坛。内容简直不要太丰富。感兴趣的可以去看:https://new.mindspore.cn/zh/summit/summit2023/
  • [技术干货] 零基础AI入门【转】
    ​  最近大家肯定被各种AI大模型刷屏了,从ChatGPT到Alpaca,从ChatGLM到Bloom,各种大模型层出不穷,给人感觉“再不上车就来不及了”。然而要上车大模型可不简单,首先,得准备至少几百张炼丹卡,或者直接上超算,普通人看看预算就自觉放弃了。但是,AI时代已经来临,时代从来不会抛弃那些跟不上时代的人,而是直接从他们身上碾压过去。因此,普通人也有必要学习一点AI知识。网上很多铺天盖地地在很高的层次大讲特讲人工智能对产业和人类的影响,看完后没有收获知识,但收获了焦虑。本文和热点网文则不同,本文以工程师的视角从零开始搭建并运行一个AI小模型,并把它完全运行起来以理解AI的工作原理,非常接地气。AI模型是如何工作的神经网络是AI的一种重要的计算模型,深度学习是通过神经网络实现特征学习和模式分析,大量用于图像识别等领域。我们以最基础的手写数字识别为例,看看一个神经网络的AI模型是如何工作的。MNIST(Modified National Institute of Stands and Technology)是一个开源的数据集,它包含了6万个手写的数字图像,每个图像都是28x28黑底白字:有了这个开源的数据集,我们就可以训练一个识别手写数字的AI模型,这个练习堪称AI界的“Hello, world”。要编写这个AI模型,我们需要使用一种称为卷积神经网络(CNN:Convolutional Neural Network)的神经网络结构,具体到代码层面,则需要使用PyTorch这样的训练框架。PyTorch底层用C++开发,外层用Python调用,非常方便易用。先确保机器安装了Python3,然后,安装PyTorch 2:pip install torch torchvision torchaudio如果本机有CUDA环境,也可以安装GPU版本,训练速度更快。编写模型准备好环境后,我们开始编写模型。先让AI写一个用CNN识别MNIST数据集的PyTorch代码:import torch.nn as nnclass NeuralNetwork(nn.Module):    def __init__(self):        super().__init__()        self.conv1 = nn.Conv2d(1, 32, 3, 1)        self.conv2 = nn.Conv2d(32, 64, 3, 1)        self.fc1 = nn.Linear(in_features=64 * 5 * 5, out_features=128)        self.fc2 = nn.Linear(in_features=128, out_features=10)    def forward(self, x):        x = nn.functional.relu(self.conv1(x))        x = nn.functional.max_pool2d(x, kernel_size=2)        x = nn.functional.relu(self.conv2(x))        x = nn.functional.max_pool2d(x, kernel_size=2)        x = x.view(-1, 64 * 5 * 5)        x = nn.functional.relu(self.fc1(x))        x = self.fc2(x)        return x看不懂不要紧,可以接着问AI,它会告诉我们,这个神经网络定义了两个CNN卷积层和两个全连接层,总的来说就是,这个模型定义了2层卷积网络加2层全连接层,输入为1通道图片,经过卷积和池化后进入全连接层,最后输出10个分类结果,分别代表0~9这10个数字。训练接下来我们要使用MNIST数据集来训练这个模型。受益于PyTorch这个框架,我们连下载和读取数据集都省了,因为PyTorch已经集成了这个数据集,直接下载、加载、训练,一步到位:from time import timeimport torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasetsfrom torch.utils.data import DataLoaderfrom torchvision.transforms import ToTensorfrom model import NeuralNetworkdef train(dataloader, device, model, loss_fn, optimizer):    model.train()    running_loss = 0.0    for batch, (inputs, labels) in enumerate(dataloader):        inputs = inputs.to(device)        labels = labels.to(device)        optimizer.zero_grad()        outputs = model(inputs)        loss = loss_fn(outputs, labels)        loss.backward()        optimizer.step()        running_loss += loss.item()    print(f'loss: {running_loss/len(dataloader):>0.3f}')def test(dataloader, device, model):    model.eval()    correct = 0    total = 0    with torch.no_grad():        for inputs, labels in dataloader:            inputs = inputs.to(device)            labels = labels.to(device)            outputs = model(inputs)            _, predicted = torch.max(outputs.data, 1)            total += labels.size(0)            correct += (predicted == labels).sum().item()    print(f'accuracy: {100.0*correct/total:>0.2f} %')def main():    print('loading training data...')    train_data = datasets.MNIST(        root='./data', train=True, download=True, transform=ToTensor())    print('loading test data...')    test_data = datasets.MNIST(        root='./data', train=False, download=True, transform=ToTensor())    train_dataloader = DataLoader(train_data, batch_size=64)    test_dataloader = DataLoader(test_data, batch_size=64)    device = 'cuda' if torch.cuda.is_available() else 'cpu'    print(f'using {device}')    model = NeuralNetwork().to(device)    print(model)    loss_fn = nn.CrossEntropyLoss()    optimizer = optim.Adam(model.parameters(), lr=0.001)    epochs = 5    for t in range(epochs):        start_time = time()        print(f'epoch {t+1} / {epochs}\n--------------------')        train(train_dataloader, device, model, loss_fn, optimizer)        test(test_dataloader, device, model)        end_time = time()        print(f'time: {end_time-start_time:>0.2f} seconds')    print('done!')    path = 'mnist.pth'    torch.save(model.state_dict(), path)    print(f'model saved: {path}')if __name__ == '__main__':    main()数据集分两部分:一个用于训练,一个用于测试训练效果,用PyTorch的datasets.MNIST()自动下载、解压并加载数据集(解压后约55M数据,仅第一次需要下载)。然后,定义损失函数和优化器,用train()做训练,用test()测试训练效果,训练5次,运行结果如下:$ python3 train.pyloading training data...Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz...第一次运行会自动下载数据到data目录并解压...loading test data...using cpuNeuralNetwork(  (conv1): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1))  (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))  (fc1): Linear(in_features=1600, out_features=128, bias=True)  (fc2): Linear(in_features=128, out_features=10, bias=True))epoch 1 / 5--------------------loss: 0.177accuracy: 97.21 %time: 30.96 secondsepoch 2 / 5--------------------loss: 0.053accuracy: 98.62 %time: 32.24 secondsepoch 3 / 5--------------------loss: 0.035accuracy: 98.70 %time: 33.70 secondsepoch 4 / 5--------------------loss: 0.025accuracy: 98.90 %time: 35.10 secondsepoch 5 / 5--------------------loss: 0.018accuracy: 98.95 %time: 32.02 secondsdone!model saved: mnist.pth经过5轮训练,每轮耗时约30秒(这里用CPU训练,如果是GPU则可以大大提速),准确率可以达到99%。训练结束后,将模型保存至mnist.pth文件。使用模型有了预训练的模型后,我们就可以用实际的手写图片测试一下。用PS手绘几张手写数字图片,测试代码如下:import torchfrom torchvision import transformsfrom PIL import Image, ImageOpsfrom model import NeuralNetworkdevice = 'cuda' if torch.cuda.is_available() else 'cpu'print(f'using {device}')model = NeuralNetwork().to(device)path = './mnist.pth'model.load_state_dict(torch.load(path))print(f'loaded model from {path}')print(model)def test(path):    print(f'test {path}...')    image = Image.open(path).convert('RGB').resize((28, 28))    image = ImageOps.invert(image)    trans = transforms.Compose([        transforms.Grayscale(1),        transforms.ToTensor()    ])    image_tensor = trans(image).unsqueeze(0).to(device)    model.eval()    with torch.no_grad():        output = model(image_tensor)        probs = torch.nn.functional.softmax(output[0], 0)    predict = torch.argmax(probs).item()    return predict, probs[predict], probsdef main():    for i in range(10):        predict, prob, probs = test(f'./input/test-{i}.png')        print(f'expected {i}, actual {predict}, {prob}, {probs}')if __name__ == '__main__':    main()因为训练时输入的图片是黑底白字,而测试图片是白底黑字,所以先用PIL把图片处理成28x28的黑底白字,再测试,结果如下:$ python3 test.py using cpuloaded model from ./mnist.pthNeuralNetwork(  (conv1): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1))  (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))  (fc1): Linear(in_features=1600, out_features=128, bias=True)  (fc2): Linear(in_features=128, out_features=10, bias=True))test ./input/test-0.png...expected 0, actual 0, 0.9999996423721313, tensor([1.0000e+00, 2.3184e-10, 1.7075e-08, 7.6250e-16, 1.2966e-12, 5.7179e-11,        2.1766e-07, 1.8820e-12, 1.1260e-07, 2.2463e-09])...以图片0为例,我们要使用模型,需要把输入图片变成模型可接受的参数,实际上是一个Tensor(张量),可以理解为任意维度的数组,而模型的输出也是一个Tensor,它是一个包含10个元素的1维数组,分别表示每个输出的概率。对图片0的输出如下:1.0000e+002.3184e-101.7075e-087.6250e-161.2966e-125.7179e-112.1766e-071.8820e-121.1260e-072.2463e-09除了第一个输出为1,其他输出都非常接近于0,可见模型以99.99996423721313%的概率认为图片是0,是其他数字的概率低到接近于0。因此,这个MNIST模型实际上是一个图片分类器,或者说预测器,它针对任意图片输入,都会以概率形式给出10个预测,我们找出接近于1的输出,就是分类器给出的预测。产品化虽然我们已经有了预训练模型,也可以用模型进行手写数字识别,但是,要让用户能方便地使用这个模型,还需要进一步优化,至少需要提供一个UI。我们让AI写一个简单的页面,允许用户在页面用鼠标手写数字,然后,通过API获得识别结果:因此,最后一步是把模型的输入输出用API封装一下。因为模型基于PyTorch,所以使用Python的Flask框架是最简单的。API实现如下:import base64import torchfrom io import BytesIOfrom PIL import Imagefrom flask import Flask, request, redirect, jsonifyfrom torchvision import transformsfrom model import NeuralNetworkdevice = 'cuda' if torch.cuda.is_available() else 'cpu'print(f'using {device}')model = NeuralNetwork().to(device)path = './mnist.pth'model.load_state_dict(torch.load(path))print(f'loaded model from {path}')print(model)params = model.state_dict()print(params)app = Flask(__name__)@app.route('/')def index():    return redirect('/static/index.html')@app.route('/api', methods=['POST'])def api():    data = request.get_json()    image_data = base64.b64decode(data['image'])    image = Image.open(BytesIO(image_data))    trans = transforms.Compose([        transforms.Grayscale(1),        transforms.ToTensor()    ])    image_tensor = trans(image).unsqueeze(0).to(device)    model.eval()    with torch.no_grad():        output = model(image_tensor)        probs = torch.nn.functional.softmax(output[0], 0)    predict = torch.argmax(probs).item()    prob = probs[predict]    print(f'predict: {predict}, prob: {prob}, probs: {probs}')    return jsonify({        'result': predict,        'probability': prob.item()    })if __name__ == '__main__':    app.run(port=5000)上述代码实现了一个简单的API服务,注意尚未对并发访问做处理,所以只能算一个可用的DEMO。思考对于AI程序,我们发现,模型定义非常简单,一共也就20行代码。训练代码也很少,不超过100行。它和传统的程序最大的区别在哪呢?无论是传统的程序,还是AI程序,在计算机看来,本质上是一样的,即给定一个输入,通过一个函数计算,获得输出。不同点在于,对于传统程序,输入是非常简单的,例如用户注册,仅仅需要几个字段,而处理函数少则几千行,多则几十万行。虽然代码量很大,但执行路径却非常清晰,通过跟踪执行,能轻易获得一个确定的执行路径,从而最终获得一个确定性的结果。确定性就是传统程序的特点,或者说,传统程序的代码量虽然大,但输入简单,路径清晰:f(x1, x2, x3)  │  ▼ ┌─┐◀─┐ └─┘  │  │   │  ▼   │ ┌─┐  │ └─┘  │  │   │  ▼   │ ┌─┐──┘ └─┘  │  ▼ ┌─┐ └─┘AI程序则不同,它只经过几层计算,复杂的大模型也就100来层,就可以输出结果。但是,它的输入数据量大,每一层的数据量更大,就像一个扁平的巨大函数:       f(x1, x2, x3, ... , x998, x999, x1000)         │   │   │   │   │   │   │   │   │         ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼        ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐        └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘         │   │   │   │   │   │   │   │   │ ┌───┬───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┐ ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐└─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ │   │   │   │   │   │   │   │   │   │   │   │   │ └───┴───┴───┴───┼───┼───┼───┼───┼───┴───┴───┴───┘                 ▼   ▼   ▼   ▼   ▼                ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐                └─┘ └─┘ └─┘ └─┘ └─┘这个函数的计算并不复杂,每一层都是简单的矩阵计算,但并行程度很高,所以需要用GPU加速。复杂度在于每一层都有大量的参数,这些参数不是开发者写死的,而是通过训练确定的,每次对参数进行微调,然后根据效果是变得更好还是更坏决定微调方向。我们这个简单的神经网络模型参数仅几万个,训练的目的实际上就是为了把这几万个参数确定下来,目标是使得识别率最高。训练这几万个参数就花了几分钟时间,如果是几亿个甚至几百亿个参数,可想而知训练所需的时间和算力都需要百万倍的增长,所以,AI模型的代码并不复杂,模型规模大但本身结构并不复杂,但为了确定模型中每一层的成千上万个参数,时间和算力主要消耗在训练上。比较一下传统程序和AI程序的差异:传统程序AI程序代码量大少输入参数少多输出结果精确输出不确定性输出代码参数由开发设定由训练决定执行层次可达数百万行仅若干层网络执行路径能精确跟踪无法跟踪并行串行或少量并行大规模并行计算以CPU为主以GPU为主开发时间主要消耗在编写代码主要消耗在训练数据主要存储用户产生的数据需要预备大量训练数据程序质量取决于设计架构、代码优化等取决于神经网络模型和训练数据质量传统程序的特点是精确性:精确的输入可以实现精确地执行路径,最终获得精确的结果。而AI程序则是一种概率输出,由于模型的参数是训练生成的,因此,就连开发者自己也无法知道训练后的某个参数比如0.123究竟是什么意义,调大或者调小对输出有什么影响。传统程序的逻辑是白盒,AI程序的逻辑就是黑盒,只能通过调整神经网络的规模、层次、训练集和训练方式来评估输出结果,无法事先给出一个准确的预估。转自: https://www.liaoxuefeng.com/article/1543329456062498​
  • [热门活动] 【HDC.Cloud2023丨技术梦工厂】AI涂鸦,简笔画秒变艺术作品
    参与活动前请先报名HDC.Cloud2023开发者社区活动【点击报名】活动奖励:本次活动结束后,如参与技术梦工厂相关体验活动人数≥200人,将由华为云工作人员将符合抽奖条件的用户名单优先导入至巨公摇号平台(https://www.jugong.wang/random-portal/)内,抽取各奖项,并截屏公示抽奖过程。如您不同意此抽奖规则,请勿参加本次活动。将抽取80位符合条件的开发者,每人奖励无线鼠标1个,以及1位幸运开发者,获取总价值4000元终极电子产品礼包(HUAWEI Sound X 智能音箱、任天堂 Nintendo Switch 国行游戏机)。活动时间:6月20日-7月16日 参与方式:开发者根据案例指导体验AI涂鸦生图,并将最后运行的结果截图(如下所示)回复至活动帖内,视为完成本次任务。【点击立即体验AI涂鸦生图案例】活动规则:回复非示例要求图片或其他无效信息,视为无效楼层,并取消抽奖资格。  Tips:1、请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)。2、所有获得奖项的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。3、收货信息填写说明:1)为保证您顺利领取活动奖品,请您提前填写奖品收货信息,如您没有填写,视为放弃奖励。收货信息请【点击此处填写】2)填写时间截至2023年8月1日3)在【2023】HDC.Cloud开发者社区活动获奖信息收集表中完成一次填写即可。我们最终将会按照您填写的信息发放奖励。4、活动规则请戳cid:link_3
  • 动漫
    kkkkkkkkkkkkkkkkkkkkkkkk
  • 山水
    山水 水墨 动漫 粒子 五行
  • 抽象的日出
    AI-这是抽象的日出
  • [其他] 浅谈AI Gallery
    AI Gallery算法、镜像、模型、Workflow等AI数字资产的共享,为高校科研机构、AI应用开发商、解决方案集成商、企业级/个人开发者等群体,提供安全、开放的共享及交易环节,加速AI资产的开发与落地,保障AI开发生态链上各参与方高效地实现各自的商业价值。AI说介绍AI Gallery的AI说模块为开发者提供自由分享各类AI领域内知识和经验的平台。开发者既可以发布个人技术文章,也可以阅读和学习他人分享的技术文章。案例库介绍AI Gallery的案例库是面向场景化交付的AI资产的组合和使用案例。案例中沉淀了基于业务场景的AI知识、经验和部分通用的业务逻辑,能够为某些具体的业务场景提供AI环节的解决方案。AI Gallery使用限制    目前自动学习产生的模型暂不支持发布到AI Gallery。    订阅或购买主要是获取AI资产的使用配额和使用权,支持在配额定义的约束下,有限地使用AI资产。    使用AI资产时,可能需要消耗硬件资源,硬件资源费用将根据实际使用情况,由华为云ModelArts等管理控制台向使用方收取。    已发布的AI资产,如果不需要在资产列表中展示该资产,可以将资产下架。下架后,已发布资产仅发布者可见。已经被订阅的资产,即便资产下架后,基于配额资源的约束,仍然可有效使用该资产,不会因为该资产的下架而产生使用问题。AI Gallery中,“资产集市”支持Notebook代码样例、数据集、算法、镜像、模型、Workflow等AI资产的共享。    “资产集市 > Notebook”:共享了Notebook代码样例。    AI Gallery的Notebook模块为开发者提供免费分享和灵活使用Notebook代码样例的功能。您可以将优秀的Notebook代码样例发布在AI Gallery社区,供其他开发者学习使用;也可以在AI Gallery上查看其他人共享的Notebook案例的详细描述、代码信息等,通过“Run in ModelArts”将Notebook案例在ModelArts控制台快速打开、运行以及进行二次开发等操作。    “资产集市 > 数据集”:共享了数据集。    AI Gallery的数据模块支持数据集的共享和下载。在AI Gallery的“数据”中,可以查找并下载满足业务需要的数据集。也可以将自己本地的数据集发布至AI Gallery中,共享给其他用户使用。    “资产集市 > 算法”:共享了算法。    AI Gallery的算法模块支持算法的共享和订阅。在AI Gallery的“算法”中,可以查找您想要的算法,订阅满足业务需要的资产,最后推送至ModelArts控制台中使用。也可以将个人开发的算法分享发布至AI Gallery中,共享给其他用户使用。    “资产集市 > 镜像”:共享了ModelArts镜像。    AI Gallery的ModelArts镜像支持发布和使用共享的镜像。在AI Gallrey的“镜像”中,可以查找您想要的ModelArts镜像,最后在ModelArts管理控制台中使用。也可以将个人开发的ModelArts镜像分享发布至AI Gallery中,共享给其他用户使用。    “资产集市 > 模型”:共享了ModelArts模型和HiLens技能。    AI Gallery的模型模块包括ModelArts模型和HiLens技能,支持发布和订阅共享的模型。在AI Gallery的“模型”中,可以查找您想要的ModelArts模型或HiLens技能,订阅满足业务需要的资产,最后推送至ModelArts或HiLens等管理控制台中使用。也可以将个人开发的ModelArts模型或HiLens技能分享发布至AI Gallery中,共享给其他用户使用。其中,HiLens技能为HiLens服务的技能市场功能,详细指导请参见《HiLens用户指南》。    “资产集市 > Workflow”:共享了Workflow。    AI Gallery的Workflow模块支持Workflow的共享和订阅。在AI Gallery的Workflow中,可以查找您想要的Workflow,订阅满足业务需要的资产,最后推送至ModelArts控制台中使用。也可以将个人开发的Workflow分享发布至AI Gallery中,共享给其他用户使用。
总条数:3403 到第
上滑加载中