【活动推荐】Alibaba Cloud Linux实践操作学习赛,有电子证书及丰厚奖品!

简介: 参与开放原子基金会的[龙蜥社区Alibaba Cloud Linux实践操作学习赛](https://competition.atomgit.com/competitionInfo),获取电子证书。报名后,按照提供的链接完成简单实验,成果提交至AtomGit并加入钉钉群。实验包括在ECS Intel实例上部署GPT-2语言模型,需安装PyTorch等软件,预训练模型已预先下载。完成实验后在指定仓库提交结果,并填写信息收集表。

前言

这里给小伙伴们推荐一个新活动,有电子证书可以拿的哦~

这是开放原子基金会的官网,进入赛事界面。

image.png

可以看到下面有一个龙蜥社区Alibaba Cloud Linux实践操作学习赛。点击此处进行报名。

image.png

双方都会提供电子证书的,但是具体还是看完成的质量。

image.png

实验的内容也很简单,链接如下:https://developer.aliyun.com/adc/scenario/3f2409bc21fb4fff8cd581d5ba5de6fd

image.png

按照指引完成体验即可。但需要将完成结果提交到AtomGit仓库:https://atomgit.com/13968133152/alinux-lab 。同时备注“大赛报名姓名、阿里云账号、实验操作完成截图、对实验的反馈或建议”。操作完成之后加入钉钉群填写信息收集表即可。

基于ECS Intel实例部署GPT-2大语言模型

GPT-2

GPT-2(Generative Pre-trained Transformer 2)是由OpenAI开发的一种语言模型,它是基于Transformer架构的深度学习模型。GPT-2模型通过大规模的无监督预训练来学习语言的统计特征和语义关系,然后可以用于各种自然语言处理任务,如文本生成、摘要生成、对话系统、翻译等。GPT-2的特点是可以生成连贯、语义合理的文本,具有较强的语言理解和生成能力。

实验步骤

部署GPT-2

软件安装配置

为了在Alinux 3上安装PyTorch等AI组件,需要首先启用epao repo。执行如下命令,启用epao repo。

yum install -y anolis-epao-release

image.png

执行如下命令,安装部署GPT-2所必须的软件以及PyTorch组件。【注意】本实验已为您提前下载预训练模型,如果您需要在自己的环境中下载预训练模型,建议您安装tmux,下载预训练模型前先执行tmux进入tmux session,预训练模型下载时间很长,ECS断开后就不能继续下载。

yum install -y git git-lfs wget curl gcc gcc-c++ tar unzip pytorch gperftools-libs

image.png

执行如下命令,更新pip,方便后续部署Python环境。

python -m pip install --upgrade pip

image.png

执行如下命令,启用Git LFS,后续下载预训练模型需要启用Git LFS的支持。

git lfs install

image.png

下载 GPT-2 模型

下载GPT-2预训练模型。

本实验已为您提前下载GPT-2预训练模型,请您跳过此步骤,切勿重复下载。如果您需要在自己的环境中下载模型,您可使用命令

GIT_LFS_SKIP_SMUDGE=1 git clone https://gitee.com/modelee/gpt2-large.git
wget https://gitee.com/modelee/gpt2-large/raw/main/pytorch_model.bin -O gpt2-large/pytorch_model.bin

部署运行环境

执行如下命令,安装大模型运行时所需要的依赖环境。

pip install --ignore-installed pyyaml==5.1
pip install transformers streamlit intel-openmp

image.png

运行网页版APP

环境部署完毕后,就可以运行网页版APP,来体验GPT-2帮助完成写作的乐趣。

执行如下命令,创建网页版APP的项目目录。

mkdir write-with-transformer && cd write-with-transformer

执行如下命令,新建并编辑app.py文件。

vim app.py

按i键进入编辑模式,将如下内容复制并粘贴至app.py文件中,完成后按ESC退出编辑模式,输入:wq后回车,保存并退出文件。

import streamlit as st
from transformers import AutoTokenizer, AutoModelWithLMHead

tokenizer = AutoTokenizer.from_pretrained("../gpt2-large")
model = AutoModelWithLMHead.from_pretrained("../gpt2-large")

def infer(input_ids, max_length, temperature, top_k, top_p):
    output_sequences = model.generate(input_ids=input_ids,max_length=max_length,temperature=temperature,
        top_k=top_k,top_p=top_p,do_sample=True,num_return_sequences=1)
    return output_sequences

default_value = "Hello, I'm a language model,"

st.title("Write with Transformers 🦄")
sent = st.text_area("Text", default_value, height = 275)
max_length = st.sidebar.slider("Max Length", min_value = 10, max_value=30)
temperature = st.sidebar.slider("Temperature", value = 1.0, min_value = 0.0, max_value=1.0, step=0.05)
top_k = st.sidebar.slider("Top-k", min_value = 0, max_value=5, value = 0)
top_p = st.sidebar.slider("Top-p", min_value = 0.0, max_value=1.0, step = 0.05, value = 0.9)

encoded_prompt = tokenizer.encode(sent, add_special_tokens=False, return_tensors="pt")
if encoded_prompt.size()[-1] == 0:
    input_ids = None
else:
    input_ids = encoded_prompt

output_sequences = infer(input_ids, max_length, temperature, top_k, top_p)

for generated_sequence_idx, generated_sequence in enumerate(output_sequences):
    print(f"=== GENERATED SEQUENCE {generated_sequence_idx + 1} ===")
    generated_sequences = generated_sequence.tolist()
    text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True)
    total_sequence = (
        sent + text[len(tokenizer.decode(encoded_prompt[0], clean_up_tokenization_spaces=True)) :]
    )
    generated_sequences.append(total_sequence)
    print(total_sequence)

