【书生】Task1~4 入门(linux/python/git/huggingface)

!前言:作业审判官可以直接点击目录查看作业更加方便哦~

Task1 Linux基础知识

在大二一年的学习路程中,初步会使用一些ubuntu下的操作。因此,只记录一些自己不会的当做笔记,节约时间,并非完整教程,github文档写的非常好,建议直接访问。

1.端口映射

不进行端口映射的结果

(base) root@intern-studio-002836:/home/demo# python hello_world.py 
Running on local URL:  http://127.0.0.1:7860
IMPORTANT: You are using gradio version 4.29.0, however version 4.44.1 is available, please upgrade.
--------

To create a public link, set `share=True` in `launch()`.

进行映射后:

2.硬链接&软链接

 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

一般使用软连接,它的常用的使用方法如下:

ln [参数][源文件或目录][目标文件或目录]

参数如下:

  • -s:创建软链接(符号链接)也是最常用的;
  • -f:强制执行,覆盖已存在的目标文件;
  • -i:交互模式,文件存在则提示用户是否覆盖;
  • -n:把符号链接视为一般目录;
  • -v:显示详细的处理过程。

3.mv

  • mv file1.txt file2.txt:将文件 file1.txt 重命名为 file2.txt

4.find

5.sed

sed命令是一种流编辑器,主要用于文本处理,在处理复杂的文件操作时经常用到,sed命令常用参数及使用示例如下:

  • 参数说明:
    • -e<script> 或 --expression=<script>:直接在命令行中指定脚本进行文本处理。
    • -f<script文件> 或 --file=<script文件>:从指定的脚本文件中读取脚本进行文本处理。
    • -n 或 --quiet 或 --silent:仅打印经过脚本处理后的输出结果,不打印未匹配的行。
  • 动作说明:
    • a:在当前行的下一行添加指定的文本字符串。
    • c:用指定的文本字符串替换指定范围内的行。
    • d:删除指定的行。
    • i:在当前行的上一行添加指定的文本字符串。
    • p:打印经过选择的行。通常与 -n 参数一起使用,只打印匹配的行。
    • s:使用正则表达式进行文本替换。例如,s/old/new/g 将所有 "InternLM" 替换为 "InternLM yyds"。

6.grep

grep是一个强大的文本搜索工具。常用参数如下:

  • -i:忽略大小写进行搜索。
  • -v:反转匹配,即显示不匹配的行。
  • -n:显示行号。
  • -c:统计匹配的行数。

7.进程管理

进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:

  • ps:查看正在运行的进程
  • top:动态显示正在运行的进程
  • pstree:树状查看正在运行的进程
  • pgrep:用于查找进程
  • nice:更改进程的优先级
  • jobs:显示进程的相关信息
  • bg 和 fg:将进程调入后台
  • kill:杀死进程

8.熟悉nvidia-smi输出

9.TMUX

使用lsb_release -a 命令查看ubuntu的系统信息

https://www.ruanyifeng.com/blog/2019/10/tmux.html

【Task1提交作业】

L0G1000

闯关任务完成SSH连接与端口映射并运行hello_world.py

SSH连接

可选任务 1将Linux基础命令在开发机上完成一遍10min
可选任务 2使用 VSCODE 远程连接开发机并创建一个conda环境10min

任务1已完成

运行的命令截图,就不一一展示了。

任务2已完成:由第一个任务已经进行ssh连接,现创建一个conda环境

(等待过程中,换了个德古拉背景嘿嘿,所以背景看起来不一样了)

顺利完成第一关!

Task2 Python 基础知识

1.使用特定路径的包

import sys  
  
# 你要添加的目录路径  
your_directory = '/root/myenvs'  
  
# 检查该目录是否已经在 sys.path 中  
if your_directory not in sys.path:  
    # 将目录添加到 sys.path  
    sys.path.append(your_directory)  
  
# 现在你可以直接导入该目录中的模块了  
# 例如:import your_module

2.vscode连接开发机进行python debug

①条件断点

  1. 条件断点:在断点标记上右键,选择条件断点(conditional breakpoint)。VSCode 中常用的条件断点主要有三种类型:
    1. 表达式(Expression):输入一个 Python 表达式,每次触发断点时运行该表达式,当表达式的值为 True 时 VS Code 会暂停执行。例如:x == 10
    2. 触发计数(Hit Count):断点触发计数达到输入值时才会暂停运行。
    3. 记录日志(Log Message):触发该断点时在 Debug Console 中输出指定信息,实际上就是 logpoint。需要输入要输出的信息,如果要用到表达式,可以使用 {} 将表达式括起来。例如,每次记录变量 i 的值可以写 x={i}

②命令行debug

