• [活动公告] 【云咖问答】第17期 与华为开发者空间技术专家深度对话,探索应用开发的无限可能,回帖赢开发者定制礼品!
    华为开发者空间,是为全球开发者打造的专属开发者空间,预置昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等各项华为根技术的开发工具资源。在华为开发者空间,每位开发者都可以免费领取一台云主机,每年享有数百小时的云主机使用权,配备5GB的云上存储空间,并提供配套的案例指导,帮助开发者从开发编码到应用调测,基于华为根技术生态高效便捷的学习和体验应用开发。欢迎各位开发者,免费领取一台云主机,开启云上应用开发之旅,领取链接。场景化案例体验,请进入案例中心查看。本期我们邀请了华为云开发者生态DTSE技术专家 孙老师坐阵,和大家一起探讨关于“华为开发者空间”的话题。【本期云咖】【问题参考】(包括不限于)1、华为开发者空间云主机CodeArts IDE支持扩展插件吗?可以安装CodeArts Snap插件吗?2、在华为开发者空间中可以使用哪些工具实现云原生应用及AI原生应用的全生命周期管理?3、华为开发者空间支持哪些操作系统?支持欧拉吗? 4、华为开发者空间支持哪些开发工具?支持Python、PHP、JS吗?对于华为开发者空间,你有哪些疑问呢?【活动时间】2024年11月8日-11月27日【参与方式】直接在此活动帖下方回帖提问即可。【获奖规则】参与云咖问答的提问我们会整理在问答专题中,你的提问将会帮助更多的开发者~欢迎大家踊跃提问,积极互动~【活动规则】1、开发者用户发布的提问,必须与本期产品相关,其他产品求助帖不参与此次活动,将视为无效内容,否则取消该用户获奖资格。(其他产品求助可发帖到相应的版块进行提问);2、本次活动不限用户的总提问数及连续提问数,但需保证提问质量,如华为云社区小编认定参与用户有恶意灌水嫌疑,则取消该用户获奖资格;3、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定; 4、每期活动预计于结束后10天内完成奖项公示,并于结束后30个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [技术干货] 【开发者空间实践指导】远程登录鲲鹏沙箱环境
    一、实践介绍本文档为您介绍如何使用华为开发空间提供的远程登录功能登录到您的鲲鹏沙箱环境上。二、约束与限制远程登录时,系统不支持直接的复制粘贴操作。鲲鹏资源创建完成后,有效使用时间为1900秒,时间结束后系统会自动释放相关资源。因此请您规划好沙箱实验内容。鲲鹏资源环境在释放后,只要您的开发资源使用时间仍有余额,可随时重新创建。三、前提条件您已完成鲲鹏沙箱环境的创建。四、登录方法1、点击远程登录。2、在浏览器展开的抽屉页面查看登录鲲鹏沙箱环境所使用的命令行工具。3、鲲鹏沙箱环境创建后,首次远程登录时,您可以通过使用右上角的【Input Commands】按钮,输入并发送一个回车键完成激活。4、如需切换界面语言,可通过点击页面上的 【English】按钮来切换。5、在看到命令行提示"login"后输入当前鲲鹏沙箱环境的账号和密码。6、点击鲲鹏沙箱环境选项卡中的登录信息来查看当前鲲鹏沙箱环境的账号和密码。​​​7、点击查看密码,同时使用账号和密码旁边的按钮来完成复制。8、通过使用右上角的【Input Commands】按钮,粘贴并发送您的账号和密码,发送后可以按回车键确认。​9、当看到如下图所示的"#"提示符时,表示已经完成了鲲鹏沙箱环境的认证操作。在您的鲲鹏沙箱被释放前,远程登录将不再需要重复认证。
  • [问题求助] 云主机(基础版)咨询
    创建的云主机,设置的是java工具集。但是【华为“云上先锋”实践赛·开发者空间赛道(Serverless赛题)】又是基于python的项目。根据云主机使用说明:云主机首次配置后CPU架构、规格、操作系统、系统镜像和工具选择安装后不可以再修改。那么我的Serverless实验项目,第三步里面跑不了了。求版主指引方向!
  • [热门活动] 华为云HCDG开发者城市行1024程序员节活动——智上云端 AI赋能创新未来在上海杉达学院嘉善校区成功举办
    2024年10月25日,华为云开发者社区组织HCDG在上海杉达学院嘉善校区举办了1024程序员节特别活动,以“智上云端,AI赋能创新未来”为主题,旨在将AI与云计算技术深入校园,帮助学生接触最前沿的技术应用和创新实践。此次活动不仅聚焦于鸿蒙系统与云、AI的深度结合,更将重点放在云主机实际操作和体验上,吸引了大量学生积极参与。探索鸿蒙与云技术,开创AI赋能未来活动以全新发布的HarmonyOS NEXT(5.0)操作系统为切入点,带领学生走进AI大模型时代下的鸿蒙智能应用场景,详细介绍了鸿蒙系统在智能化、互联互通方面的应用潜力和华为云技术的强大支持。通过讲解和互动环节,学生们对鸿蒙的开放生态和未来发展路径有了更清晰的认知,进一步激发了他们对自主创新和AI应用的兴趣。云主机申请与实践项目——从理论到实操活动的核心部分集中在云主机申请和项目实践环节。学生们在老师的指导下完成了云主机申请,首次亲身体验了云计算的基础操作。随后,学生们使用申请的云主机资源,结合华为云提供的FunctionGraph功能,开展了一个云空间实践项目。这个项目通过API Gateway作为前端入口,结合FunctionGraph实现了自动化的GIF头像制作功能,使学生们对如何利用云资源进行功能开发和应用部署有了直观理解。定制专属GIF头像,创意与技术的碰撞为了增加趣味性和互动感,活动还设计了“定制专属GIF头像”体验环节,学生们可以上传自己的短视频或图片,通过FunctionGraph处理生成个性化GIF头像。这一环节不仅让学生更深入地了解了API Gateway和FunctionGraph的实际应用流程,更锻炼了他们的动手能力,激发了创作热情。学生们纷纷参与,现场气氛热烈,通过互动中加深了对云服务应用场景的理解。学生积极参与,收获实战经验整个活动过程中,学生们参与热情高涨,积极互动,提出了许多关于云主机操作、API调用、项目部署等技术问题。通过此次活动,他们不仅学会了如何申请和使用云主机,也了解了云计算在个人项目中的应用潜力。活动中的云空间实践项目和GIF头像设计,更帮助他们在趣味操作中掌握了FunctionGraph的实际应用方法,积累了宝贵的实战经验。展望未来:AI赋能下的智能时代人才培养华为云1024程序员节活动的成功举办,为学生们搭建了一个接触和体验AI与云计算技术的桥梁。通过真实的云端应用场景和项目实践,学生们不仅在专业知识上得到了提升,也为今后在智能时代的职业发展奠定了扎实的技术基础。华为云将前沿科技引入校园,培养更多具备创新能力和实际操作能力的新时代人才。
  • [活动公告] 【开发者日南京站】产品体验官:在开发者空间基于FunctionGraph实现Gif动图制作应用开发
    华为云开发者日·南京站来啦!参加“基于FunctionGraph实现Gif动图制作应用开发”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】基于FunctionGraph实现Gif动图制作应用开发【活动时间】2024年10月25日-10月31日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“基于FunctionGraph实现Gif动图制作应用开发”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [热门活动] 活动已结束,参与互动用户名单公示中~////【华为开发者空间】1024技术体验专场:免费领取云主机,T恤衫、云宝多重好礼等您拿!
    活动已结束,各位开发者注意查看活动参与名单~活动参与名单见文末附件,公示期5天(11月5日-11月9日)公示期结束后将进行抽奖,预计11月11日-11月15日公示获奖名单如有问题,请在公示期内与开发者空间论坛版主【云起龙骧】联系,逾期视为放弃抽奖资格在数字时代,每一位程序员都是幕后的英雄,用代码编织梦想,用智慧点亮未来。1024,这个在二进制世界中代表着“2的10次方”的数字,象征着程序员们无限的创造力和对技术的热爱。在这个特别的日子里,我们向所有程序员致敬。在专属你们的节日里,华为开发者空间为您准备了专属礼品,等您查收。【活动时间】即日起—10月31日【活动方式】(以下活动均可参与,奖励可叠加)活动一:领取免费云主机,参与华为云开发者定制礼品抽奖活动期间,点击链接,领取您的专属云主机,活动结束后将在领取名单中抽奖。活动二:体验开发者空间案例,赢华为云开发者定制好礼在云主机中,完成以下任一实践体验,将实验完成截图发送在本活动贴评论区或上传至华为开发者空间-应用构建版块。活动结束后在参与名单中抽奖。实践指导:(点击下方链接进入)基于FunctionGraph实现Gif动图制作应用开发 链接鲲鹏DevKit代码迁移工具快速完成C&C++源码迁移 链接掌握Redis部署,轻松实现电商平台秒杀抢购! 链接搭建可自动伸缩的Discuz!论坛网站 链接基于PyTorch的手写体识别 链接实验截图上传步骤:1、申请构建登录个人华为账号,进入开发者空间应用构建申请界面,点击“立即申请”。2、提交构建参考下方信息填写构建信息,并提交构建申请。应用名称:填写本次活动中推荐的五个实践之一;应用简介:填写“1024技术体验专场---’践名称‘ “;完成实践后,截图提供应用运行结果、应用页面结果截图;根据实践实操,配置应用开发语言、开发框架、和涉及云服务。填写完内容后,点击提交构建。​活动三:用户建议有礼反馈在活动期间,将您的使用建议、产品体验提升建议发布在云声建议,活动结束后在参与名单中抽奖。【互动福利】在活动期间,将您领取云主机截图、实验截图、用户建议等发布在活动贴评论区,我们将抽取积极互动奖。奖项设置有效回复楼层数需达到评选条件获奖名额积极互动奖10参与互动的全部开发者2203305408【活动奖品】礼品华为云云宝盲盒定制polo衫开发者定制渔夫帽定制雨伞定制鼠标垫数量1010101010【活动规则】抽奖方式:活动结束后,我们将从参与活动的用户中(华为云新老用户均可参与),通过巨公平台或Excel 函数形式抽取获奖用户。获奖名单将在活动结束后的5个工作日内公布。活动三的回帖建议不少于30字,仅限于对“华为开发者空间”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况。【活动说明】用户限制说明:1、参加本次社区活动的用户必须为华为云注册用户。同时为保证活动公平性,禁止用户以IAM账号身份参与活动,否则将视为无效。2、领取奖品的用户需为华为云实名用户,未完成实名认证的用户将不发放活动奖励。3、本次活动如一个实名认证对应多个账号,只有一个账号可领取奖励。如在同一概率活动中,同一账号重复获奖,只发放首先获奖奖品。4、本次活动一个实名认证账号只能对应一个收件人,如同一账号填写多个不同收件人,不予发放奖励。5、请开发者不要在活动期间随意修改社区昵称和华为云账号,由此产生的统计问题,如过了申诉期,小助手不再处理。(申诉期为活动结果公示3天内。)奖品发放说明:1、获奖开发者用户需在截止时间在获奖信息收集表中填写获奖信息,活动结束且开发者用户填写完整领奖信息后15个工作日内,将统一发出奖品,所有实物奖品包邮,不额外收取任何费用。华为云遵守《中华人民共和国个人信息保护法》规定,将以上个人信息仅用于礼品发放之目的,不会向任何第三方披露,所有信息将在华为云问卷系统留存2个月,礼品发放完毕后即删除。若由于获奖开发者用户自身原因(包括但不限于提供的联系方式有误、身份不符或者通知领奖后超过30天未领取等)造成奖品无法发送的,视为获奖开发者用户放弃领奖。2、为保证活动的公平公正,华为云有权对恶意刷活动资源(“恶意”是指为获取资源而异常注册账号等破坏活动公平性的行为),利用资源从事违法违规行为的开发者用户收回抽奖及奖励资格。3、若发放奖品时,出现库存不足,则优先发放等价值的其他奖品。4、所有参加本活动的开发者用户,均视为认可并同意遵守《华为云开发者用户协议》,包括以援引方式纳入《华为云开发者用户协议》、《可接受的使用政策》、《法律声明》、《隐私政策声明》、相关服务等级协议(SLA),以及华为云服务网站规定的其他协议和政策(统称为“云服务协议”)的约束。5、如果您不同意本活动规则和云服务协议的条款,请勿参加本活动。
  • [技术干货] 【开发者空间实践指导】基于PyTorch的手写体识别
    一、 案例介绍随着人工智能技术的飞速发展,图像识别技术在众多领域得到了广泛应用。手写体识别作为图像识别的一个重要分支,其在教育、金融、医疗等领域具有广泛的应用前景。本实验旨在利用深度学习框架PyTorch,结合MNIST手写体数据集,构建一个高效、准确的手写体识别系统,本实验是在云主机中安装PyCharm,并且基于PyTorch框架的手写体识别的案例。本实验采用的MNIST数据库(Modified National Institute of Standards and Technology database)是一个大型数据库的手写数字是通常用于训练各种图像处理系统。该数据库还广泛用于机器学习领域的培训和测试。MNIST数据集共有训练数据60000项、测试数据10000项。每张图像的大小为28*28(像素),每张图像都为灰度图像,位深度为8(灰度图像是0-255)。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:① 下载并安装PyCharm;② 创建Python文件,部署PyTorch;③ 下载测试数据集、训练数据集和验证数据集; ④ 编写代码,实现手写体识别;⑤ 运行代码,生成结果。四、 实验步骤4.1 安装PyCharm1.下载PyCharm进入云主机,打开左侧Firefox浏览器,搜索https://www.jetbrains.com.cn/en-us/pycharm/download/download-thanks.html?platform=linux点击下载PyCharm。下载好后是一个压缩文件,选择将文件压缩到此处。解压后目录内容显示如下。2.安装PyCharm双击进入bin目录,双击PyCharm图标打开PyCharm。在PyCharm的左下角单击图标打开终端。进入到终端后输入命令进入到bin目录下。cd 下载cd pycharm-2024.2.1cd bin输入命令执行脚本。sh ./pycharm.sh执行完命令后会自动弹出窗口,选择“开始30天免费试用”。4.2 下载PyTorch框架1.新建目录打开PyCharm,单击左上角图标在弹出的菜单中选择“新建>目录”。目录名称输入:demo。2.新建文件在PyCharm左侧新建的demo目录单击鼠标右键,在打开的菜单中选择“新建>Python文件”。输入Python文件的名字,自定义即可。3.部署Python框架新建好后,在左侧找到新建好的Python文件双击打开。单击左下角图标打开终端。在终端输入命令,部署Python框架。pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu4.3 数据集介绍1.创建目录在同一项目目录下创建文件夹data,在data目录下创建mnist目录。2.数据集详细介绍1)测试集图片,包含10000张图。t10k-images.idx3-ubyte2)标签集,包含10000张测试集图片所对应的标签。t10k-labels.idx1-ubyte3)训练集和验证集,包含55000张训练集和5000张验证集图片。train-images.idx3-ubyte4)标签集,包含训练集图片所对应的标签。train-labels.idx1-ubyte4.4 编写代码1.创建和编写文件在demo目录下新建一个py文件进行代码编辑。import torchimport numpy as npfrom matplotlib import pyplot as pltfrom torch.utils.data import DataLoaderfrom torchvision import transformsfrom torchvision import datasetsimport torch.nn.functional as F"""卷积运算 使用mnist数据集,和10-4,11类似的,只是这里:1.输出训练轮的acc 2.模型上使用torch.nn.Sequential"""batch_size = 64learning_rate = 0.01momentum = 0.5EPOCH = 10transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])# softmax归一化指数函数,其中0.1307是mean均值和0.3081是std标准差train_dataset = datasets.MNIST(root='./data/mnist', train=True, transform=transform,download=True) # 本地没有就加上download=Truetest_dataset = datasets.MNIST(root='./data/mnist', train=False, transform=transform,download=True) # train=True训练集,=False测试集train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)fig = plt.figure()for i in range(12): plt.subplot(3, 4, i+1) plt.tight_layout() plt.imshow(train_dataset.train_data[i], cmap='gray', interpolation='none') plt.title("Labels: {}".format(train_dataset.train_labels[i])) plt.xticks([]) plt.yticks([])plt.show()# 训练集乱序,测试集有序class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = torch.nn.Sequential( torch.nn.Conv2d(1, 10, kernel_size=5), torch.nn.ReLU(), torch.nn.MaxPool2d(kernel_size=2), ) self.conv2 = torch.nn.Sequential( torch.nn.Conv2d(10, 20, kernel_size=5), torch.nn.ReLU(), torch.nn.MaxPool2d(kernel_size=2), ) self.fc = torch.nn.Sequential( torch.nn.Linear(320, 50), torch.nn.Linear(50, 10), ) def forward(self, x): batch_size = x.size(0) x = self.conv1(x) # 一层卷积层,一层池化层,一层激活层(图是先卷积后激活再池化,差别不大) x = self.conv2(x) # 再来一次 x = x.view(batch_size, -1) # flatten 变成全连接网络需要的输入 (batch, 20,4,4) ==> (batch,320), -1 此处自动算出的是320 x = self.fc(x) return x # 最后输出的是维度为10的,也就是(对应数学符号的0~9)model = Net()# Construct loss and optimizer ------------------------------------------------------------------------------criterion = torch.nn.CrossEntropyLoss() # 交叉熵损失optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=momentum) # lr学习率,momentum冲量# Train and Test CLASS --------------------------------------------------------------------------------------# 把单独的一轮一环封装在函数类里def train(epoch): running_loss = 0.0 # 这整个epoch的loss清零 running_total = 0 running_correct = 0 for batch_idx, data in enumerate(train_loader, 0): inputs, target = data optimizer.zero_grad() # forward + backward + update outputs = model(inputs) loss = criterion(outputs, target) loss.backward() optimizer.step() # 把运行中的loss累加起来,为了下面300次一除 running_loss += loss.item() # 把运行中的准确率acc算出来 _, predicted = torch.max(outputs.data, dim=1) running_total += inputs.shape[0] running_correct += (predicted == target).sum().item() if batch_idx % 300 == 299: # 不想要每一次都出loss,浪费时间,选择每300次出一个平均损失,和准确率 print('[%d, %5d]: loss: %.3f , acc: %.2f %%' % (epoch + 1, batch_idx + 1, running_loss / 300, 100 * running_correct / running_total)) running_loss = 0.0 # 这小批300的loss清零 running_total = 0 running_correct = 0 # 这小批300的acc清零 # torch.save(model.state_dict(), './model_Mnist.pth') # torch.save(optimizer.state_dict(), './optimizer_Mnist.pth')def test(): correct = 0 total = 0 with torch.no_grad(): # 测试集不用算梯度 for data in test_loader: images, labels = data outputs = model(images) _, predicted = torch.max(outputs.data, dim=1) # dim = 1 列是第0个维度,行是第1个维度,沿着行(第1个维度)去找1.最大值和2.最大值的下标 total += labels.size(0) # 张量之间的比较运算 correct += (predicted == labels).sum().item() acc = correct / total print('[%d / %d]: Accuracy on test set: %.1f %% ' % (epoch+1, EPOCH, 100 * acc)) # 求测试的准确率,正确数/总数 return acc# Start train and Test --------------------------------------------------------------------------------------if __name__ == '__main__': acc_list_test = [] for epoch in range(EPOCH): train(epoch) # if epoch % 10 == 9: #每训练10轮 测试1次 acc_test = test() acc_list_test.append(acc_test) plt.plot(acc_list_test) plt.xlabel('Epoch') plt.ylabel('Accuracy On TestSet') plt.show()当代码编写完毕后在导包的部分会出现爆红(在包名下面会出现红色波浪线)的情况,直接将鼠标放到爆红(代码下方会出现)部分,会自动弹出下载,然后点击“下载”即可。如果没有弹出下载,请打开终端,在终端输入命令:pip3 install matplotlib 指令下载。2.代码部分讲解1)导入数据包首先对于导包部分导入,Pytorch、NumPy、Matplotlib等库,用于进行深度学习模型的构建数据可视化。2)设置超参数这里定义了几个训练过程中的重要参数:batch_size:每次训练的样本数量;Learning_rate:学习率,用于控制模型权重更新的幅度;momentum:动量,用于加速训练过程中的权重更新;EPOCH:训练的总轮数。3)数据预处理这一串代码定义了数据预处理的流程,包括将图片转换为张量,并进行标准理。加载MNIST数据集,并将其分为训练集和测试集,同时用DataLoader来批量加载数据集。使用Matplotlib显示部分训练数据,以便直观地了解数据集。4)创建模型和函数定义一个卷积神经网络模型NET,包括两个卷积层和两个全连接层。创建模型实例,交叉熵损失函数和梯度下降的优化器。定义训练和测试的函数,分别用于训练模型和在测试集上评估模型性能训练函数。编写测试函数。最后是主函数,这里:1.对模型进行指定轮数的训练;2.在每个训练轮数后,测试模型性能,并将其准确记录下来;3.最后绘制测试集准确率随着训练轮数的变化图。4.5 运行结果生成代码编写完毕后右击鼠标,点击运行。运行后会出现手写体识别的结果,可以看到在数据集图片上放有Labels字样,后面紧跟着就是手写体识别后识别出来的数字。​运行结果中有loss损失函数,以及acc准确率,可以看到loss损失函数在慢慢的降低,而acc准确率在慢慢的升高。acc准确率提高的原因是因为训练轮数的不断增加,交叉熵损失衡量了模型预测与真实标签之间的差异。在训练过程中,优化器的目标是使损失函数最小化。随着训练轮数的增加,损失函数的值逐渐降低,这意味着模型的预测越来越接近真实标签,从而提高准确率。acc准确率折线图,横轴表示训练轮次,纵轴表示准确率,acc准确率的提高因为训练轮数的不断增加,模型通过不断地优化参数,逐步学习到数据中的特征和模式,减少预测误差,从而提高在测试集上的准确率。​至此,实验完毕。想了解更多手写体识别的内容可以访问:https://yann.lecun.com/exdb/mnist/想了解更多关于PyTorch框架的可以访问:https://pytorch.org/
  • [技术干货] 【开发者空间实践指导】搭建可自动伸缩的Discuz!论坛网站
    一、 案例介绍Discuz!论坛是全球成熟度最高、覆盖率最大的论坛软件系统之一。用户对论坛的访问可分为高峰期和平峰期,若论坛采用多服务器部署模式且满足高峰时期的负载需求,平峰期必有部分服务器处于闲置状态,增加了不必要的成本,也造成了资源浪费。AS弹性伸缩服务可帮助用户解决以上问题。当用户在论坛的服务器系统中应用弹性伸缩后,弹性伸缩可以根据用户设定的策略,自动地增加或减少服务器的数量,即可以在保证网站正常运转的同时节约成本。本实践以搭建可自动伸缩的Discuz!论坛为例,介绍了如何使用弹性伸缩服务搭建一个可自动增加或减少弹性云服务器数量的Web服务。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:华为云上搭建Discuz项目,初始web服务器为一台ECS资源;在AS弹性伸缩服务配置弹性伸缩策略并监控Discuz项目的web服务器;触发伸缩策略的增加/缩减服务器场景,使资源自动伸缩增加一台;两种场景下用户均可通过ELB正常访问到Discuz论坛网站。四、实验资源本次实验花费总计为10.8元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。云资源消耗/时时长弹性云服务器ECS X30.6876元/小时2负载均衡ELB0.383元/小时2弹性公网IP0.083元/小时2虚拟私有云VPC免费2网络安全组免费2云备份 CBR0.168元/小时2五、 资源配置与购买5.1 配置虚拟私有云VPC在浏览器中输入华为云网址:cid:link_2进入华为云首页。在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。在华为云首页,在搜索框中输入“虚拟私有云 VPC”,点击“控制台”进入虚拟私有云控制台页面。选择“北京四”,点击右上角的“创建虚拟私有云”按钮,进入创建虚拟私有云页面,按照下图配置完成虚拟私有云的创建。参考以下配置进行VPC的配置。区域华北-北京四名称vpc-DISCUZ(可自定义)企业项目default(可选择自己的其他项目,无则不填写)子网名称vpc-test(可自定义)可用区可用区15.2 配置弹性公网IP EIP浏览器切换到华为云主页,在搜索框中输入“弹性公网IP EIP”,单击下方的“控制台”进入弹性公网IP服务页面。点击右上角的“购买弹性公网IP”按钮,进行弹性公网IP的购买。参考以下配置完成弹性公网IP创建。计费模式按需计费区域华北-北京四线路全动态BPG公网带宽按带宽计费带宽大小1带宽名称自定义弹性公网IP名称discuz_ip(可自定义)企业项目default(可选择自己的其他项目,无则不填写)5.3 配置安全组点击“网络控制台”左侧菜单栏的“安全组”,点击右上角“创建安全组”来创建安全组并添加规则。参考以下配置完成安全组的创建。区域华北-北京四名称sg-DISCUZ(可自定义)企业项目default(可选择自己的其他项目,无则不填写)入方向规则22,3389,80,443,80805.4 购买ECS云主机浏览器切换到华为云主页,在搜索框中输入“弹性云服务器 ECS”点击进入弹性云服务页面。点击左上角的“购买弹性云服务器”。参考下列配置进行弹性云服务器ecs-DISCUZ01的购买。计费模式按需计费区域华北-北京四可用区可用区1CPU架构X86计算实例规格1vCPUs 4GiB(或者其他相似或以上规格)镜像公共镜像-CentOS-centOS7.6(本实验是基于Centos系统实现的,如因Centos下线停止更新导致对后续实验环境有要求的用户可以参考Centos停止维护解决方案 解决。存储与备份系统盘:高IO-40GiB数据盘:新增-高IO-500GiB-数量1-磁盘随实例释放虚拟私有云vpc-DISCUZ主网卡vpc-test安全组sg-DISCUZ弹性公网IP使用已有云服务器名称ecs-DISCUZ01(可自定义)登录凭证密码密码自定义企业项目default(可选择自己的其他项目,无则不填写)购买完ecs-DISCUZ01后,在弹性云服务器ECS列表页面,点击ecs-DISCUZ01后面的“更多”,选择“购买相同配置”。与ecs-DISCUZ01不同的是需要修改两处配置:1、弹性公网配置选择“暂不购买”。2、云服务器名称改为ecs-DISCUZ02,并设置登陆密码。配置完后点击立即购买即完成ecs-DISCUZ02资源的购买。5.5 配置弹性负载均衡ELB浏览器切换到华为云主页,在搜索框中输入“弹性负载均衡 ELB”,点击“控制台”跳转到弹性负载均衡ELB页面。点击右上角的“购买弹性负载均衡”按钮进行弹性负载均衡的购买配置。按照如下规格购买:实例类型共享型计费模式按需计费区域华北-北京四名称elb-discuz(可自定义)企业项目default(可选择自己的其他项目,无则不填写)所属VPCvpc-DISCUZ前端子网vpc-testIPv4地址自动分配IP地址弹性公网IP现在购买线路全动态BGP公网带宽按带宽计费带宽大小1点击“立即购买”后完成弹性负载均衡的配置购买。点击刚刚创建的ELB“elb-discuz”进入详情页面,然后点击右上角的“创建后端服务器组”。配置后端分配策略,然后点击下一步。名称server_group-discuz后端协议HTTP分配策略类型加权轮询算法添加后端服务器,服务器部署的服务端口为80,权重为1,然后点击“添加云服务器”按钮。将ECS服务器“ecs-DISCUZ02”选中,点击“确认”。配置业务端口为80,权重为1,点击下一步。确认信息无误后,点击“立即创建”。后端服务器组创建完毕。六、DISCUZ!网站搭建6.1 搭建数据库1、在搜索框中输入“弹性云服务器 ECS”点击进入弹性云服务页面,点击ecs-DISCUZ01服务器后面的“远程登录”远程登录云服务器ecs-DISCUZ01。弹出框下滑选择VNC方式页面登录服务器。填写用户名:root,回车,密码:购买ecs时设置的密码,回车,即可登录。2、依次在控制台中执行以下命令,安装MySQL并启动MySQL服务。wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-community-server --nogpgchecksystemctl start mysqldsystemctl enable mysqld3、查看MySQL运行状态。systemctl status mysqld.service4、执行以下命令,获取安装MySQL时自动设置的root用户密码,记录好,后面使用。grep 'temporary password' /var/log/mysqld.log5、执行以下命令,并按照下图回显提示信息进行操作,加固MySQL。mysql_secure_installation6、执行以下命令,再根据提示输入数据库管理员root账号的密码进入数据库。mysql -u root -p7、执行以下命令,使用MySQL数据库。use mysql;8、执行以下命令,查看用户列表。select host,user from user;9、执行以下命令,刷新用户列表并允许所有IP对数据库进行访问。update user set host='%' where user='root' LIMIT 1;10、执行以下命令,强制刷新权限。允许同一子网中设置为允许访问的云服务器通过私有IP对MySQL数据库进行访问。flush privileges;11、执行以下命令,退出数据库。quit12、执行以下命令,重启MySQL服务。systemctl restart mysqld13、执行以下命令,设置开机自动启动MySQL服务。systemctl enable mysqld14、执行以下命令,关闭防火墙。systemctl stop firewalld.service15、重新查看防火墙状态是否为关闭。systemctl status firewalld6.2 搭建web环境1、将弹性公网IP从云服务器ecs-DISCUZ01上解绑,并绑定至云服务器ecs-DISCUZ02上。点击“ecs-DISCUZ01”,进入ecs-DISCUZ01详情页。切换到“弹性公网IP”页面,点击“解绑”。解绑成功后,点击“ecs-DISCUZ02”,进入ecs-DISCUZ02详情页,同样切换到“弹性公网IP”页面,点击“绑定”,将discuz_ip绑定到ecs-DISCUZ02。2、参考远程登录云服务器ecs-DISCUZ01方式,远程登录云服务器ecs-DISCUZ02;3、安装Web环境:依次执行以下命令,安装MySQL。wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-community-server --nogpgcheck4、执行以下命令,安装Apache服务器、PHPFastCGI管理器、MySQL客户端和MySQL数据库服务器。yum install epel-releaserpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmyum -y install php74-php-devel php74-php.x86_64 php74-php-cli.x86_64 php74-php-common.x86_64 php74-php-gd.x86_64 php74-php-ldap.x86_64 php74-php-mbstring.x86_64 php74-php-mcrypt.x86_64 php74-php-pdo.x86_64 php74-php-mysqlnd php74-php-fpm php74-php-opcache php74-php-pecl-redis php74-php-pecl-mongodb php74-php-xml httpd mysql mysql-server回显如下,说明安装成功。Complete!5、配置Web环境:执行以下命令,启动httpd服务service httpd start6、执行以下命令,设置开机自动启动httpd服务。chkconfig httpd on7、执行以下命令,启动php-fpm服务。service php74-php-fpm start8、执行以下命令,设置开机自动启动php-fpm服务。chkconfig php74-php-fpm on9、执行以下命令,关闭防火墙。systemctl stop firewalld.service10、执行以下命令,重新查看防火墙状态是否为关闭。systemctl status firewalld11、执行以下命令,启动MySQL服务。systemctl start mysqld12、执行以下命令,设置开机自动启动MySQL服务。systemctl enable mysqld.service6.3 部署网站代码1、继续在ecs-DISCUZ02服务器上执行以下命令,安装Discuz软件。wget https://gitee.com/Discuz/DiscuzX/releases/download/v3.5-20231001/Discuz_X3.5_SC_UTF8_20231001.zip2、执行以下命令,解压Discuz安装包。unzip Discuz_X3.5_SC_UTF8_20231001.zip3、执行以下命令,将解压后的“upload”文件夹下的所有文件复制到“var/www/html”路径下。cp -r upload/* /var/www/html4、执行以下命令,将写权限赋予给其他用户。chmod -R 777 /var/www/html5、在浏览器里输入地址:http://弹性公网IP地址进入安装界面,按照Discuz安装向导进行安装。a.确认协议,并单击“我同意”。b.开始安装后,检查安装环境并单击“下一步”。c.设置运行环境,并单击“下一步”。d. 安装数据库,填写数据库信息,单击“下一步”完成安装。①数据库服务器地址即为ecs-DISCUZ01的私有IP地址。②数据库密码是ecs-DISCUZ01配置的数据库管理员root账号的密码。自定义管理员信息。6.4 验证搭建结果1、在浏览器中输入:http://弹性公网IP地址/forum.php 可登录论坛主页则说明网站搭建成功。2、后台管理页面:http://弹性公网IP地址/admin.php七、AS弹性伸缩扩容缩容验证7.1 创建伸缩配置浏览器切换到华为云主页,控制台输入“弹性伸缩 AS”,点击控制台进入弹性伸缩服务首页。点击右上角“创建伸缩配置”。参考下列截图配置进行伸缩配置创建。计费模式按需计费区域华北-北京四名称as-config-discuz(可自定义)配置模板使用新模板cpu架构x86计算规格1vCPUs 2GiB(可购买其他相同或者更高规格的配置)镜像ecs-discuz私有镜像参考创建私有镜像步骤创建磁盘云硬盘:系统盘:高,IO-100GiB数据盘:高IO-100GiB安全组sg-DISCUZ弹性公网IP不使用登录方式密码密码自定义伸缩配置参数配置完成后,单击“立即创建”。7.2 创建弹性伸缩组在“弹性伸缩 AS”主页右上角,单击“创建弹性伸缩组”。参考下列截图配置进行弹性伸缩组创建。区域华北-北京四可用区可用区1, 可用区2, 可用区3, 可用区7多可用区扩展策略均衡分布名称as-group-discuz(可自定义)最大实例数(台)50期望实例数(台)0最小实例数(台)0伸缩配置as-config-discuz虚拟私有云vpc-DISCUZ子网vpc-test负载均衡使用弹性负载均衡负载均衡器:elb-discuz后端云服务器组:server_group-discuz后端端口:80权重:1IP协议版本:IPv4实例移除策略根据较早创建的配置较早创建的实例弹性公网IP释放数据盘删除健康检查方式负载均衡健康检查健康检查间隔5分钟健康状况检查宽限期(秒)600企业项目default(可选择自己的其他项目,无则不填写)弹性伸缩组参数配置完成后,单击“立即创建”返回弹性伸缩组列表,若伸缩组为“已启用”状态,说明伸缩组创建成功。7.3 添加伸缩策略在已创建的弹性伸缩组“as-group-discuz”所在行,单击操作列的“查看伸缩策略”。在伸缩策略页面单击“添加伸缩策略”。参考下列截图配置进行弹性策略as-policy-discuz01的创建,即当系统连续3次监控到CPU使用率超过70%时,触发伸缩策略as-policy-discuz01,伸缩组会增加一台弹性云服务器。策略名称as-policy-discuz01策略类型告警策略告警规则现在创建告警规则名称as-alarm-cpu-01监控类型系统监控触发条件CPU使用率—最大值—>--70监控周期5分钟连续出现次数3企业项目default(可选择自己的其他项目,无则不填写)告警策略类型简单策略执行动作增加—1—个实例冷却实践(秒)900点击“确定”进行创建。参考下列截图配置进行弹性策略as-policy-discuz02的创建,即当系统连续3次监控到CPU使用率低于30%时,触发伸缩策略as-policy-discuz02,伸缩组会减少一台弹性云服务器。策略名称as-policy-discuz02策略类型告警策略告警规则现在创建告警规则名称as-alarm-cpu-02监控类型系统监控触发条件CPU使用率—最大值—<--30监控周期5分钟连续出现次数3企业项目default(可选择自己的其他项目,无则不填写)告警策略类型简单策略执行动作减少—1—个实例冷却实践(秒)900点击“确定”进行创建。返回列表查看两个伸缩策略创建完毕并启用。7.4 手动移入待检测主机单击伸缩组as-group-discuz名称进入伸缩组详情页面。切换到“伸缩实例”页签,将ecs-DISCUZ02手动移入伸缩组中。点击“确定”。修改最小实例数。修改最小实例数的目的是为保证ecs-DISCUZ02不被伸缩活动移出伸缩组。单击页面右上角的“修改伸缩组”。修改最小实例数为1,确认。7.5 验证弹性伸缩1、登录http://弹性公网IP地址/admin.php确认discuz论坛可以正常使用。2、控制台输入“弹性云服务器 ECS”跳转弹性云服务器列表,然后登录部署网站的ecs-DISCUZ02机器上。3、构造cpu超过70%场景执行以下命令创建模拟cpu内存占用脚本。vim cpu.sh单击键盘上的“i”键,进入vim的INSERT模式。通过“复制粘贴”按钮将以下代码复制到服务器中。该脚本主要是为了模拟虚拟机内存到达100%的场景,执行脚本后,输入10,则会将虚拟机内存提升至100%,再输入0之后就会停止内存占用。#!/bin/bashread -p "please input a num:(0:stop;10:CPU100%):" numif [ $num -eq 8 ]; thenpkill -9 ddfor i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l | awk '{print $1-1}')); dodd if=/dev/zero of=/dev/null &doneelif [ $num -eq 10 ]; thenpkill -9 ddfor i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l)); dodd if=/dev/zero of=/dev/null &doneelif [ $num -eq 0 ]; thenpkill -9 ddelseecho "input error"fi按“Esc”按键,然后按“Shift+:”,输入“wq”,回车保存脚本。输入“sh cpu.sh”后回车,开始执行脚本。输入“10”,开始模拟内存占用到达100%场景。4、返回云服务器列表,点击服务器边上的“监控”图标,观察ecs机器cpu指标,返回弹性伸缩详情页面,点击监控也可以查看CPU使用情况。5、弹性伸缩详情页面的活动历史标签中可以查看到弹性伸缩已触发的通知。返回云服务器列表也可以查看到新扩容的虚拟机。6、登录http://弹性公网IP地址/admin.php确认discuz论坛是否可以正常使用。7、模拟cpu使用率低于30%,弹性伸缩缩减主机功能。登录ecs-DISCUZ02机器,执行以下命令再次运行脚本。sh cpu.sh输入“0”,回车,将内存占用程序停止。待CPU内存降下来之后,弹性伸缩详情页面的活动历史标签中可以查看到弹性伸缩触发了主机移除策略,新扩容的虚拟机也会被回收8、登录http://弹性公网IP地址/admin.php确认discuz论坛是否可以正常使用。至此基于公有云上可自动伸缩的Discuz!论坛网站搭建完毕。八、Discuz!论坛网站镜像制作步骤8.1 创建云服务器备份存储库控制台搜索“云备份 CBR”,跳转到“云备份”主页,左侧菜单点击“云服务器备份”,进入云服务器备份页面。点击右上角的“购买云服务器备份存储库”,参考下面的配置进行云备份配置。计费模式按需计费区域华北-北京四保护类型备份备份数据冗余单AZ备份选择服务器暂不配置存储库容量600GB自动扩容暂不配置备份策略暂不配置企业项目default(可选择自己的其他项目,无则不填写)存储库名称valut-discuz(自定义)8.2 创建私有镜像登录“云服务器控制台”,点击左侧菜单中的“镜像服务”,点击“私有镜像”,然后单击右上角的“创建私有镜像”参照下列参数进行私有镜像创建区域华北-北京四创建方式创建私有镜像镜像类型整机镜像选择镜像源云服务器云服务器ecs-DISCUZ02(或者自己创建的的discuz资源服务器)云服务器备份存储库valut-discuz(5.1步骤创建)名称ecs-discuz(自定义)企业项目default(可选择自己的其他项目,无则不填写)
  • [技术干货] 【开发者空间实践指导】云主机安装Docker并制作自定义镜像在ModelArts平台做模型训练
    一、 案例介绍在AI业务开发以及运行的过程中,一般都会有复杂的环境依赖需要进行调测并固化。面对开发中的开发环境的脆弱和多轨切换问题,在ModelArts的AI开发最佳实践中,通过容器镜像的方式将运行环境进行固化,以这种方式不仅能够进行依赖管理,而且可以方便的完成工作环境切换。配合ModelArts提供的云化容器资源使用,可以更加快速、高效的进行AI开发与模型实验的迭代等。本案例将指导开发者如何在云主机上安装Docker制作一个自定义模型镜像并在ModelArts平台使用这个镜像作模型训练。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:在云主机上安装docker;制作模型训练镜像并上传到SWR;在云主机创建训练脚本,使用浏览器打开OBS服务,上传训练脚本;在ModelArts平台创建训练作业完成模型训练。四、实验资源本次实验花费总计为1.1元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。资源名称规格单价(元)时长(h)开发者空间-云主机免费版免费1OBS资源包40G1元/月1ModelArts免费体验版免费1五、操作步骤1、在云主机安装Docker进入云主机后,点击左面菜单的“终端”按钮,打开命令行工具。在命令行中输入以下命令安装Docker:curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh输入命令“sudo docker info” 确认Docker已经安装完毕。接下来需要配置镜像加速,输入命令“vim /etc/docker/daemon.json”编辑docker配置文件,单击“i”键进入插入模式,然后输入以下内容:{"registry-mirrors": [ "https://a3cc4b6f1d0747bda78ca8d86e4c5419.mirror.swr.myhuaweicloud.com" ]}输入完成后,按“Esc”退出插入模式,再输入“:wq”保存文件,再输入“sudo systemctl restart docker”命令重启docker,然后输入命令“sudo docker info”查看,显示如下信息则表示镜像加速配置完成。2、准备制作镜像的必要文件确认安装好Docker以后,在当前目录使用命令“mkdir -p context”创建文件夹使用“cd context/”命令进入context文件夹。使用“vim pip.conf”命令编辑pip源文件pip.conf ,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。[global]index-url = https://repo.huaweicloud.com/repository/pypi/simpletrusted-host = repo.huaweicloud.comtimeout = 120使用wget命令下载“torch*.whl ”文件,一共三个文件wget https://download.pytorch.org/whl/cu111/torch-1.8.1%2Bcu111-cp37-cp37m-linux_x86_64.whlwget https://download.pytorch.org/whl/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whlwget cid:link_0使用“wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.12.0-Linux-x86_64.sh”命令,下载Miniconda3 py37 4.12.0安装文件将上述pip源文件、torch*.whl文件、Miniconda3安装文件放置在context文件夹内,完成上述操作后context文件夹内容如下。context├── Miniconda3-py37_4.12.0-Linux-x86_64.sh├── pip.conf├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl└── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl使用“vim Dockerfile”创建编辑Dockerfile文件,填入以下内容# 容器镜像构建主机需要连通公网# 基础容器镜像, https://github.com/NVIDIA/nvidia-docker/wiki/CUDA# # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds# require Docker Engine >= 17.05## builder stageFROM nvidia/cuda:11.1.1-runtime-ubuntu18.04 AS builder# 基础容器镜像的默认用户已经是 root# USER root# 使用华为开源镜像站提供的 pypi 配置RUN mkdir -p /root/.pip/COPY pip.conf /root/.pip/pip.conf# 复制待安装文件到基础容器镜像中的 /tmp 目录COPY Miniconda3-py37_4.12.0-Linux-x86_64.sh /tmpCOPY torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl /tmpCOPY torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl /tmpCOPY torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl /tmp# https://conda.io/projects/conda/en/latest/user-guide/install/linux.html#installing-on-linux# 安装 Miniconda3 到基础容器镜像的 /home/ma-user/miniconda3 目录中RUN bash /tmp/Miniconda3-py37_4.12.0-Linux-x86_64.sh -b -p /home/ma-user/miniconda3# 使用 Miniconda3 默认 python 环境 (即 /home/ma-user/miniconda3/bin/pip) 安装 torch*.whlRUN cd /tmp && \ /home/ma-user/miniconda3/bin/pip install --no-cache-dir \ /tmp/torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl \ /tmp/torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl \ /tmp/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl# 构建最终容器镜像FROM nvidia/cuda:11.1.1-runtime-ubuntu18.04# 安装 vim和curl 工具(依然使用华为开源镜像站)RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ apt-get update && \ apt-get install -y vim curl && \ apt-get clean && \ mv /etc/apt/sources.list.bak /etc/apt/sources.list# 增加 ma-user 用户 (uid = 1000, gid = 100)# 注意到基础容器镜像已存在 gid = 100 的组,因此 ma-user 用户可直接使用RUN useradd -m -d /home/ma-user -s /bin/bash -g 100 -u 1000 ma-user# 从上述 builder stage 中复制 /home/ma-user/miniconda3 目录到当前容器镜像的同名目录COPY --chown=ma-user:100 --from=builder /home/ma-user/miniconda3 /home/ma-user/miniconda3# 设置容器镜像预置环境变量# 请务必设置 PYTHONUNBUFFERED=1, 以免日志丢失ENV PATH=$PATH:/home/ma-user/miniconda3/bin \ PYTHONUNBUFFERED=1# 设置容器镜像默认用户与工作目录USER ma-userWORKDIR /home/ma-user完成编辑后,按“Esc”键退出编辑模式,输入“:wq”命令保存文件。完成操作后,使用“ll”命令查看context文件夹内容如下context├── Dockerfile ├── Miniconda3-py37_4.12.0-Linux-x86_64.sh ├── pip.conf ├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl ├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl └── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl3、制作镜像并上传SWR在context文件夹下,输入“sudo docker build . -t pytorch:1.8.1-cuda11.1”命令构建镜像。此过程需要5-8分钟,可以先进行下面的步骤。打开火狐浏览器,进入华为云首页,依次选择“产品”>“容器”>“容器镜像服务SWR”,进入服务页面,然后点击“控制台”进入SWR控制台页面。点击右上角的“创建组织”按钮,输入组织名,点击“确定”。如果已经有可用的组织,此步骤可以跳过。然后回到总览页面,点击上方的“登录指令”按钮,复制弹出的docker命令,在此命令前面加上“sudo ”然后在云主机的终端命令行输入,显示“Login Succeeded”则表示登录成功。使用下列命令给新做好的镜像打标签sudo docker tag pytorch:1.8.1-cuda11.1 swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例​sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1使用下列命令将镜像上传到SWRsudo docker push swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例sudo docker push swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的自定义镜像。4、创建OBS桶和文件夹并上传训练脚本在华为云首页,依次选择“产品”>“存储”>“对象存储服务OBS”,进入服务页面,然后点击“购买”进入资源包购买页面。按照如下规格购买:区域选择上面步骤创建SWR组织的区域资源包类型存储包-标准存储多AZ包规格40G购买时长一个月生效时间支付完成后立即生效购买完成后,在控制台页面左面的菜单中,点击“桶列表”。然后点击右上角“创建桶”按钮,进入创建页面,按照如下规格创建:区域选择上面购买资源包的区域桶名称自行定义数据冗余存储策略多AZ存储-标准存储桶策略私有其他默认即可,不需要更改创建好桶后,就可以在桶列表页面看到,点击桶的名称链接进入桶的详情页。点击“新建文件夹”按钮,创建一个名为“pytorch”的文件夹,在此文件夹下再创建两个子文件夹,分别命名“log”和“demo-code”。Demo-code文件夹存放训练脚本,log文件夹存放训练日志。回到命令行窗口,在context文件夹下,使用vim pytorch-verification.py命令新建编辑训练脚本,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。import torchimport torch.nn as nnx = torch.randn(5, 3)print(x)available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")y = torch.randn(5, 3).to(available_dev)print(y)新建好脚本后,回到OBS控制台页面,进入到demo-code文件夹,将脚本上传到demo-code文件夹下。点击“添加文件”,在/developer/context目录下,选择刚刚创建的pytorch-verification.py文件,点击“打开”,完成上传。5、在ModelArts上创建训练作业在华为云首页,依次选择“产品”>“人工智能”>“AI开发平台ModelArts”,进入服务页面,点击“控制台”按钮,进入控制台页面。第一次使用ModelArts平台,会提示权限不足,需要授权OBS服务和SWR服务。点击上面红框的“此处”的超链接,进入授权委托页面,选择“新增委托”,权限配置选择“普通用户”,然后点击“创建”按钮即可。重新回到ModelArts控制台页面,提示权限不足的红框就消失了,可以正常使用了。在左侧导航栏中选择“模型训练 > 训练作业”,默认进入“训练作业”列表。按照如下表格填入参数信息:创建方式选择自定义算法启动方式选择自定义镜像地址选择上面步骤创建的镜像代码目录设置2.4步骤创建的demo-code文件夹启动命令/home/ma-user/miniconda3/bin/python ${MA_JOB_DIR}/demo-code/pytorch-verification.py资源池选择公共资源池类型选择GPU或CPU规格永久保存日志打开作业日志路径设置2.4步骤创建的log文件夹训练作业创建完成后,后台将自动完成容器镜像下载、代码目录下载、执行启动命令等动作。训练作业一般需要运行一段时间。训练完成后,在OBS服务,我们创建的桶和log文件夹下找到训练日志并下载下来,在下载的日志文件中搜索关键字:tensor,看到如下信息表示训练成功。至此,实验完成。
  • [技术干货] 【开发者空间实践指导】基于Repo和流水线门禁的分支合并与部署
    一、 案例介绍流水线(CodeArts Pipeline)提供可视化、可编排的CI/CD持续交付软件生产线,帮助企业快速转型,实现DevOps持续交付高效自动化,缩短应用TTM(Time to Market)交付周期,提升研发效率。流水线本质上是一个可视化的自动化任务调度平台,需要配合软件开发生产线中编译构建、代码检查、测试计划、部署等服务的自动化任务使用。根据用户需要的场景,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行,避免频繁低效的手工操作。通过本次实验,可以学会通过CodeArts流水线来自定义编排云上任务,实现流水线门禁的分支合并与部署。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程​说明:购买弹性云服务器,创建虚拟私有云及安全组;登录云主机,购买CodeArts并创建CodeArts项目,创建代码质量门禁检查流水线;CodeArts IDE本地拉取云上代码;CodeArts IDE集成CodeArts Pipeline插件实现本地调用华为云云上流水线任务;云上流水线查看运行结果;进行分支合并,创建部署流水线。四、实验资源本次实验花费总计为1.55元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。资源名称规格单价(元)时长(h)弹性云服务器ECSX86计算,通用计算增强型| c6.large.4 | 2 vCPUs | 8 GiB CentOS 7.6 64bit (40GB)0.751弹性公网IP按流量计费 5Mbit/s0.8元/GB1CodeArts服务免费体验版免费1五、实验流程5.1 购买CodeArts已购买请跳过。在浏览器中输入华为云网址:cid:link_2进入华为云首页。在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。在华为云首页,依次选择“产品”>“开发与运维”>“软件开发生产线CodeArts”,进入CodeArts页面。​​点击“购买”按钮进入购买页面,选择“体验版”购买即可。5.2 创建CodeArts项目1、创建云上项目 购买服务后,点击立即使用,进入CodeArts首页,左上角选择“华北-北京四”,选择“Scrum”类型项目模板。​在打开的新建项目窗口,填写好项目名称(例:Scrum-demo),点击“确定”创建。创建云上仓库,进入Scrum-demo项目,点击左侧“代码代码托管新建仓库”。​选择 “模板仓库 Java Maven Demo”,点击“下一步”。​输入仓库名称,点击“确定”。​进入仓库,示例代码如下(如有自己的代码请参考“【开发者空间实践指导】软件开发生产线CodeArts初体验:一站式体验代码云上托管、构建、检查与修复-云社区-华为云 ”上传至仓库)。​2、CodeArts IDE本地代码拉取复制云上代码仓库地址。​登录云主机,双击打开CodeArts IDE。​点击CodeArts IDE 右上角的头像,登录华为云账号。​登录完毕,选择“克隆git仓库”, 输入云仓库地址,点击 “克隆”。​获取仓库的用户名和密码。​填写到Codearts IDE中。​云仓库与本地CodeArts IDE连接完毕。​5.3 创建代码质量门禁检查的流水线1、创建检查任务返回CodeArts项目,点击左侧“代码代码检查新建任务”。​修改任务名称,仓库选择为5.2中步骤2创建的仓库,点击“新建任务”。​2、创建构建任务点击左侧“持续交付编译构建新建任务”。​修改名称,点击“下一步”。​​选择“Maven模板”,点击“确定”。​点击右上方“保存”。3、创建流水线点击左侧“流水线新建流水线”。​修改流水线名称,点击“下一步”。​选择“空白模板”点击“确定”。​确定完成自动跳转流水线界面,点击“新建任务”,右侧跳出弹窗,选择“构建Build构建”,点击 “添加”。​调用的任务选择5.3步骤2创建的构建任务,仓库选择5.2步骤2创建的仓库,点击“确定”。​点击“并行任务”,右侧跳出弹窗,选择“代码检查Check代码检查”,点击“添加”。​同理选择5.3步骤1创建的检查任务,点击“确定”。添加门禁:点击“准出条件”,选择标准策略准出条件,点击“添加”。选择“系统策略”,点击“确定”,门禁添加已完成。点击右上方“保存并执行”,弹出来界面点击“执行”,等待执行结果。执行完毕,绿色为执行成功,红色为失败。​点击左侧“制品仓库软件发布库”,可以找到jar包,复制下载地址备用。​5.4 CodeArts IDE本地管理CodeArts流水线在CodeArts IDE中安装CodeArts Pipeline插件。​安装完成后,点击左侧的“DevSecOps”菜单栏(如没有请重启IDE),并切换自己项目所在的区域“北京四”,查询当前项目下的所有流水线,选择5.3创建的代码质量门禁流水线,点击三角号运行。​绿色代表执行完毕,此时切到流水线界面可以查看刚刚执行的流水线。​5.5 合并分支点击左侧“工作项需求管理迭代新建”。​选择 “task”,设置名称(例:修改代码demo)。​点击左侧“代码托管”,点击仓库,进入代码界面,点击“代码分支所有分支”,可以看到只有一个主分支master,点击“新建分支”。​设置分支名称(例:feature),关联工作项,选择上面创建的迭代task。点击“确定”。​点击“代码master”,下拉框选择刚刚创建的feature分支,模拟代码修改。​找到src下面的 “HelloWorld.Java”。点击编辑。​修改代码,点击“确定”。​点击右上角“新建合并请求”,模拟分支合并,点击“下一步”。​选择标题,并关联工作项,点击“新建合并请求”,点击“合入”。​合入完成后,点击代码,可以查看master代码已修改。​5.6 创建虚拟私有云和安全组在华为云首页,依次选择“产品”>“网络”>“虚拟私有云VPC”,进入服务页面,然后点击“开始使用”进入创建虚拟私有云页面。在创建页面,“名称”“子网名称”填入自己可以识别的名称,企业项目选择“default”,点击“立即创建”完成虚拟私有云的创建。​5.7 购买弹性云服务器浏览器登录华为云控制台,搜索ECS弹性云服务器,进入ECS界面,点击有上角购买弹性云服务器,ECS配置如下:配置项具体配置计费模式:按需计费区域/可用区华北-北京四 | 随机分配规格X86计算 | c6.large.4 | 2vCPUs | 8GiB操作系统镜像CentOS 7.6 64bit with ARM系统盘通用型SSD, 40GiB弹性公网IP全动态BGP | 按流量计费 | 5 Mbit/s | 随实例释放网络和安全组选择第二步购买的虚拟私有云,安全组没有可新建,入方向网段开放22,8080端口公网带宽按流量计费云服务器名称(自定义)登录凭证(自定义)购买量1购买弹性云服务器时,若无虚拟私有云VPC、安全组,需要新建;安全组也可以对全部开放22,8084端口(不建议,若通过云主机连接不到该服务器,可以尝试全开)。​​​点击“立即购买”完成购买,购买成功后可以看到服务器名称及公网ip等信息。​5.8 创建部署流水线1、创建主机集群进入CodeArts项目,点击“设置通用设置基础资源管理”,点击“新建主机集群”设置集群名称(例:scrum-demo-group),点击“添加或导入主机”,选择“通过ip手动添加”,输入5.6创建的服务器名称,IP地址为公网地址,输入用户名密码,端口22。​点击“确定”,等待一会可以看到导入成功。​2、创建部署任务点击“部署新建应用”,设置名称,点击“下一步”,选择“Tomcat应用部署”,点击“确定”。​点击“环境管理新建环境”,自定义环境名称,点击“确定”。​点击“导入主机”,选择5.7步骤1创建的主机集群,点击“保存”,等待成功即可。​点击“参数设置”,host_group默认值选择上一步新建环境名称,package_url为2.3.3的jar包地址,点击“保存”。​3、创建部署流水线点击“流水线新建流水线”,检查及构建步骤参照2.3,点击“新建阶段新建任务”,选择Deploy部署,点击“添加”,选择调度任务,host_group,关联构建任务,点击“确定”。​等待执行成功(也可以在本地IDE中查看运行该流水线,请参照5.4)。​至此本次实验全部内容完成。
  • [技术干货] 【开发者空间实践指导】使用函数工作流部署画图工具Excalidraw
    一、 案例介绍函数工作流FunctionGraph是一项基于事件驱动的函数托管计算服务,只需要编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。本案例将指导开发者如何使用函数工作流15分钟部署Web版画图工具Excalidraw。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:① 用户访问函数工作流服务;② 创建函数;③ 从对象存储服务OBS中拉取函数代码;④ 创建APIG触发器;⑤ 触发执行函数;⑥ 访问画图工具Excalidraw。四、实验步骤4.1创建函数在浏览器打开FunctionGraph主页:cid:link_2,点击“开始使用”并登录,区域选择“北京四”。点击“创建函数”。创建方式选择“创建空白函数”,基本信息填写如下:函数类型HTTP函数区域华北-北京四项目华北-北京四(默认)函数名称自定义企业项目默认委托名称未使用任何委托填写完成后点击“创建函数”。4.2上传函数代码点击“上传自”,选择“OBS地址”。将代码地址复制到文本框里,代码地址:cid:link_0。4.3创建触发器点击“创建触发器”。触发器信息填写如下:触发器类型API网关服务(APIG)API名称保持默认即可分组任意选择一个,如果没有可以点击“创建分组”,创建完成后点击刷新发布环境RELEASE安全认证NONE请求协议HTTPS后端超时时间5000(ms)点击“确定”。4.4访问服务复制APIG触发器的调用URL,在浏览器中打开,即可进行绘图。至此,使用函数工作流部署画图工具Excalidraw实验完毕。
  • [技术干货] 【开发者空间实践指导】基于云主机快速为Web项目添加AI助手
    一、 案例介绍借助华为云对话机器人服务 CBS您可以零代码创建一个大模型 RAG (Retrieval-Augmented Generation,即检索增强生成)应用,来实现 AI 助手的智能问答能力。本实验借助华为云CBS提供的可访问API,在项目代码中通过几行代码引入 AI 助手,用户就可以在网站上看到一个 AI 助手,实现与之对话。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:用户创建智能机器人,增加私有知识;准备SDK接入信息;在CodeArts IDE 上开发Web项目;在Web项目添加调用智能问答机器人服务的SDK;为了便于分享给其他人访问使用,可以将Web项目部署在弹性云服务器上。四、实验资源本次实验花费总计为1.1元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。资源名称规格单价(元)时长(h)弹性云服务器ECS鲲鹏计算,鲲鹏通用计算增强型 | kc2.large.2 | 2vCPUs | 4GiB Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB)0.31弹性公网IP按流量计费 5Mbit/s0.8元/GB1问答机器人免费体验版(14天有效期)免费1五、 实验步骤5.1创建智能问答机器人1.在浏览器中输入华为云网址:cid:link_6进入华为云首页。2.在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。3.在华为云首页,依次选择“产品”>“人工智能”>“智能问答机器人”,进入智能问答机器人 QABot页面。4.点击“立即使用”按钮进入管理页面。5.点击“购买问答机器人”按钮进入购买页面。6.选择“试用”购买即可。5.2增加私有知识登录对话机器人服务管理控制台,在左侧菜单栏中选择“智能问答机器人”。在机器人列表,点击“机器人管理”进入管理页面,页面如下图所示。对问答机器人添加私有知识可以从知识库和技能平台两个方面入手:知识库在“问答机器人”页面左侧导航栏中选择“知识库 > 问答管理”,在问答管理页面执行如下操作:1.在问答管理中单击按钮新建问题分类,例如“IT问题”。2在问答管理中单击“新建”创建问答语料,详细创建过程请参见管理问答语料。这里我们输入几个问答语料,在后面测试的时候使用。Q:忘记密码怎么办A:‌通过安全模式重置密码‌(无需密码重置磁盘)Q: 蓝屏了怎么办A:蓝屏后请重启PC,重启无效后,建议联系技术支持人员技能平台在“问答机器人”页面左侧导航栏中选择“技能平台 > 技能管理”,在技能管理页面执行如下操作:1.点击“添加技能”按钮选择感兴趣的类型,建议从“预置技能”入手,点击下一步,选择感兴趣的技能,点击确定完成配置。5.3部署Web项目本小节需要部署一个Python Web项目,可以是自己的项目,如果没有项目可以使用示例项目,代码地址如下:git clone https://github.com/nishaotang/huawei_cbs_demo.git1.进入云主机,打开终端。2.执行命令安装python:sudo apt-get install python-is-python33.验证python是否安装完成,出现图片所示表示我们python的环境变量已经配置完成:python4. 打开CodeArts IDE,点击“打开项目”选择事先准备好的python Web项目文件夹点击“打开“按钮,等待加载完毕。5. 本样例以Python Flask框架为例。在下方 bash面板中输入如下命令,完成flask安装:pip install flask6.使用如下命令启动项目,出现下图所示表示启动成功(app.py为入口文件):python app.py7.打开浏览器访问地址http://127.0.0.1:5000/展示效果如下:5.4调用AI助手实现智能问答1.登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。2.登录“我的凭证 > 项目”页面,获取待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。3.登录对话机器人服务管理控制台,在左侧菜单栏中选择“智能问答机器人”。在机器人列表,获取机器人ID(qabot_id)。4.安装SDK使用SDK前,需要安装“huaweicloudsdkcore”和“huaweicloudsdkcbs”。代码如下:# 安装核心库pip install huaweicloudsdkcore# 安装CBS服务库pip install huaweicloudsdkcbs5.认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。本示例中的ak和sk保存在环境变量中,运行本示例前请先在本地环境中配置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK,以及项目id和机器人ID,打开终端,输入以下命令打开环境变量配置文件:vi ~/.bashrc设置环境变量,保存文件并退出编辑器:export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" export HUAWEICLOUD_PROJECT_ID="已获取项目id"export HUAWEICLOUD_QABOT_ID="已获取机器id"输入以下命令使配置文件生效。source ~/.bashrc6.在CodeArts IDE项目中新建文件huawei_cbs.py,完整代码如下:# coding=utf-8import os,jsonfrom huaweicloudsdkcore.auth.credentials import BasicCredentialsfrom huaweicloudsdkcore.exceptions import exceptionsfrom huaweicloudsdkcore.http.http_config import HttpConfig# 导入CBS服务库huaweicloudsdkcbsfrom huaweicloudsdkcbs.v1.region.cbs_region import CbsRegionfrom huaweicloudsdkcbs.v1 import *def cbsUtil(question): # 使用默认配置,如出现'HttpConfig' is not defined报错,请检查是否已正确安装sdk config = HttpConfig.get_default_config() # 根据需要配置是否跳过SSL证书校验 config.ignore_ssl_verification = False # 默认连接超时时间为60秒,读取超时时间为120秒,支持统一指定超时时长timeout=timeout,或分别指定超时时长timeout=(connect timeout, read timeout) config.timeout = 10 # 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 # 请勿将认证信息硬编码到代码中,有安全风险。 ak = os.getenv('HUAWEICLOUD_SDK_AK') sk = os.getenv('HUAWEICLOUD_SDK_SK') project_id = os.getenv('HUAWEICLOUD_PROJECT_ID') qabot_id = os.getenv('HUAWEICLOUD_QABOT_ID') basic_credentials = BasicCredentials(ak, sk, project_id) # 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务CBS的 CbsClient 为例 client = CbsClient.new_builder() \ .with_http_config(config) \ .with_credentials(basic_credentials) \ .with_region(CbsRegion.value_of("cn-north-4")) \ .build() try: request = ExecuteQaChatRequest() request.qabot_id = qabot_id request.body = PostRequestsReq( question = question ) response = client.execute_qa_chat(request) #问答型机器人回复 if response.reply_type == 0: return response.qabot_answers.answers[0].answer #任务型机器人回复 elif response.reply_type == 1 : return response.taskbot_answers.answer #闲聊回复 elif response.reply_type == 2: return response.chat_answers.answer else: return '请求失败' except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) return e.error_msg7.修改app.py文件用于请求接口函数,添加如下代码:@app.route('/aiApi',methods=['POST'])def aiApi(): prompts = request.form.get('prompts') message = huawei_cbs.cbsUtil(prompts) print(message) return jsonify({'success': True,'message':message})8.修改前端js用于调用后端接口,代码如下:// 发送信息到后台 ajaxRequest = $.ajax({ url: '/aiApi', type: 'POST', data: data, success:function(response){ // 处理后端返回的响应 if (response.success) { //自定义回复显示代码 使用response.message } else { //自定义失败显示 } }, error: function(jqXHR, textStatus, errorThrown) { //自定义异常处理 }});9.调整完成后可以出现如下图所示效果。输入问题1:忘记密码怎么办?AI助手回答如下图所示:输入问题2:蓝屏了怎么办?AI助手回答如下图所示:至此,基于云主机的Web项目增加AI助手就体验完成。如果想让更多的人体验项目AI助手,可以将Web项目部署到弹性云服务器上,如没有弹性云服务器请参照 附录 操作,部署后就可以分享给其他人访问。附录一、创建虚拟私有云和安全组1.在华为云首页,依次选择“产品”>“网络”>“虚拟私有云VPC”,进入服务页面,然后点击“开始使用”进入创建虚拟私有云页面。2.在创建页面,“名称”“子网名称”填入默认名称,企业项目选择“default”,点击“立即创建”完成虚拟私有云的创建。二、购买弹性云服务器1.在华为云首页,依次选择“产品”>“计算”>“弹性云服务器 ECS”,进入弹性云服务器 ECS页面。2.点击“购买”按钮进入购买页面。3.按照如下规格购买:计费模式按需计费区域华北-北京四可用区可用区1、可用区2、可用区3、可用区4CPU架构鲲鹏计算规格鲲鹏通用计算增强型 | kc2.large.2 | 2vCPUs | 4GiB操作系统Huawei Cloud EulerOS版本Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB)存储与备份40 GiB网络和安全组选择步骤2.3购买的虚拟私有云公网带宽5Mbit/s云服务器名称(自定义)登录凭证(自定义)购买量14.点击“立即购买”完成购买。项目发布流程该手册不多赘述,详细部署过程请参考弹性云服务器ECS部署,项目部署后就可以分享给其他人体验。
  • [活动公告] 【开发者日武汉站】产品体验官:在开发者空间基于FunctionGraph实现Gif动图制作应用开发
    华为云开发者日·武汉站来啦!参加“基于FunctionGraph实现Gif动图制作应用开发”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】基于FunctionGraph实现Gif动图制作应用开发【活动时间】2024年10月16日-10月20日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“基于FunctionGraph实现Gif动图制作应用开发”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [技术干货] 【开发者空间实践指导】基于FunctionGraph实现Gif动图制作应用开发
    一、 案例介绍本实验是一个基于 FunctionGraph的 GIF动图制作工具。使用 API Gateway作为前端访问入口,通过 API Gateway触发器将用户的请求转发到 FunctionGraph中的GIF动图制作后端服务。使用该工具,用户可以上传自定义视频,然后设置截取时长进行 GIF动图生成。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程四、安装包下载下载应用源码到云主机,复制链接在浏览器中打开并下载。https://functiongraph-test-code.obs.cn-north-4.myhuaweicloud.com/%E9%99%84%E4%BB%B61%EF%BC%9Affmpeg-gif.zip五、GIF动图制作应用开发部署进入云主机,打开CodeArts IDE for java/python(以下统称为CodeArts IDE),点击右上角登录个人华为云账号,登录后,点击右侧“扩展”搜索“CodeArts FunctionGraph”点击安装该插件。方式二:本地安装前往鲲鹏社区官网下载插件CodeArts FunctionGraph到云主机,下载地址为:CodeArts IDE插件市场。在云主机桌面,打开CodeArts IDE开发环境,单击右侧“扩展”按钮,点击从本地安装,选择下载好的插件安装。六、创建函数在CodeArts IDE侧边工具栏找到FunctionGraph插件并打开,在插件中创建函数,选择HTTP函数。模板选择Hello World。函数名称可以设置为:gif_gen_demo。函数路径可以自由选择云主机上的文件夹。创建好函数之后,打开“工程“菜单可以看到刚创建的函数内容:七、修改函数将制作GIF动画应用代码复制到刚创建的函数,函数文件请在步骤四下载,将文件:templates、app、bootstrap采用拖拽的方式复制,同名的文件直接“替换”即可。tamplates/index.html是GIF动图工具前端页面;app.py为GIF动图工具后端逻辑方法,依赖FFmpeg实现动图生成;bootstrap为函数执行入口;template.yml是函数配置文件,函数部署成功后,可以函数详情页面找到对应的配置信息。这里需要将函数内存规格设置为512M。由于函数调用过程中、运行时会解析和缓存传入的event事件,这部分操作会消耗额外的内存,为避免函数实际使用时内存过大而触发OOM,所以将template.yml中MemorySize改为512。八、部署函数打开FunctionGraph插件,点击“…”,选择“部署函数”,选择创建好的函数:gif_gen_demo。部署区域选择华北-北京四。注意:选择部署在FunctionGraph插件支持区域也可以,但实验文档中提供的依赖包地址是北京四的桶域名地址,且依赖包大小超过了10M,无法通过“上传ZIP文件”方式上传依赖包(上传方式参考步骤九)。此时,您只能先将依赖包下载到本地,然后自己创建对应区域的OBS桶并将依赖包上传到自己桶里再创建依赖包,会产生额外费用。直接部署在北京四可以避免以上问题。部署成功后,可以在FunctionGraph插件中查看到刚部署的函数:gif_gen_demo。右键单击gif_gen_demo选择在浏览器打开函数详情页,如果浏览器没有登录会提示先登录。​浏览器查看函数详情页如下。​九、添加函数依赖包在函数详情页点击左上角函数名称左边的“<”返回到函数列表界面,然后进入“函数-依赖包管理”界面,也可以直接跳转。​单击“添加依赖包”,依赖包填写如下:依赖包名称用户自定义依赖包名称,自定以及可,可用:flask-ffmpeg-dep代码上传方式从OBS上传文件zip文件大于10M,不支“上传ZIP文件”方式OBS链接URLhttps://functiongraph-test-code.obs.cn-north-4.myhuaweicloud.com/flask-ffmpeg.zip提供的是北京四的桶域名下载地址,在其他区域使用该地址会报找不到资源错误运行时Python 3.6运行时语言及版本回到函数详情页面,下拉到页面底部,点击“添加依赖包”,选择刚刚创建的依赖包并确定。​​十、创建触发器gif_gen_demo函数详情界面,点击 “创建触发器”,触发器配置参考如下,“分组”没有的话可以点击“创建分组”进行创建API分组,点击确定创建。没有“分组”,创建“分组”回到创建触发器界面,刷新分组,选择新建的分组,其他内容填写如下:发布环境RELEASE正式发布API的环境,这里选择默认的线上环境安全认证None开启无认证模式,所有用户均可直接访问请求协议HTTPS APIG触发器调用URL的请求协议后端超时60000后端超时时间,单位毫秒,设置为最大值,避免网络等其他因素影响执行效果十一、访问制作GIF动图应用复制触发器“调用URL”浏览器访问制作GIF动图应用,可以使用步骤四下载的资料包中的demo视频进行测试。​点击“选择视频”选择资料包中提供的demo视频,设置截取的开始时间、截取时长,然后点击“开始制作”,完成GIF动图生成。​制作完成后可以下拉页面获取GIF动图。至此,基于FunctionGraph的制作GIF动图应用开发部署已完成。效果展示
  • [问题求助] 资源券必须要提交作品才能成功申请吗?
    资源券必须要提交作品才能成功申请吗?
总条数:43 到第
上滑加载中