st.write(generated_sequences[-1])

执行如下命令,设置运行环境变量,并运行app.py脚本。

export OMP_NUM_THREADS=$(nproc --all)
export KMP_AFFINITY=granularity=fine,compact,1,0
export LD_PRELOAD=/usr/lib64/libtcmalloc.so.4:/usr/local/lib/libiomp5.so
streamlit run app.py --server.port 7860

出现以下回显信息说明服务运行成功。

image.png

通过EXTERNAL IP:7860访问服务。

image.png

接下来大家就可以尽情的对话了。【注意】执行键是ctrl+enter,这里没有按钮。

image.png

提交结果

具体官方教程如下:https://atomgit.com/evaluation/atomgit_evaluation/wiki/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E5%8F%82%E4%B8%8E%20AtomGit%20%E5%BC%80%E6%BA%90%E5%8D%8F%E4%BD%9C%E5%B9%B3%E5%8F%B0%E6%B5%8B%E8%AF%84%E8%B5%9B

image.png

在登录 AtomGit 的前提下,访问官方仓库,此处为龙蜥活动

点击如下图右上的“Fork”按钮。

image.png

将“Fork 代码库”到自己的 AtomGit 账户下。

image.png

安装 Git 客户端,在本地安装Git。

地址:https://atomgit.com/atomgit_operate/quick_link_software/blob/master/git/

配置你的 AtomGit SSH

生成本地的 SSH Key 的公私密钥对。
在命令行执行 ,一直回车.

ssh-keygen.exe

默认生成的密钥对存放在用户目录 C:\Users\OpenAtom.ssh\下,注意:该路径中的“OpenAtom”每个人不一样,实际以你自己电脑的当前登录的用户名为主。
公钥文件名:id_rsa.pub
私钥文件名:id_rsa

复制公钥

clip < ~/.ssh/id_rsa.pub

在 AtomGit 平台设置:个人头像->个人设置->SSH Key,在这里添加一个 SSH 公钥。

image.png

在上面“4.2”步骤中已经设置好了 SSH,那么现在只要在你的 AtomGit 账户的“AtomGit 代码托管平台评测赛”仓库中选择“克隆/下载”按钮->“SSH”->复制SSH地址,如下图

image.png

本地新增测评文档,然后把自己的信息填进去。

image.png

回到自己的仓库里,点击上传文档。

image.png

此时可以看到有两个文件了。

image.png

参赛者在自己fork的仓库中,向官方仓库发起变更请求,创建change request,参考如图操作。

image.png

这时,填写以下自己的个人信息即可。

image.png

回到官方仓库,可以看到自己刚刚发起的请求成功。

image.png

至此,上传完毕。

同时请加入官方的钉钉群,群里会定期公布本月的参与名单及获奖名单,一般电子证书都会是在一周后发布在钉钉群内,所以请务必加群哦!

本次活动持续时间为一年,所以只要是今年内看到的小伙伴都是可以参加的!

建议

希望能够增加更多关于AI+OS的实验,不仅仅局限于部署方面。

相关文章
|
1月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
1月前
|
存储 安全 Linux
|
17天前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####
|
17天前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
1月前
|
Linux Shell 数据安全/隐私保护
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
95 3
|
2月前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
55 3
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
2月前
|
网络协议 Linux
linux学习之套接字通信
Linux中的套接字通信是网络编程的核心,允许多个进程通过网络交换数据。套接字提供跨网络通信能力,涵盖本地进程间通信及远程通信。主要基于TCP和UDP两种模型:TCP面向连接且可靠,适用于文件传输等高可靠性需求;UDP无连接且速度快,适合实时音视频通信等低延迟场景。通过创建、绑定、监听及读写操作,可以在Linux环境下轻松实现这两种通信模型。
44 1
|
2月前
|
Ubuntu Linux
Linux实践|设置静态 IP 地址
Linux实践|设置静态 IP 地址
74 0
Linux实践|设置静态 IP 地址
下一篇
DataWorks