专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

msprofiler性能调优命令行实战(口罩识别推理)

  案例介绍
  本案例使用口罩识别推理程序作为例子进行演示,硬件平台是华为昇腾310设备(Ascend310),该口罩识别使用目标检测中SSD模型,检测的结果有两个类别:戴口罩的脸、没戴口罩的脸。成功执行推理程序后我们对其进行了推理调优,使推理过程速度加快。
  代码、模型、数据的下载链接:
  https:gitee。compotatobeefmsprofilermaskdetection
  包含的主要内容:推理程序源码、原始模型文件、后处理开源代码、待推理的图片。
  本教程的视频讲解链接:https:www。bilibili。comvideoBV1Kd4y1x7M2环境准备
  Windows端
  MindStudio官网:https:www。hiascend。comsoftwaremindstudio
  推理服务器
  硬件平台:Ascend310arm64架构
  操作系统:Ubuntu18。04。6LTS
  软件包:
  Ascendcanntoolkit5。1。RC2linuxaarch64。run
  下载:https:www。hiascend。comsoftwarecanncommunity
  Ascendmindxsdkmxvision3。0。RC2linuxaarch64。run:
  下载:https:www。hiascend。comzhsoftwaremindxsdkmxVisioncommercial
  A3003000npudriver21。0。4。8linuxaarch64。run:
  下载:https:www。hiascend。comhardwarefirmwaredrivers?tagcommunity
  A3003000npufirmware1。80。22。5。220。run:
  下载:https:www。hiascend。comhardwarefirmwaredrivers?tagcommunity
  请参考昇腾软件快速部署指南:
  https:www。hiascend。comdocumentdetailzhquickinstallation22。0。RC2quickinstg300T9000300T900000001。htmlpython环境配置
  下载python3。9。12并安装
  wgethttps:www。python。orgftppython3。9。12Python3。9。12。tgz
  tarzxvfPython3。9。12。tgz
  cdPython3。9。12
  。configureprefix{installpythonpath}enableloadablesqliteextensionsenableshared
  makej32
  makeinstall
  cp{installpythonpath}liblibpython3。9。so。1。0usrlib
  cp{installpythonpath}liblibpython3。9。so。1。0usrlib64
  aliaspython3。9{installpythonpath}binpython3。9
  aliaspip3。9{installpythonpath}binpip3。9
  安装依赖的python包
  pip3。9installopencvpython
  pip3。9installgoogle
  pip3。9installprotobuf3。19AscendAPP项目创建
  简介
  MindStudio是华为开发的AI一站式开发环境,这里我们主要用到了代码编辑、代码上传下载、SSH远程连接功能。MindStudio在Windows上安装非常简单,大家请参照官网教程。
  项目创建
  可以点击菜单栏Open创建
  或者直接将文件夹拖入桌面MindStudio图标。
  SSH配置
  左上角FileSettings
  搜索ssh找到SSHConfigurations点击加号输入推理服务器IP、端口、用户名、密码,可以点击Savepassword(保存后就不用重复输入密码了)。最后点击OK。
  小提示:这里可以点击TestConnection按钮,测试SSH连接是否正常。
  菜单栏点击ToolsStartSSHsession
  点击对应的服务器,就打开了一个SSHsession。
  可以在下面的界面中输入命令,操作服务器。
  转换为昇腾项目
  说明:项目必须是一个昇腾项目才能使用菜单栏Ascend中的功能
  转换步骤
  菜单栏AscendConvertToAscendProject
  然后依次选择AscendApp、AscendACLApp,等待重新启动后完成创建
  在设置界面设置服务器CANN路径,按照自己安装的CANN路径选择,最后需要选择到5。1。RC1(这个名字和安装的CANN版本相同,点击OK后,需要等待一段时间完成CANN同步。
  部署配置
  点击加号新增一个
  选择刚才配置的SSH,这个配置好是通用的。
  Deploymentpath根据服务器情况自由选择即可。
  鼠标放在文件夹上点击右键,选择DeploymentUploadto。。。
  再点击我们配置好的Deployment,就把文件同步到服务器端了
  可以在RemoteTerminal查看文件,看到确实上传至服务器了。
  pb转离线模型
  命令行方式
  在facemaskdetectionmodels目录下运行:
  atcmodel。facemaskdetection。pbframework3output。facemaskoutputtypeFP32socversionAscend310inputshapedata1:1,260,260,3inputformatNHWCinsertopconf。facemask。aippconfigfusionswitchfile。fusionswitch。cfg
  facemaskdetection。pb是TensorFlow训练后的模型文件。我们这一步将这个模型转为了能在昇腾AI处理器上高效执行的模型。运行之后在当前目录下生成了facemask。om,这个就是稍后我们用到的模型。
  model指定要转换的pb文件,在models目录下面有下载好的facemaskdetection。pb文件
  output指定输出的om文件名字,会自动生成。om后缀。这个可以随意命名。
  outputtype建议指定为FP32
  socversion指定昇腾芯片型号。
  inputshape指定输入的尺寸
  inputformatNHWC输入数据格式。
  insertopconf指定配置aipp的配置文件,用于在AICore上完成数据预处理,在models文件夹下有配置文件facemask。aippconfig,参数具体含义可参考昇腾CANN文档
  https:www。hiascend。comdocumentdetailzhcanncommercial51RC1overviewindex。html
  fusionswitchfile模型融合配置文件
  可视化方式
  我们也可以选择使用MindStudio提供的ModelConverter来进行模型转换,操作上会简单一些。
  菜单栏AscendModelConverter
  ModelFile原始模型文件,选择facemaskdetection。pb
  ModelName转换后的模型名字
  TargetSoCversion按照服务器来选择
  OutputPath转换后模型输出路径,选择的是本地路径
  InputFormat输入数据的格式
  data1输入数据的形状、类型,按照图上所示设置
  数据预处理,与命令行一样,这里我们通过AIPP文件来设置。选择服务器models文件夹中自带的facemask。aippconfig文件即可。
  点击Next
  这里我们可以设置算子融合、额外参数、环境变量等。
  我们打开AdditionalArguments,填入
  fusionswitchfilehomeshandongdaxueworkspacefacemaskdetectionmodelsfusionswitch。cfg
  下面的CommandPreview是自动生成的命令,也就是将要执行的命令,基本与我们之前的一致。
  insertopconf路径与上一步设置的不一样,这是因为软件会自动提取AIPP文件里面的数据,生成这个文件,也就是说这个文件与我们的modelsfacemask。aippconfig内容一样。
  最后点击Finish,等待一段时间即可完成模型转换。
  最后日志如果输出Modelconvertedsuccessfully。代表转换成功了。
  说明
  当前昇腾AI处理器以及昇腾AI软件栈无法直接拿常用开源框架网络模型(如Caffe,TensorFlow等)来进行推理。如果想要进行推理则需要做一步模型转换的操作,也就是把开源框架的网络模型转换成Davinci架构专用的模型。而此处模型转换的步骤就是通过ATC工具完成的。
  昇腾张量编译器(AscendTensorCompiler,简称ATC)是昇腾CANN架构体系下的模型转换工具。它可以将开源框架的网络模型(如Caffe、TensorFlow等)以及AscendIR定义的单算子描述文件转换为昇腾AI处理器支持的离线模型。
  模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够在昇腾AI处理器上高效执行。ATC工具功能架构如下图所示。
  代码讲解
  推理代码核心讲解
  detectimage。py
  streamManagerApiStreamManagerApi()该类用于对流程的基本管理,包括加载流程配置、创建流程、向流程上发送数据、获得执行结果。
  CreateMultipleStreamsFromFile根据指定的配置文件创建多个Stream。
  MxDataInputStream接收的数据结构定义。
  SendData向指定Stream上的输入元件发送数据(appsrc)。阻塞式,不支持多线程并发。
  GetProtobuf获得Stream上的输出元件(appsink)的protobuf数据后处理过程。
  数据采集接口讲解
  detectimage。py
  当用户需要定位应用程序或上层框架程序的性能瓶颈时,可在Profiling采集进程内(acl。prof。start接口、acl。prof。stop接口之间)调用ProfilingpyACLAPI扩展接口(统称为msproftx功能),开启记录应用程序执行期间特定事件发生的时间跨度,并将数据写入Profiling数据文件,再使用Profiling工具解析该文件,并导出展示性能分析数据。
  ProfilingpyACLAPI:将采集到的Profiling数据写入文件,再使用Profiling工具解析该文件,并展现性能分析数据。
  在推理代码基础上新增部分代码,帮助我们分析推理过程。涉及的函数如下:
  importacl导入acl模块。
  acl。prof。createstamp()创建msproftx事件标记。
  后续调用函数mark、setstamptracemessage、push、rangestart接口时,需要以描述该事件的指针作为输入,表示记录该事件发生的时间跨度。同步接口。
  acl。prof。setstamptracemessage(stamp,stampMsg,msgLen)为msproftx事件标记携带字符串描述,在Profiling中解析并导出结果中msproftxsummary数据展示。同步接口。
  acl。prof。push和acl。prof。pop接口配对使用,完成单线程采集
  retacl。prof。push(stamp)
  retacl。prof。pop()
  msproftx用于记录事件发生的时间跨度的开始时间。同步接口。调用此接口后,Profiling自动在Stamp指针中记录开始的时间戳,将Eventtype设置为PushPop。
  push、pop接口:成对使用,表示时间跨度的开始和结束。
  retacl。prof。mark(stamp)
  msproftx标记瞬时事件。同步接口。调用此接口后,Profiling自动在Stamp指针中加上当前时间戳,将Eventtype设置为Mark,表示开始一次msproftx采集。
  详细可参考以下链接:
  https:www。hiascend。comdocumentdetailzhcanncommercial51RC1openformdevgopenatlasprofiling160024。html运行
  步骤一:main。pipeline文件修改
  修改main。pipeline中模型路径modelPath,使用推理服务器中绝对路径,文件就是上一步生成的离线模型facemask。om
  步骤二:detectimage。py文件修改
  修改pipelinepath,使用绝对路径
  步骤三:推理命令
  按照上述步骤修改路径后,上传至推理服务器。
  右键选择整个项目文件,也可以选择单个文件,DeploymentUploadto
  再点击我们配置好的Deployment,就把文件同步到服务器端了
  然后运行下面的命令
  运行命令
  homeshandongdaxueworkspacepython3。9。12binpython3。9detectimage。pyimagedemo1。jpg
  在当前目录下就会生成myresult。jpg
  调优
  目的:优化推理程序性能。
  如何判断推理程序是否需要进行性能优化:
  1、相同的模型在不用的硬件平台上跑出的性能数据不同,比如一个模型在GPU上跑推理耗时10ms,在NPU上跑耗时15ms,这个时候就可以考虑使用msprofiler进行性能调优了。
  2、追求极致,释放软硬件的澎湃性能,比如一个模型在NPU上跑耗时20ms,但随着应用场景的发展,性能无法满足业务诉求,需要将模型耗时优化到15ms或者要达到更高的性能10ms等等。
  Profiling数据采集命令
  Profiling数据采集的目的是通过数据分析出执行推理或训练过程中软件硬件的性能瓶颈。命令如下(注意路径全部使用绝对路径):
  homeshandongdaxueAscendascendtoolkit5。1。RC1toolsprofilerbinmsprofapplicationhomeshandongdaxueworkspacepython3。9。12binpython3。9homeshandongdaxueworkspacefacemaskdetectiondetectimage。pyhomeshandongdaxueworkspacefacemaskdetectionimagedemo1。jpgmsproftxonoutput。profilingdata
  参数介绍
  msprof命令使用绝对路径,替换为自己服务器相应的CANN安装目录。
  application配置为运行环境上AI任务文件,写入之前的推理命令
  msproftx控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。之前我们调用了acl。prof相关ProfilingAscendCLAPI扩展接口,所以这里选择on。
  output收集到的Profiling数据的存放路径
  等待一段时间后,终端输出Processprofilingdatacomplete。DataissavedinXXX。并且在目录下面生成了profilingdata目录,证明运行成功。
  msprof命令可以采集推理程序的Profiling性能数据,使用该方式采集并解析Profiling数据需确保应用工程或算子工程所在运行环境已安装Ascendcanntoolkit开发套件包。
  命令行格式如下:。msprofapplicationoutput
  执行完上述命令后,会在output目录下生成PROFXXX目录,PROFXXX目录保存Device侧或Host侧的原始Profiling数据以及timeline汇总数据。
  跟多细节请参考CANN文档:
  https:support。huawei。comenterprisezhdocEDOC11002340522cda32a0
  数据解析
  根据以下命令可得出智能调优建议:
  homeshandongdaxueworkspacepython3。9。12binpython3。9homeshandongdaxueAscendascendtoolkit5。1。RC1toolsprofilerprofilertoolanalysismsprofmsprof。pyexportsummarydir。profilingdataPROF00000120221114202456824ILOFOEMKALLAEGCBformatcsv
  说明
  在执行完导出summary数据命令python3msprof。pyexportsummarydirxxx后,会在屏幕打印相关性能调优建议
  dir指定数据采集的文件
  format格式
  运行结果见下图:
  运行结果摘要:pleasecheckandreducethetransData
  《性能调优建议》文档链接:
  https:www。hiascend。comdocumentdetailzhcanncommercial51RC1openformdevgopenatlasprofiling160045。html
  查询文档可知,基于整网性能数据transData算子数量优化建议的原则:(1)存在transData算子,且数量超过设定的阈值(2)需检查是否有使用transData算子的必要性。
  经过检查后,这里的transData算子是必要的,无法优化。
  timelinemsprof011。json数据说明
  将服务器端。profilingdata下载到Windows端,按照下面的路径找到msprof011。json文件,这个json文件记录着我们的推理程序执行过程中各个组件的运行时间。
  profilingdataPROF00000120221114202456824ILOFOEMKALLAEGCBtimelinemsprof011。json
  数据可视化:使用谷歌浏览器打开内置网页chrome:tracing
  将json文件拖进去或者是点击load加载文件,就可以看到如下图所示的页面
  有些部分耗时短,可视化后的图块小,需要界面缩放平移:
  WS按键放大缩小,AD按键左右平移;
  或者点击右侧的箭头,鼠标拖拉也可以控制。
  数据介绍
  各个组件的耗时数据说明:
  默认会显示所有组件耗时情况,一行就是一个组件的耗时情况,也可以选择只显示部分组件
  MsprofTx:msproftoolextension,MindStudio系统调优工具扩展。
  我们调用pyACL接口(例如acl。prof。push(stamp))会在MsprofTx显示采集的数据。
  AscendCL:AscendCL接口耗时情况,这个是系统自动采集的数据。
  TaskScheduler:推理代码耗时情况,主要涉及到模型内部算子调用。
  分析性能数据
  步骤一
  从timeline图中可以看到,CreateMultipleStreamsFromFile这段耗时比较长,这段耗时有5,645。052ms,很不正常,这块是通过msproftx进行打点输出的,见detectimage。py的如下代码
  通过排查代码看到,在增加性能调试代码的时候增加了sleep(5)的代码,可以删除此sleep代码,性能可以提升5s,然后我们重新导出数据看下结果
  时间变为了642。772ms,与我们之前分析的一致
  步骤二
  通过msproftx定位出的性能问题优化后是否还有可以优化的空间,需要继续进行分析,通过分析acl接口调用耗时,可以看到aclmdlLoadFromFileWithMem和aclmdlExecute接口耗时比较长,aclmdlLoadFromFileWithMem这个接口是从文件加载离线模型,涉及文件IO操作,耗时理论上会相对较长,所以重点分析aclmdlExecute接口耗时情况
  aclmdlExecute接口耗时7。209ms,这个接口主要耗时是算子在aicore上运行,可以分析om模型和算子耗时表(device0summaryopstatistic011。csv)进行深入调优,见下图:
  通过分析算子统计表,可以看到算子耗时最长的是Conv2D和BNInferenceD。除此之外,我们也可以通过om模型进行查看。
  om模型可视化
  在左边找到。om结尾的模型文件,然后双击一下,等待一会,就可视化出了模型图。
  可以看出来模型中有很多的Conv2D、BNInferenceD、Relu算子,所以我们可以考虑融合为一个算子,提高推理速度。
  修改图融合配置文件,打开算子融合规则,重新生成离线模型,命令如下
  atcmodel。facemaskdetection。pbframework3output。facemaskfusion115outputtypeFP32socversionAscend310inputshapedata1:1,260,260,3inputformatNHWCinsertopconf。facemask。aippconfigfusionswitchfile。fusionswitchnew。cfg
  如果使用可视化方法生成模型,只需要按照下图修改fusionswitchfile,其他步骤不变。
  融合后的模型图见下图:
  融合后的算子耗时表见下图:
  融合前的推理执行时间7。209ms,融合后推理执行时间2。305ms,时间减少了4。904ms,效率提升了68
  算子融合原理
  算子融合是整网性能提升的一种关键手段,包括图融合和UB融合。
  图融合是FE根据融合规则进行改图的过程。图融合用融合后算子替换图中融合前算子,提升计算效率。图融合的场景如下:
  在某一些算子的数学计算量可以进行优化的情况下,可以进行图融合,融合后可以节省计算时间。例如:convbiasAdd,可以融合成一个算子,直接在l0c中完成累加,从而省去add的计算过程。
  在融合后的计算过程可以通过硬件指令加速的情况下,可以进行图融合,融合后能够加速。例如:convbiasAdd的累加过程,就是通过l0c中的累加功能进行加速的,可以通过图融合完成。
  UB即昇腾AI处理器上的UnifiedBuffer,UB融合是对图上算子进行硬件UB相关的融合。例如两个算子单独运行时,算子1的计算结果在UB上,需要搬移到DDR。算子2再执行时,需要将算子1的输出由DDR再搬移到UB,进行算子2的计算逻辑,计算完之后,又从UB搬移回DDR。
  从这个过程会发现1的结果从UBDDRUBDDR。这个经过DDR进行数据搬移的过程是浪费的,因此将1和2算子合并成一个算子,融合后算子1的数据直接保留在UB,算子2从UB直接获取数据进行算子2的计算,节省了一次输出DDR和一次输入DDR,省去了数据搬移的时间,提高运算效率,有效降低带宽。总结
  我们使用一个口罩识别模型,演示了如何在华为昇腾310设备上推理,演示了如何使用msprof命令采集性能数据,并且通过分析性能数据减少了推理过程花费的时间。
  如果大家在使用中遇到问题,可以登录昇腾论坛寻求专家帮助:
  https:bbs。huaweicloud。comforumforum9451。html
  也可以在这里分享使用感受,一起交流、一起进步。FAQ
  1〔ERROR〕Apppath(homenameworkspacefacemaskdetectionpython3。9)issoftlink,notsupport!
  解决:msprof命令中全部需要使用绝对路径。
  2无root权限时加动态库搜索路径:
  (1)临时增加动态库搜索路径:
  命令行输入
  exportLDLIBRARYPATH{installpythonpath}lib:LDLIBRARYPATH
  (2)永久设置(对当前用户有效):
  修改。bashrc
  末尾新增
  exportLDLIBRARYPATH{installpythonpath}lib:LDLIBRARYPATH
  3〔ERROR〕Apppath(homeshandongdaxuepython3)issoftlink,notsupport!
  使用msprof命令时,python3必须使用绝对路径。
  homeshandongdaxueAscendascendtoolkit5。1。RC1toolsprofilerbinmsprofapplicationpython3homeshandongdaxueworkspacefacemaskdetectiondetectimage。pyhomeshandongdaxueworkspacefacemaskdetectionimagedemo1。jpgmsproftxonoutput。profilingdata
  说明:此命令错误
  homeshandongdaxueAscendascendtoolkit5。1。RC1toolsprofilerbinmsprofapplicationhomeshandongdaxueworkspacepython3。9。12binpython3。9homeshandongdaxueworkspacefacemaskdetectiondetectimage。pyhomeshandongdaxueworkspacefacemaskdetectionimagedemo1。jpgmsproftxonoutput。profilingdata
  说明:替换为绝对路径后命令可正常运行
  4E10001:Value〔1〕for〔data1〕isinvalid。Reason:maybeyoushouldsetinputshapetospecifyitsshape。
  解决方法:
  在DataPreProcessing中要打开InputNode设置。

去有风的地方播完了,但大理依然人潮汹涌1月25日,去有风的地方首播迎来大结局。但这部剧带火的大理依然热度不减。春节期间,整个大理州接待424万人次,同比增219,实现旅游业总收入31。6亿元,同比增162。其中大理市是抢眼ISPO现场Jackery电小二光充户外电源3000Pro国内首秀2月10日,国家会议中心迎来为期3天的2023年首个重量级展会ISPOBeijing2023第十七届亚洲运动用品与时尚展。全球光充户外电源领导品牌Jackery电小二携全线光充户外全国首个!河南物流业推出多式联运新标准大河报豫视频记者侯冰玉通讯员李孟丹近年来,多式联运已经成为物流业的高频热词,全国各地围绕国家关于多式联运发展的战略部署,争先恐后开展联运标准规则探索,形成了一系列多式联运探索创新实消耗40的财政收入,供养人数破8000万,我来说句公道话有位网友在某网络社区发帖称财政供养人数超过8000万,占财政税收比例超过40。一下子引起了轩然大波。这个帖子的具体内容是根据公开数据,2022年中国公务员数量是710万,算上参公党云南文山市春节期间实现旅游收入3。5亿元2023年春节期间,云南省文山壮族苗族自治州文山市各旅游景点公共文化场馆人潮涌动,年味儿十足,文旅市场强势复苏,文旅消费大幅回升,共接待游客44。09万人次,实现旅游收入3。5亿元又一国家央行宣布加息!必须对通胀保持警惕作者丨舒晓婷编辑丨李莹亮图源丨图虫印度央行再度加息。当地时间2月8日,印度央行加息25个基点至6。5,较去年12月加息35个基点有所放缓。自2022年4月至今,印度央行已累计加息次循环经济丰城样本从破烂王到高富美来源人民网江西省丰城市是江南最大全国闻名的废旧物资集散地。近年来,丰城市践行绿色发展理念,把循环经济作为丰城本市主导产业来抓,成为江西乃至全国循环产业的翘楚。从几十年前走街串巷的破14亿人还是普通人多分享一下在网上看到的一组数据这个数据应该是大差不差了,折射出很多危机,现在房子卖不动了,国家出台各种政策,银行贷款银行降息保房地产,我不知道往房地产行业注入大量的资金是否能溅起水花沈阳楼市分析第2期2月财经新势力现在沈阳楼市的热度还是在下降,别的城市都已经开始回暖了,但是沈阳楼市却还没有回暖。沈阳的那些房东对于沈阳房价也是没有太大的信心了。沈阳楼市2022年实在是太冷了,尤其realme10Pro可口可乐定制版发布,背部设计让人喜爱realme10Pro可口可乐定制版发布,这个手机使用了撞色设计思路,并且屏幕边框比普通版窄了。撞色设计,摄像头区域竖向是黑色,然后剩余的部分是红色的。镜头部分是红色的边框,所以这莫伊塞斯亲承去年收到巴甲豪门邀约,被山东泰山拒绝新赛季留队上赛季,莫伊塞斯虽然未能帮助山东泰山夺得联赛冠军,但在足协杯战线实现了三连冠。返回巴西度假时,莫伊塞斯接受巴西媒体的采访时透露,上赛季他收到了巴西球队米内罗美洲的邀请,但山东泰山拒
特斯拉自动辅助驾驶技术和车身安全,甩蔚小理华为汽车十条大街谈到这个话题,我相信一句话实践出真知。ModelY车身这两年,电动汽车作为国家的大政方针,已经被写入了国家发展计划,电车行业也成了一片蔚来的海洋,国内的电动汽车厂家如雨后春笋般的冒大街上高价收名酒,原来其中暗藏3种猫腻,行家别中招现在有两个行业是外行人完全搞不懂的,其一就是古玩古董,其二就是回收老酒名酒,这两行的水太深了,一般人把握不住,就算是从业十几年的业内人士也会翻车,刘子最近就被一个收酒商搞得晕头转向大街上高价收老酒,原来里面竟暗藏猫腻,行家别中计想必大家都知道,在乡镇中有一种走街串巷高价收老酒的人,其实这里面暗藏猫腻,很多人都在卖老酒的时候,都遭遇了酒被掉包,收酒的人走远之后,反应过来只能吃哑巴亏。在网上有一个帖子,说的是吃鸡曾烂大街的6款氪金套装,当年人手一件,如今命运各异大家好,欢迎来到由小鱼干开讲的吃鸡新鲜事速报,如今和平精英推出的套装已经不计其数,在游戏内外推出的各类返场活动,也几乎已经把所有热门套装都返场过一次了。其中有一些氪金套装,曾在当年中国唯一的白种民族,满大街美女,为何不允许与外族通婚?中国广袤的土地上,一直都是黄种人的为主,但是却有这么一个地方,不仅人们肤色白皙,而且美女如云,这就是中国的塔县,那么这究竟是个什么样神奇的地方呢?说起塔县大家肯定都会比较陌生,但是昔日的吸毒艺人柯某东竟然拿影帝了文筱雅最近有一条热搜,实在让人匪夷所思。昔日的吸毒艺人柯某东居然拿影帝了!是的,你没有看错。就是当年那个被大家唾弃然后被卖惨承认自己错了的柯某东。看着他高高举起奖杯,沾沾自喜地说着皇家,海洋之星,麦富迪,比瑞吉,比乐这些狗粮到底哪种好?现在人有多孤独,在大城市里找不到可以谈心的小伙伴。一所以很多妹子们都会养着可爱的狗狗来陪伴自己。毕竟狗狗忠实又可爱,是人类最好的朋友呢。养狗狗是一门学问,想要照顾好小狗狗有很多方方晚清京城街道环境有多差?黄土垫道,净水泼街,只为保证皇家体面在古代,京城意味着一国之都,意味着庄严肃穆,意味着昌盛繁华。看着如今秩序井然的北京城,很难想象在清朝末期的时候,在北京城富丽堂皇的城墙之下,城市街道却是尘沙扑面,恶臭熏天。旧时有黄中国有座避暑城人口仅8万,曾是皇家避暑行宫,夏天才19C都说避暑去贵阳或者云南,其实陕西也有不少避暑胜地,比如之前介绍的有太白县,再比如今天的主角宜君县。宜君县是一座名副其实的小县城,位于西省中部,铜川市北部,全县人口只有8万,还不及江热身赛国际米兰大胜普罗塞斯托北京时间7月29日,2022年迎来一场精彩对决,国际米兰对阵普罗塞斯托。上半场,洽尔汗奥卢率先破门,国际米兰10普罗塞斯托。劳塔罗更是梅开二度射门得分,替球队扩大比分,国际米兰30英国高温,皇家卫队的帽子为什么不能摘40度的高温下,一位戴着皮帽子被热得蔫头耷脑的卫兵,双手贴紧大腿,像一株植物一样,被动地由路过的警察喂水。都热晕了,为什么英国女皇的卫兵就不能把熊皮帽子摘了啊,这太不人道了吧。英国
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网