#pip install debugpy
python -m debugpy --listen 5678 --wait-for-client ./debug_test.py

简化命令

alias pyd='python -m debugpy --wait-for-client --listen 5678'

成功

运行命令 pyd debug_test.py

3.Python调用InternLM api

api添加到环境变量成功,能够运行示例文件得到回答。

【Task2提交作业】

闯关任务Leetcode 383(笔记中提交代码与leetcode提交通过截图)20mins
class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        len1=len(ransomNote)
        len2=len(magazine)
        if len1>len2:
            print("false")
            return False

        dic1={chr(i): 0 for i in range(ord('a'),ord('z')+1)}

        for char in ransomNote:
            dic1[char] +=1

        dic2={chr(i):0 for i in range(ord('a'),ord('z')+1)}
        for char in magazine:
            dic2[char] +=1 

        for char in dic1:
            if dic1[char]>dic2[char]:
                print("false")
                return False
        
        print("true")
        return True
                                
                    

运行结果

细枝末节笔记:

#return false 错误 false不是关键字,False才是
return False

return True #而不是true
闯关任务Vscode连接InternStudio debug笔记10mins

开始debug:

启动调试

发现问题,步步调试

上网搜索

json.decoder.JSONDecodeError错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

解析一个空字符串或无效的 JSON 数据

 尝试print(res),发现没问题啊调试bug,中途连接断了,再次重新远程debug,出现错误

(base) root@intern-studio-002836:~/L0G# pyd findBug.py 
.........(略)
  File "/root/.conda/lib/python3.11/site-packages/debugpy/public_api.py", line 31, in wrapper
    return wrapped(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.conda/lib/python3.11/site-packages/debugpy/server/api.py", line 143, in debug
    log.reraise_exception("{0}() failed:", func.__name__, level="info")
  File "/root/.conda/lib/python3.11/site-packages/debugpy/server/api.py", line 141, in debug
    return func(address, settrace_kwargs, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.conda/lib/python3.11/site-packages/debugpy/server/api.py", line 262, in listen
    raise RuntimeError(str(endpoints["error"]))
RuntimeError: Can't listen for client connections: [Errno 98] Address already in use
解决方案

 远程太容易断了,每次断了都要手动kill一下进程,我真不懂怎么解决,最后改为本地调试

在网上搜了一下+chatgpt老师的倾情指导

因为输出的形式是带有一些无关字符''json''和’’\n",采用python的replace函数,替换成功。

根本原因是没有识别到正确的格式。

最后修改的代码为

完美!

可选任务pip安装到指定目录10mins

 使用命令

pip install numpy -t /root/L0G/pkgs/

最后安装成功

引用成功:

import sys  
  
# 你要添加的目录路径  
your_directory = '/root/L0G/pkgs'  
  
# 检查该目录是否已经在 sys.path 中  
if your_directory not in sys.path:  
    # 将目录添加到 sys.path  
    sys.path.append(your_directory)  
print(sys.path)
# 现在你可以直接导入该目录中的模块了  
# 例如:import your_module
import numpy as np
print(np.__file__)

输出信息:系统检测到我在从源码导入。

他希望我能直接pip install numpy 而不是引用源码numpy

Task3 Git基础

嘿嘿,经过半年学习大悟特悟,直接开整!

【Task3 提交作业】

1破冰活动提交一份自我介绍。

成功~

2实践项目创建并提交一个项目。

没看懂这个作业,什么叫“创建并维护一个公开的大模型相关项目或笔记仓库”??

我不知道有哪些公开的大模型相关项目,我也还没有维护人家项目的能力呀~

只能说在git上提交了自己之前写的项目,例如我的作品https://github.com/Hanqi7921/Digital-Signal-Process-Voice.git

不过我最近打算去看一下FastGPT的源码比较下V4.0和当前版本的差异所以

放这儿吧:https://github.com/labring/FastGPT.git

【Task4 社区】

【Task4 提交作业】

任务描述时间
模型下载使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensors.index.json文件),请在必要的步骤以及结果当中截图。20min
模型上传(可选)将我们下载好的config.json文件(也自行添加其他模型相关文件)上传到对应HF平台和魔搭社区平台,并截图。10min
Space上传(可选)在HF平台上使用Spaces并把intern_cobuild部署成功,关键步骤截图。10min

模型下载

续写成功

创建新号新项目成功

修改html

果然遇到这个报错

添加token解决成功

看见图片了

模型上传,按照此步配置好了git 

导入模型成功:注意每次进入一个新的项目,都会要求set url再输入一遍token

 

关于部署问题:没有特别弄懂,先去玩一玩huggingface平台了,后面摸熟了反过来弄吧,先睡觉了嘿嘿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值