내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
이 글은 상하이 인공지능연구소에서 주최한 제3차 학자들을 위한 대규모 모델 실습 캠프의 노트이며, 개인과 조교가 숙제를 교정할 때 참고할 수 있는 글입니다.튜토리얼 원본 링크。
등록하시려면 위챗에서 "제3회 학자모델실천캠프"를 검색해 주세요.
이 노트는 원본 튜토리얼을 기반으로 수정된 개인적으로 주석이 달린 노트입니다.
😀Hello大家好,欢迎来到학자 대형 모델실습캠프, 실습캠프를 처음 참여하는 학생들과 리눅스에 대한 기초 지식이 없는 다양한 업종의 학생들을 위해 실습캠프에서 준비한 기본 강좌입니다.InternStudio 개발 머신, 그리고 몇 가지 기본 사항을 숙지하세요리눅스 지식 , 다음 과정에서 어디서부터 시작해야 할지 모르는 사람이 없도록 이 내용이 모든 사람에게 도움이 되기를 바랍니다. 여기 레벨 작업에서 몇 가지 레벨 작업을 준비했습니다. 필수 레벨 작업을 완료하고 체크인하면 현재 레벨의 컴퓨팅 파워 보상을 받게 됩니다.시작하자!
InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。
InternStudio에 대해 더 자세히 알고 싶다면 다음 문서를 확인하세요. 인턴스튜디오
https://studio.intern-ai.org.cn/
먼저 위의 링크를 열어 InternStudio에 로그인하면 아래 그림과 같이 자동으로 콘솔 인터페이스로 이동합니다.
각 일련번호에 해당하는 페이지의 기능을 알려드리겠습니다.
이상은 InternStudio 플랫폼에 대한 간략한 소개입니다. 개발머신을 생성하는 방법을 홈페이지에 접속하여 "를 클릭합니다.개발 머신 만들기”
여기서 우리는 만들기를 선택합니다개인 개발 기계, 명명 된시험,쿠다버전은 12.2이고,자원 할당10%를 선택하면 기본 기간이 적당합니다.
생성이 완료된 후,개발 기계인터페이스에서 방금 생성한 개발 머신을 볼 수 있습니다. 클릭하여 개발 머신으로 들어갑니다.
개발 머신에 들어가면 개발 머신의 메인 페이지를 볼 수 있습니다. 개발 머신에는 선택할 수 있는 세 가지 모드가 있습니다.JupyterLab, 터미널 및 VScode
안에:
위에서 소개해드린인턴스튜디오 플랫폼, 개발 머신을 만드는 방법 이 섹션에서는 무엇을 이해하고 싶습니다.SSH、원격 연결을 사용하는 이유, SSH를 사용하는 방법원격 연결개발머신이란 무엇인가포트 매핑그리고 진행 방법포트 매핑。
SSH정식 명칭은 시큐어 쉘(Secure Shell), 중국어로 번역하면 시큐어 쉘(Secure Shell)이다.네트워크 보안 프로토콜 , 암호화 및 인증 메커니즘을 통해 안전한 액세스, 파일 전송 및 기타 서비스를 실현합니다. SSH 프로토콜은 네트워크 데이터를 암호화하고 인증하여 불안전한 네트워크 환경에서 안전한 네트워크 서비스를 제공합니다.
SSH는 (C/S 아키텍처)섬기는 사람그리고고객안전한 SSH 채널을 설정하려면 양측이 먼저 TCP 연결을 설정한 다음 버전 번호와 사용된 다양한 알고리즘을 협상하고 동일한 결과를 생성해야 합니다.세션 키 후속 대칭 암호화에 사용됩니다. 사용자 인증이 완료되면 양측은 데이터 교환을 위한 세션을 설정할 수 있습니다.
그럼 다음 연습에서는SSH 키 구성, 구성 키는 개발 시스템에 원격으로 연결할 때 비밀번호를 반복적으로 입력할 필요가 없도록 하기 위한 것입니다.원격으로 연결하는 이유는 무엇입니까??
원격 연결의 장점은 원격 사무실을 사용하는 경우 SSH를 통해 원격으로 개발 머신에 연결하여 로컬에서 개발할 수 있다는 것입니다. 그리고 로컬 코드를 실행해야 하는데 환경이 없다면 원격 연결이 매우 필요합니다.
먼저 SSH 원격 연결을 위해 비밀번호를 입력하는 방법을 사용합니다. 나중에 비밀번호 없는 로그인을 구성하는 방법에 대해 설명하겠습니다.
개발 머신 생성을 완료한 후 컴퓨터의 powerShell 터미널을 열고 다음을 사용해야 합니다.윈+R 단축키를 사용하여 실행 상자를 열고 powerShell을 입력하고 powerShell 터미널을 엽니다. (Linux 또는 Mac 운영 체제를 실행하는 경우 다음 단계는 동일합니다)
개발 머신 플랫폼으로 돌아가서 들어갑니다.개발 기계페이지에서 우리가 만든 개발 머신을 찾아 클릭하세요.SSH 연결。
그런 다음 복사로그인 명령, 37367 여기서는 개발머신에서 사용하는 SSH 포트입니다. 일반적으로 포트 22가 사용됩니다. 이 포트번호가 없으면 SSH에 접속할 수 없으며, 모든 사람의 포트가 다르기 때문에 개발머신에 연결하는 경우에는 접속할 수 없습니다. , 포트가 잘못되었는지 확인해야 합니다.
복사한 명령을 powershell에 붙여넣고 Enter 키를 누릅니다. 여기서는 로그인 명령 아래에 암호를 복사하여 터미널에 붙여넣습니다.일부 컴퓨터에서는 비밀번호를 복사한 후 마우스 오른쪽 버튼을 클릭하여 붙여넣기를 할 수 있습니다.shift+ins
, 여기에 붙여넣은 비밀번호는 표시되지 않습니다. 이는 정상입니다.
마지막으로 Enter 키를 누르면 성공을 나타내는 다음 내용이 나타납니다.
개발 머신에 연결한 후 다음을 사용할 수 있습니다.hostname
개발 머신 이름을 보려면 다음을 사용하세요.uname -a
개발 머신 커널 정보를 보려면 다음을 사용하세요.lsb_release -a
개발 머신 버전 정보를 보려면 다음을 사용하세요.nvidia-smi
GPU 정보를 확인하세요. 원격 연결을 종료하려면 해당 명령을 두 번 입력하세요.exit
그게 다야.
그런데 우리가 개발하고 공부할 때 원격으로 매번 비밀번호를 입력해야 하는 번거로움이 있어서 SSH 키를 설정해 비밀번호 입력 단계를 건너뛸 수 있습니다.ssh-키젠키를 생성하는 명령
SSH 키는 SSH 프로토콜에서 인증 및 암호화된 통신에 사용되는 안전하고 편리한 로그인 인증 방법입니다.
ssh-키젠RSA 및 DSA 인증 키를 모두 지원합니다.
일반적으로 사용되는 매개변수는 다음과 같습니다.
여기서는 RSA 알고리즘을 사용하여 키를 생성하며 명령은 다음과 같습니다.
ssh-keygen -t rsa
명령어를 입력한 후끝까지 들어가세요그게 다입니다. 여기의 키는 기본적으로~/.ssh/
디렉토리 아래,~
홈 디렉토리를 의미하며, Windows라면C:Users{your_username}
.파워쉘에서 사용 가능Get-Content
Linux 운영 체제인 경우 사용할 수 있는 생성된 키를 보는 명령cat
주문하다.
그런 다음 개발 머신 플랫폼으로 돌아가 홈페이지에서 구성을 클릭합니다.SSH 키을 클릭한 다음SSH 공개 키 추가,
방금 생성한 키를 복사하여 공개 키 상자에 붙여넣으면 이름이 자동으로 인식됩니다. 마지막으로 지금 추가를 클릭하면 SSH 키 구성이 완료됩니다.
SSH Key 생성 완료 후 재시작단말기원격 접속 시 비밀번호 입력 단계는 생략됩니다.
물론 다음과 같은 SSH 원격 연결 소프트웨어를 사용할 수도 있습니다.윈드텀、엑스터미널 기다리다. 여기서는 원격 연결을 위해 VScode를 사용합니다. VScode를 사용하면 코드 수정 및 기타 작업에 매우 편리한 코드 편집기라는 장점이 있습니다.
VScode에서 원격으로 연결하려면 플러그인 세트도 설치해야 합니다. VScode 설치 방법은 온라인에서 검색할 수 있습니다. (개발 머신의 vscode는 이 플러그인을 검색할 수 없지만 로컬 vscode는 검색할 수 있습니다)
VScode를 설치했다면 왼쪽의 확장 페이지를 클릭하고 검색 상자에 "SSH"를 입력하면 됩니다. 첫 번째는 설치하려는 플러그인입니다.
플러그인을 설치한 후 사이드바에서 원격 연결 아이콘을 클릭하고 SSH에서 "+" 버튼을 클릭한 후 개발 머신의 SSH 연결을 위한 로그인 명령을 추가합니다.
로그인 명령을 복사한 다음 해당 명령을 팝업 창에 붙여넣고 마지막으로 Enter 키를 누릅니다.
물론 기본 구성 파일을 사용해도 됩니다. 다음은 구성 파일의 구체적인 내용입니다. (여기에는 모든 원격 연결 정보가 포함됩니다.)
Host ssh.intern-ai.org.cn #主机ip也可以是域名
HostName ssh.intern-ai.org.cn #主机名
Port 37367 #主机的SSH端口
User root #登录SSH使用的用户
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
다음 구성 옵션 중 일부를 수동으로 추가하려면 위 형식에 따라 해당 부분을 수정해야 합니다.
만약에 *
StrictHostKeyChecking
no
그리고UserKnownHostsFile
*/dev/null
지문인증 팝업창 삭제:
StrictHostKeyChecking no
엄격한 호스트 키 검사가 비활성화되었음을 나타냅니다. 이는 새로운 SSH 서버에 연결할 때 서버의 호스트 키가 엄격하게 확인되지 않아 특정 보안 위험이 발생할 수 있음을 의미합니다.
UserKnownHostsFile /dev/null
사용자에게 알려진 호스트 키 파일을 /dev/null로 설정합니다. 이는 알려진 호스트 키의 기록 및 사용을 기본적으로 무시합니다.그러나 일반적인 보안 관행에서는 엄격한 호스트 키 검사를 임의로 비활성화하는 것을 권장하지 않습니다.
그런 다음 오른쪽 하단에 나타나는 프롬프트 창에서 "연결"을 클릭하여 개발 컴퓨터에 원격으로 연결합니다.
원격 연결이 완료되면 열려는 폴더(작업 디렉터리라고도 함)를 선택할 수 있습니다. 개발 컴퓨터의 폴더를 선택할 수도 있고 앞서 언급한 개발 컴퓨터의 폴더를 선택할 수도 있습니다.클라우드 디스크。
다음에 원격 연결을 할 때 로그인 명령 및 기타 정보를 입력할 필요가 없습니다. 다음과 같이 첫 번째 연결의 개발 머신 정보를 보려면 vscode의 원격 연결만 열면 됩니다.root
이는 개발 머신에 처음 연결할 때 다음을 사용한다는 의미입니다./root
작업 목록.
그리고 아래 사진에서는->
개발 시스템에 들어간 후 작업 디렉터리를 다시 선택해야 함을 나타냅니다.
그리고 아래 사진에서는->
마지막 개발 시스템에서 선택한 작업 디렉토리를 입력함을 나타냅니다.
매번 선택된 작업 디렉터리는 개발 컴퓨터 정보 아래에 표시됩니다. (여기에 lagent에 대한 추가 작업 디렉터리가 있습니다)
다음으로 언제 소개해드릴까요?포트 매핑。
포트 매핑 외부 네트워크의 임의의 포트를 내부 네트워크의 해당 포트에 매핑하여 내부 네트워크와 외부 네트워크 간의 통신을 실현할 수 있는 네트워크 기술입니다. 포트 매핑을 통해 인트라넷의 서비스나 애플리케이션을 외부 네트워크에서 액세스할 수 있어 네트워크 전반에 걸쳐 편리한 통신이 가능합니다.
그렇다면 개발 머신을 사용할 때 왜 포트 매핑을 수행해야 할까요?
후속 과정에서는 모델을 실시할 예정이므로웹 데모 배포 실습에서는 이 과정에서 웹 UI가 불완전하게 로딩되는 문제가 발생할 가능성이 높습니다.이는 개발 시스템의 Web IDE에서 web_demo를 실행할 때 개발 시스템의 http/https 서비스에 직접 액세스하면 프록시 문제가 발생할 수 있기 때문입니다.UI 리소스완전히 로드되지 않았습니다.
따라서 이 문제를 해결하려면 web_demo를 실행하는 연결을 포트 매핑해야 하며,외부 네트워크 링크는 로컬 호스트에 매핑됩니다. , 우리는 이 프록시 문제를 해결하기 위해 로컬 연결 액세스를 사용합니다. 이제 연습해 봅시다.
먼저 다이어그램을 기반으로 개발 시스템 포트 매핑이 작동하는 방식을 이해해 보겠습니다.
아래에는 실제적인 단계가 있습니다. 먼저 포트 매핑을 수행하는 방법을 이해하십시오.
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
위는 포트 매핑 명령입니다. 포트 매핑을 수행하려면 호스트에서 이 명령을 실행하세요. 다음은 포트 매핑 프로세스를 이해하는 흐름도입니다.
개인 PC는 개발 머신의 유일하게 노출된 포트 37367(SSH에서 언급되며 각 개발 머신의 노출된 포트가 다름)에 원격으로 연결하고 터널 옵션을 설정합니다. 노출된 포트는 트래픽 전달을 위한 환승 스테이션 역할을 합니다.
-C
: 전송되는 데이터의 양을 줄이려면 압축을 활성화하세요.-N
: 원격 명령을 실행하지 않고 터널만 설정합니다.-g
: 원격 호스트가 로컬로 전달된 포트에 연결할 수 있도록 허용합니다.이 SSH 명령이 개인 PC에서 실행되면 SSH 클라이언트는 로컬 시스템의 포트 7860에서 수신 대기합니다.
로컬 포트 7860으로 전송된 모든 트래픽은 SSH 터널을 통해 원격 서버의 127.0.0.1 주소에 있는 포트 7860으로 전달됩니다.
이는 개발 머신의 이 포트가 외부 네트워크에 직접 노출되지 않더라도 이 터널을 통해 원격 서버의 서비스에 안전하게 접근할 수 있다는 것을 의미합니다. .
계속해서 개발 머신 인터페이스로 이동하여 개발 머신을 찾은 다음맞춤형 서비스, 첫 번째 명령을 복사하고,
ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
명령의 각 부분의 의미를 그에게 소개하겠습니다.
-p 37367
: 앞서 언급한 SSH 연결을 위한 포트를 37367로 지정합니다.[email protected]
: 사용을 나타냅니다. root
사용자 ID는 다음에 연결됩니다.ssh.intern-ai.org.cn
이 호스트.-CNg
:
-C
일반적으로 압축을 활성화하는 데 사용됩니다.-N
원격 명령이 실행되지 않고 포트 포워딩 등을 위한 연결만 설정됨을 나타냅니다.-g
원격 호스트가 로컬로 전달된 포트에 연결하도록 허용합니다.-L {本地机器_PORT}:127.0.0.1:{开发机_PORT}
: 로컬 컴퓨터의 지정된 포트를 전달하기 위해 로컬 포트 전달을 설정합니다. {本地机器_PORT}
나타냄)이 원격 호스트(여기서는 )로 전달됩니다.ssh.intern-ai.org.cn
)의 127.0.0.1
(즉, 로컬 루프백 주소) 및 지정된 개발 머신 포트(다음으로 정의됨){开发机_PORT}
표현하다).-o StrictHostKeyChecking=no
: 처음 연결할 때 알 수 없는 호스트 키로 인한 메시지나 오류를 방지하려면 엄격한 호스트 키 검사를 끄세요.웹 데모를 실행할 때 이 명령을 사용하여 포트 매핑을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
hello_world.py 파일을 생성하고(개발 머신 인터페이스를 마우스 오른쪽 버튼으로 클릭하여 파일을 생성하고 이름을 hello_world.py로 변경) 파일에 다음 내용을 채웁니다.
import socket
import re
import gradio as gr
# 获取主机名
def get_hostname():
hostname = socket.gethostname()
match = re.search(r'-(d+)$', hostname)
name = match.group(1)
return name
# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:
html_code = f"""
<p align="center">
<a href="https://intern-ai.org.cn/home">
<img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;">
</a>
</p>
<h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1>
<h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2>
<p align="center">
<a href="https://github.com/InternLM/Tutorial/blob/camp3">
<img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
</a>
</p>
"""
gr.Markdown(html_code)
demo.launch()
편집 후 기억하기ctrl+s
구하다
코드를 실행하기 전에 다음을 사용해야 합니다.pip install gradio==4.29.0
다음 종속성 패키지를 설치(명령어를 복사하여 터미널에 붙여넣기)한 후 Web IDE 터미널에서 실행하는 명령입니다.python hello_world.py
주문하다
포트 매핑을 하지 않으면 로컬 IP로 접속할 수 없습니다.
다음 명령을 사용하여 이를 powerShell에 입력할 수 있습니다.
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
이는 성공을 나타냅니다. (알아채다: 이 명령은 어떤 콘텐츠도 반환하지 않습니다. 이는 포트 매핑이 실행 중임을 의미하며, 웹 페이지에서 연결을 열어 웹 UI 인터페이스를 볼 수 있습니다)
물론, 서로 다른 웹 UI를 실행한다면 명령을 반복적으로 입력해야 하는데, 이는 매우 번거롭고 VScode를 사용해야 합니다.SSH를 통해 개발 시스템을 원격으로 연결했습니다. VScode는 자동 포트 매핑을 제공하므로 "Ctrl+Shift+~" 단축키를 사용할 수 있습니다.터미널을 깨워라, 포트 옵션은 터미널 오른쪽에서 찾을 수 있습니다.
여기에서 포트 매핑 정보를 볼 수 있습니다. 포트를 수정해야 하는 경우 포트 열에서 포트 번호를 수정할 수 있습니다.
이 부분에서는 Linux의 일부를 이해하도록 안내하겠습니다.기본 조작 , 몇 가지 도구를 사용하십시오. 문제가 발생할 때 모든 사람이 스스로 해결할 수 있도록 여기에 의견을 남겨 주시면 시간 내에 답변해 드리겠습니다.
우리가 사용하기 때문에개발 기계드물게 사용되는권한 관리 , 그래서 소개하지 않겠습니다. (다음 작업은 모두 VScode 터미널에서 수행됩니다)
Linux에서 일반적인 파일 관리 작업에는 다음이 포함됩니다.
touch
명령은 빈 파일을 만듭니다.mkdir
주문하다.cd
주문하다.pwd
주문하다.cat
파일의 전체 내용을 직접 표시하고,more
그리고less
페이지별로 볼 수 있습니다.vi
또는vim
편집자를 기다리세요.cp
주문하다.ln
주문하다.mv
주문하다.rm
주문하다.rmdir
(빈 디렉토리만 삭제할 수 있습니다.) 또는 rm -r
(비어 있지 않은 디렉터리는 삭제할 수 있습니다.)find
주문하다.ls
사용과 같은 명령 ls -l
디렉터리에 있는 파일에 대한 자세한 정보를 봅니다.sed
주문하다.다음은 이 과정에서 사용할 몇 가지 명령입니다.
터치를 사용하여 파일을 빠르게 만들 수 있으므로 파일을 만들기 위해 수동으로 클릭할 필요가 없습니다.예를 들어, 우리는demo.py
문서:
같은 방법으로 다음과 같은 파일을 생성하고 싶다면test
예배 규칙서:
이 명령은 가장 일반적으로 사용되는 명령입니다. 사용하기 전에 컴퓨터 기술이 없는 학생들에게 디렉토리 구조를 설명하고 모든 사람이 이해할 수 있도록 그림을 그려야 합니다.
지금 우리가 사용하고 있는 것은root
루트 사용자의 홈 디렉터리이기도 합니다.~
, 리눅스 운영 체제에서/
루트 디렉터리를 나타냅니다. 루트 디렉터리에는 시스템에 필요한 많은 디렉터리와 파일이 있습니다.root
디렉토리 중.
현재 디렉터리를 나타냅니다...
표시된 상위 디렉터리입니다.만약 지금 들어가게 된다면test
디렉터리로 이동한 다음root
디렉토리, 우리는 이것을 할 수 있습니다:
우리는 사용할 수 있습니다pwd
현재 디렉터리를 보는 명령: 현재 어느 디렉터리에 있는지 쉽게 확인할 수 있습니다.
cat
이 명령은 파일의 내용을 볼 수 있으며 더 많은 명령을 사용할 수 있습니다.--help
보기 명령:
파일을 편집해야 할 때 사용할 수 있습니다vi
또는vim
명령에서 파일 편집에 들어가면 세 가지 모드가 있습니다.
사용하려면 편집 모드로 들어가세요.i
, vim의 편리함은 터미널에서 간단한 파일 수정을 할 수 있다는 것입니다.
**cp
**이 명령은 다음 과정에서 자주 사용됩니다. 일반적인 용도는 다음과 같습니다.
cp 源文件 目标文件
cp -r 源目录 目标目录
하지만 모델을 사용하려면 이 작업이 많은 디스크 공간을 차지하므로 일반적으로 다음을 사용합니다.ln
명령은 Windows 단축키와 동일합니다. Linux에는 두 가지 유형의 링크가 있습니다.하드 링크(하드 링크)와소프트 링크 (기호 링크) 하드 링크는 파일이 여러 이름을 가질 수 있음을 의미하는 반면, 소프트 링크는 내용이 다른 파일의 위치를 가리키는 특수 파일을 생성합니다. 하드 링크는 동일한 파일 시스템에 존재하지만 소프트 링크는 다른 파일 시스템에 걸쳐 있을 수 있습니다.
따라서 우리는 일반적으로 소프트 연결을 사용합니다. 일반적인 사용 방법은 다음과 같습니다.
ln [参数][源文件或目录][目标文件或目录]
매개변수는 다음과 같습니다:
mv
명령과rm
명령은 비슷한 방식으로 사용되지만mv
파일이나 디렉터리를 이동하는 데 사용되며 이름을 바꿀 수도 있습니다.rm
이 명령은 파일이나 디렉터리를 삭제하는 데 사용됩니다.
일반적으로 사용되는 방법은 다음과 같습니다.
일반적으로 사용되는 매개변수:
-i
: 대화형 모드, 덮어쓰기 전에 묻습니다.-f
: 강제 적용.-u
: 원본 파일이 대상 파일보다 최신인 경우에만 이동합니다.사용 예:
mv file1.txt dir1/
: 파일을 이동 file1.txt
디렉토리로 이동dir1
가운데.
mv file1.txt file2.txt
: 파일을 이동 file1.txt
다음으로 이름 바꾸기file2.txt
。
rm 명령:
일반적으로 사용되는 매개변수:
-i
: 대화형 모드이므로 삭제하기 전에 확인하세요.-f
: 확인 메시지 없이 존재하지 않는 파일을 무시하고 강제 삭제합니다.-r
:디렉토리와 해당 내용을 반복적으로 삭제합니다.사용 예:
rm file.txt
:파일 삭제 file.txt
。rm -r dir1/
: 반복적으로 디렉토리 삭제 dir1
그리고 그 모든 내용.디렉토리를 삭제하는 명령도 사용할 수 있습니다rmdir
。
find
이 명령은 Linux 시스템의 강력한 파일 검색 도구로, 지정된 디렉터리와 해당 하위 디렉터리에서 조건을 충족하는 파일이나 디렉터리를 찾아 해당 작업을 수행할 수 있습니다.
다음은find
명령의 몇 가지 일반적인 용도는 다음과 같습니다.
-name
파일 이름으로 파일을 찾는 옵션. 예를 들어,find /path/to/directory -name "file.txt"
지정된 디렉터리와 해당 하위 디렉터리를 검색합니다.file.txt
문서.-type
파일 유형별로 파일을 찾는 옵션. 예를 들어,find /path/to/directory -type f
지정된 디렉터리와 해당 하위 디렉터리에 있는 모든 일반 파일을 찾습니다.-size
파일 크기별로 파일을 찾는 옵션. 예를 들어,find /path/to/directory -size +100M
지정된 디렉터리와 해당 하위 디렉터리에서 100MB보다 큰 파일을 찾습니다.-mtime
、-atime
또는-ctime
옵션은 수정 시간, 액세스 시간 또는 상태 변경 시간을 기준으로 파일을 찾습니다. 예를 들어,find /path/to/directory -mtime -7
지정된 디렉터리와 해당 하위 디렉터리에서 7일 이내에 수정된 파일을 찾습니다.-perm
파일 권한을 기반으로 파일을 찾는 옵션입니다. 예를 들어,find /path/to/directory -perm 755
지정된 디렉터리와 해당 하위 디렉터리에서 권한이 755인 파일을 찾습니다.-user
또는-group
옵션은 소유자 또는 그룹별로 파일을 찾습니다. 예를 들어,find /path/to/directory -user username
지정된 디렉터리와 사용자에게 속한 하위 디렉터리를 검색합니다.username
문서.-exec
옵션은 발견된 파일에 대해 해당 작업을 수행할 수 있습니다. 예를 들어,find /path/to/directory -name "*.txt" -exec rm {} ;
다음으로 끝나는 모든 항목을 삭제합니다..txt
마지막에 파일.ls
이 명령은 디렉토리의 내용을 나열하는 데 사용할 수 있습니다.세부。
일반적으로 사용되는 매개변수와 사용 방법은 다음과 같습니다.
-a
: 숨겨진 파일을 포함한 모든 파일과 디렉터리를 표시합니다..
.)로 시작하는 파일 또는 디렉토리입니다.-l
: 파일 권한, 소유자, 크기, 수정 시간 등을 포함한 자세한 정보를 긴 형식으로 표시합니다.-h
:그리고-l
사람이 읽을 수 있는 방식으로 파일 크기를 표시하기 위해 조합하여 사용됩니다(예:K
、M
、G
기다리다).-R
: 하위 디렉터리의 내용을 재귀적으로 나열합니다.-t
: 파일이 수정된 시간순으로 표시됩니다. ,sed
Command는 주로 텍스트 처리에 사용되는 스트림 편집기입니다. 복잡한 파일 작업을 처리할 때 자주 사용됩니다.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"로 바꾸십시오.예제에 사용된echo
명령은 Python과 동일합니다.print
내용을 인쇄하는 데에도 동일합니다. 여기서는 파이프 문자를 사용합니다.>
InternLM을 파일로 인쇄합니다. 일반적으로 사용되는 파이프 문자는 다음과 같습니다.<
그리고|
, 예를 들어 다음을 사용할 수 있습니다.grep
Python에 설치된 포함 내용을 보는 명령os
필드 패키지:
grep
강력한 텍스트 검색 도구입니다. 일반적으로 사용되는 매개변수는 다음과 같습니다.
-i
: 대소문자 구분 없이 검색합니다.-v
: 일치 항목을 반전합니다. 즉, 일치하지 않는 행을 표시합니다.-n
: 줄 번호를 표시합니다.-c
: 일치하는 줄의 수를 셉니다.공정 관리명령은 시스템 모니터링 및 프로세스 관리를 위한 중요한 도구입니다. 일반적으로 사용되는 프로세스 관리 명령은 다음과 같습니다.
개발머신에도 특별한 명령어가 있습니다nvidia-smi
는 NVIDIA GPU 장치를 모니터링하고 관리하는 데 사용되는 NVIDIA 시스템 관리 인터페이스용 명령줄 도구입니다. GPU 상태, 사용량, 온도, 메모리 사용량, 전력 사용량, GPU에서 실행되는 프로세스 등의 정보를 빠르게 확인할 수 있는 방법을 제공합니다.
다음은 각 명령의 사용 예입니다.
ps
: 현재 시스템의 프로세스를 나열합니다. 다음과 같은 다양한 옵션을 사용하여 다양한 프로세스 정보를 표시할 수 있습니다.ps aux # 显示系统所有进程的详细信息
top
: 시스템의 프로세스 상태를 동적으로 표시합니다. 프로세스 목록을 실시간으로 업데이트하여 CPU 및 메모리 사용량이 가장 높은 프로세스를 표시합니다.top # 启动top命令,动态显示进程信息
pstree
: 현재 실행 중인 프로세스와 상위-하위 관계를 트리 다이어그램 형태로 표시합니다. pstree # 显示进程树
pgrep
: 기준에 맞는 프로세스를 찾습니다. 프로세스 이름, 사용자, 기타 조건을 기준으로 프로세스를 검색할 수 있습니다.pgrep -u username # 查找特定用户的所有进程
nice
: 프로세스의 우선순위를 변경합니다.nice
값이 낮을수록 프로세스 우선순위가 높아집니다.nice -n 10 long-running-command # 以较低优先级运行一个长时间运行的命令
jobs
: 백그라운드에서 실행 중인 프로세스를 포함하여 현재 터미널 세션의 작업 목록을 표시합니다. jobs # 列出当前会话的后台作业
bg
그리고fg
:bg
일시 중지된 프로세스를 백그라운드에서 실행하도록 설정하고,fg
백그라운드 프로세스를 다시 포그라운드로 가져옵니다.bg # 将最近一个挂起的作业放到后台运行
fg # 将后台作业调到前台运行
kill
: 일반적으로 프로세스를 종료하는 데 사용되는 지정된 프로세스에 신호를 보냅니다. kill PID # 杀死指定的进程ID
알아채다,kill
명령은 기본적으로 전송됩니다.SIGTERM
프로세스가 응답하지 않는 경우 사용할 수 있는 신호-9
사용SIGKILL
Signal은 프로세스를 강제로 종료합니다.
kill -9 PID # 强制杀死进程
SIGTERM
(신호 종료) 신호는 Unix 및 Unix 계열 운영 체제에서 프로세스 종료를 요청하는 데 사용되는 표준 신호입니다. 이 신호는 일반적으로 시스템이나 사용자가 프로세스를 정상적으로 종료하려고 할 때 전송됩니다.그리고SIGKILL
신호가 다르고,SIGTERM
신호는 프로세스에 의해 포착되고 처리될 수 있으므로 프로세스가 종료되기 전에 정리될 수 있습니다. (인터넷에서)
다음은 nvidia-smi
명령의 몇 가지 기본 명령 사용법:
nvidia-smi
nvidia-smi -l 1
이 명령은 1초마다 상태 정보를 업데이트합니다.
nvidia-smi -h
nvidia-smi pmon
nvidia-smi --id=0 --ex_pid=12345
그러면 GPU ID 0에서 PID 12345가 있는 프로세스가 강제로 종료됩니다.
nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1
첫 번째 명령은 모든 GPU를 성능 모드로 설정하고, 두 번째 명령은 ID 0의 GPU만 대상으로 합니다.
nvidia-smi --id=0 -r
그러면 ID 0으로 GPU가 다시 시작됩니다.
nvidia-smi -h
그림을 통해 GPU 정보를 소개하면 다음과 같습니다.
여기 도구가 있습니다TMUX
,TMUX
터미널 멀티플렉서입니다. 여러 터미널 사이를 쉽게 전환하고 분리한 다음(이렇게 하면 터미널이 종료되지 않고 백그라운드에서 계속 실행됨) 다른 터미널에 다시 연결할 수 있습니다. 이 도구를 소개하는 이유는 무엇입니까?나중에 할 일이니까Xtuner
모델을 미세 조정하는 데 시간이 오래 걸립니다.Tmux
프로그램이 종료되거나 중단되는 상황을 해결할 수 있습니다. 설치 및 사용 방법은 다음과 같습니다.
개발 머신은 우분투 운영 체제를 사용하기 때문에 다음을 사용할 수 있습니다.lsb_release -a
우분투 시스템 정보를 보는 명령:
그런 다음 사용apt install tmux
tmux를 설치하는 명령은 설치가 완료된 후 사용할 수 있습니다.tmux
tmux를 명령과 함께 사용할 수 있습니다. tmux를 종료하려면 "컨트롤+디"단축 키.
개발 컴퓨터에서는 /root 경로 아래의 파일만 영구적으로 저장됩니다. 다른 경로에 설치된 소프트웨어는 다시 시작한 후 재설정됩니다.
구체적인 사용 방법은 다음에서 확인할 수 있습니다.
https://www.ruanyifeng.com/blog/2019/10/tmux.html
Conda는 Windows, macOS 및 Linux에서 실행되는 오픈 소스 패키지 관리 및 환경 관리 시스템입니다. 소프트웨어 패키지와 해당 종속성을 신속하게 설치, 실행 및 업데이트합니다. Conda를 사용하면 로컬 컴퓨터에서 다양한 환경을 쉽게 생성, 저장, 로드 및 전환할 수 있습니다.
개발 머신에 이미 설치되어 있음conda
, 직접 사용할 수 있으며 개발 시스템에도 내장되어 있습니다.conda
주문하다studio-conda
, 아래에서 소개하겠습니다conda
기본 사용법 및studio-conda
사용방법 및 소개studio-conda
어떻게 달성됩니까?
다음 부분에서 소개하겠습니다.
우리는 사용할 수 있습니다conda --version
현재 개발 머신을 보려면conda
버전 정보:
우리가 사용하고 싶을 때conda
패키지를 설치할 때 속도가 매우 느려집니다. 설치 속도를 향상시키기 위해 국내 미러링을 설정할 수 있습니다. 예는 다음과 같습니다.
#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
하지만 우리가 일반적으로 사용하는pip
패키지 설치는 나중에 소개하겠습니다.pip
그리고conda
차이점.
Conda의 구성 정보를 보려면 다음을 사용할 수 있습니다.conda config --show
명령이 개발 시스템의 기본 설정인 경우 다음을 반환합니다. (정보의 일부)
이러한 구성은Conda
환경 구성은 소프트웨어 패키지 설치, 업데이트, 환경 관리 및 기타 작업의 방법과 결과에 영향을 미칩니다.
이 부분은conda
中非常重要的一部分,掌握了这一部分大家就可以将开发环境玩转到飞起了😀。
우리는 사용할 수 있습니다conda create -n name python``=3.10
가상 환경을 생성합니다. 즉, Python 버전 3.10 및 이름을 가진 가상 환경이 생성됩니다.생성 후 다음을 수행할 수 있습니다..conda
디렉토리 아래envs
디렉토리에서 찾았습니다.
Python 버전을 지정하지 않으면 최신 Python 버전을 기반으로 가상 환경이 자동으로 생성됩니다. 동시에 가상 환경을 생성하는 동안 필요한 패키지를 설치할 수 있습니다.conda create -n name numpy matplotlib python=3.10
(단, 이런 식으로 사용하는 것은 권장하지 않습니다.)
가상 환경을 생성하기 위한 일반적인 매개변수는 다음과 같습니다.
어떤 가상 환경이 있는지 확인하려면 다음 명령을 사용할 수 있습니다.
conda env list
conda info -e
conda info --envs
동시에 환경이 위치한 디렉터리도 볼 수 있습니다.
가상 환경을 만든 후에는 다음을 사용할 수 있습니다.conda activate name
가상 환경을 활성화하는 명령, 전환이 성공했는지 확인하는 방법은 무엇입니까?쉽죠 그냥 보세요(base)
생성된 가상환경의 이름이 되는지 여부입니다.
가상 환경을 종료하려면 다음을 사용할 수 있습니다.
conda activate
conda deactivate
두 명령 모두 반환됩니다.base
환경 때문에base
잘 관찰해 보면 콘다의 기본 환경이다.base
환경 디렉터리는 다른 가상 환경 디렉터리보다 높은 수준입니다.
가상 환경을 삭제하려면 다음을 사용할 수 있습니다.conda remove --name name --all
, 가상 환경에서 하나 또는 일부 패키지만 삭제하는 경우 다음을 사용할 수 있습니다.conda remove --name name package_name
일부 소프트웨어 패키지의 종속성은 매우 복잡하고 구성된 환경을 내보내면 다음에 복원할 수 있기 때문에 가상 환경 내보내기는 매우 필요합니다. 구성을 다른 사람과 공유할 수도 있습니다.
#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f myenv.yml
예를 들어 우리는xtuner0.1.17
가상 환경이 내보내지고 구성 정보는 다음과 같습니다.
여기에는 다음이 포함됩니다환경 이름、가상 환경 패키지의 온라인 저장소 위치그리고가상 환경 종속성 . 나중에 우리는 가상 환경을 신속하게 복원하기 위해 고급 사용 방법을 사용할 것입니다.
이 부분에서는 몇 가지를 소개합니다.conda
그리고pip
몇 가지 차이점:
바퀴 Python 설치 패키지 형식입니다.
이는 conda의 컴파일된 바이너리와 유사한 미리 컴파일된 바이너리 배포 형식입니다.
Wheel 형식의 주요 장점은 다음과 같습니다.
- 빠른 설치: 사전 컴파일되어 있으므로 설치 중에 소스 코드 설치와 같은 컴파일 과정을 거칠 필요가 없어 시간이 절약됩니다.
- 일관성: 다양한 시스템과 환경에서 설치 결과가 일관되게 유지됩니다.
예를 들어 대규모 Python 라이브러리를 설치하려는 경우 Wheel 형식을 사용하면 여러 컴퓨터의 컴파일 환경 차이로 인해 발생하는 설치 문제를 피할 수 있습니다. 또한 컴파일 환경이 없거나 컴파일 기능이 약한 시스템의 경우 휠 형식을 사용하면 설치 프로세스가 더 원활해질 수 있습니다.
이 부분은 확장된 부분인데, 이 부분이 매우 흥미롭고 매우 실용적이라고 생각하기 때문에 관심이 있으시면 배우시면 됩니다.
먼저 소개하자면studio-conda
는 개발 시스템에 내장된 명령이며 Shell 스크립트를 통해 구현됩니다. 쉘 스크립트란 무엇입니까?
쉘 스크립트 Unix/Linux 또는 유사한 운영 체제 환경에서 작업을 자동화하기 위해 특정 순서로 배열된 일련의 명령이 포함된 텍스트 파일입니다.
쉘 스크립트는 일반적으로 쉘 언어로 작성됩니다. Bash, Sh 등의 일반적인 쉘 언어는 앞서 소개한 기본 Linux 명령으로 쉘 언어에 속합니다.
여기에는 다음과 같은 중요한 기능이 있습니다.
저것studio-conda
이는 자동화의 일부입니다. 개발 시스템에서 루트 사용자의 bash 환경 구성 파일은 다음과 같습니다..bashrc
이지만 실제로 기본 구성 파일은 다음과 같습니다./share/.aide/config/bashrc
, 이 파일에는 다음과 같은 일부 작업을 보다 빠르게 수행할 수 있는 몇 가지 명령이 기록되어 있습니다.
export no_proxy='localhost,127.0.0.1,0.0.0.0,172.18.47.140'
export PATH=/root/.local/bin:$PATH
export HF_ENDPOINT='https://hf-mirror.com'
alias studio-conda="/share/install_conda_env.sh"
alias studio-smi="/share/studio-smi"
export
환경 변수를 설정하는 데 사용됩니다.alias
sh 파일을 변수에 복사하는 것입니다. 이는 터미널에서 명령으로 실행할 수 있습니다.studio-conda
그게 다야.
여기studio-smi
열 때 가상 메모리 사용량을 확인하는 데 사용됩니다./share/studio-smi
파일은 다음과 같이 볼 수 있습니다.
#!/bin/bash
if command -v vgpu-smi &> /dev/null
then
echo "Running studio-smi by vgpu-smi"
vgpu-smi
else
echo "Running studio-smi by nvidia-smi"
nvidia-smi
fi
이 스크립트는 다음이 있는지 확인하는 데 사용됩니다. vgpu-smi
명령이 있으면 실행됩니다.vgpu-smi
가상 GPU(vGPU)에 대한 상태 정보를 표시하기 위해 실행됩니다.nvidia-smi
NVIDIA GPU 상태 정보를 표시합니다. 아래 그림과 같이:
nvidia-smi
물리적 NVIDIA GPU 장치를 모니터링하고 관리하기 위한 도구입니다.vgpu-smi
NVIDIA vGPU 기술을 통해 가상화된 GPU 리소스를 모니터링하고 관리하도록 설계되었습니다.
우리는 본다/share/install_conda_env.sh
파일의 내용은 다음과 같습니다.
#!/bin/bash
# clone internlm-base conda env to user's conda env
# created by xj on 01.07.2024
# modifed by xj on 01.19.2024 to fix bug of conda env clone
# modified by ljy on 01.26.2024 to extend
XTUNER_UPDATE_DATE=`cat /share/repos/UPDATE | grep xtuner |awk -F= '{print $2}'`
HOME_DIR=/root
CONDA_HOME=$HOME_DIR/.conda
SHARE_CONDA_HOME=/share/conda_envs
SHARE_HOME=/share
list() {
cat <<-EOF
预设环境 描述
internlm-base pytorch:2.0.1, pytorch-cuda:11.7
xtuner Xtuner(源码安装: main $(echo -e "033[4mhttps://github.com/InternLM/xtuner/tree/main033[0m"), 更新日期:$XTUNER_UPDATE_DATE)
pytorch-2.1.2 pytorch:2.1.2, pytorch-cuda:11.8
EOF
}
help() {
cat <<-EOF
说明: 用于快速clone预设的conda环境
使用:
1. studio-conda env -l/list 打印预设的conda环境列表
2. studio-conda <target-conda-name> 快速clone: 默认拷贝internlm-base conda环境
3. studio-conda -t <target-conda-name> -o <origin-conda-name> 将预设的conda环境拷贝到指定的conda环境
EOF
}
clone() {
source=$1
target=$2
if [[ -z "$source" || -z "$target" ]]; then
echo -e "033[31m 输入不符合规范 033[0m"
help
exit 1
fi
if [ ! -d "${SHARE_CONDA_HOME}/$source" ]; then
echo -e "033[34m 指定的预设环境: $source不存在033[0m"
list
exit 1
fi
if [ -d "${CONDA_HOME}/envs/$target" ]; then
echo -e "033[34m 指定conda环境的目录: ${CONDA_HOME}/envs/$target已存在, 将清空原目录安装 033[0m"
wait_echo&
wait_pid=$!
rm -rf "${CONDA_HOME}/envs/$target"
kill $wait_pid
fi
echo -e "033[34m [1/2] 开始安装conda环境: <$target>. 033[0m"
sleep 3
tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}
wait_echo&
wait_pid=$!
conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
if [ $? -ne 0 ]; then
echo -e "033[31m 初始化conda环境: ${target}失败 033[0m"
exit 10
fi
kill $wait_pid
# for xtuner, re-install dependencies
case "$source" in
xtuner)
source_install_xtuner $target
;;
esac
echo -e "033[34m [2/2] 同步当前conda环境至jupyterlab kernel 033[0m"
lab add $target
source $CONDA_HOME/bin/activate $target
cd $HOME_DIR
echo -e "033[32m conda环境: $target安装成功! 033[0m"
echo """
============================================
ALL DONE!
============================================
"""
}
······
dispatch $@
그들 중 하나*list
*()
잠깐, 그게 다야studio-conda
특정 작업을 구현할 수 있는 함수, 예를 들어 다음을 사용할 수 있습니다.studio-conda env list
기본 환경을 보려면 다음 안내를 따르세요.
안에*clone
*()
함수의 주요 기능은 환경을 복사하는 것이지만 실제로는 기본 환경에서만 복사할 수 있습니다.
tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}
conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
사전 설정된 환경의 압축 패키지를 풀고 Clone을 통해 가상 환경을 생성합니다. 다만, Shell 스크립트에도 일부 로직이 설정되어 있지만 이는 어느 정도 프로그래밍 언어에 익숙하다면 어느 정도 판단할 수 있을 뿐입니다. 이해하지 못하더라도 큰 문제는 아닙니다.
그렇다면 우리가 직접 만든 환경을 어떻게 추가합니까?studio-conda
중간은 어떻습니까?
첫 번째 단계는 /share/conda_envs 아래에 새 conda 환경을 만드는 것입니다.
conda create -p /share/conda_envs/xxx python=3.1x
두 번째 단계는 로컬 시스템의 /root/.conda/pkgs 아래에 있는 파일을 /share/pkgs에 복사하고 다시 압축하고 교체하는 것입니다. (이 단계는 반복적인 다운로드를 피하기 위해 conda 생성 프로세스 중에 대규모 공용 패키지를 저장하는 것입니다.)
cp -r -n /root/.conda/pkgs/* /공유/pkgs/
cd /share && tar -zcvf pkgs.tar.gz pkgs
세 번째 단계는 install_conda_env.sh의 목록 기능을 업데이트하고 새로운 conda 환경 설명을 추가하는 것입니다.
위의 방법은 개발머신에서 기본적으로 제공하는 방법입니다. 사실 앞서 사용했던 또 다른 방법이 있습니다.conda
수출됨xtuner0.1.17
가상 환경을 위한 구성 파일을 사용할 수 있습니다.conda env create -f xtuner0.1.17.yml
가상 환경을 복원하는 명령입니다.이 작업을 구현하기 위해 간단한 셸 스크립트를 작성해 보겠습니다.test.sh
파일에 다음 내용을 작성합니다.
#!/bin/bash
# 定义导出环境的函数
export_env() {
local env_name=$1
echo "正在导出环境: $env_name"
# 导出环境到当前目录下的env_name.yml文件
conda env export -n "$env_name" > "$env_name.yml"
echo "环境导出完成。"
}
# 定义还原环境的函数
restore_env() {
local env_name=$1
echo "正在还原环境: $env_name"
# 从当前目录下的env_name.yml文件还原环境
conda env create -n "$env_name" -f "$env_name.yml"
echo "环境还原完成。"
}
# 检查是否有足够的参数
if [ $# -ne 2 ]; then
echo "使用方法: $0 <操作> <环境名>"
echo "操作可以是 'export' 或 'restore'"
exit 1
fi
# 根据参数执行操作
case "$1" in
export)
export_env "$2"
;;
restore)
restore_env "$2"
;;
*)
echo "未知操作: $1"
exit 1
;;
esac
셸 스크립트 생성을 완료한 후 다음 명령을 사용하여 스크립트에 권한을 부여해야 합니다.chmod +x test.sh
을 입력한 다음 입력하세요../test.sh restore xtuner0.1.17
그리고 Enter를 누르면 가상 환경이 복원됩니다.
그러나 이는 직접 사용하는 것과 크게 다르지 않습니다.studio-conda
명령을 결합하면 매우 편리하지만 환경을 복사하는 방법이 다릅니다.따라서 이를 구현하려면 다음을 수행해야 합니다./share/install_conda_env.sh
파일의 논리가 수정되었습니다.
좋습니다. 위 내용이 앞으로 모든 사람에게 도움이 되기를 바랍니다. Linux에 대해 더 자세히 알고 싶으시면 제 블로그 글을 읽어보세요. , 우리가 배우는 데 도움이 될 것입니다. 대형 모델은 큰 영향을 미치지 않지만 Linux를 잘 배우면 대형 모델 학습이 매우 원활해질 것입니다. 마지막으로, 앞서 설정한 레벨을 완료하는 것을 잊지 마세요!
블로그 링크:리눅스
신중하게 실행하세요! ! ! !모든 데이터는 손실됩니다. InternStudio 플랫폼에서만 사용할 수 있습니다. 자신의 컴퓨터에서는 이 작업을 수행하지 마세요.
rm -rf /root
, 기다리는 데 10분 정도 걸릴 것 같아요ln -s /share /root/share
레벨 미션을 통과하려면 주요 단계에서 스크린샷을 찍어야 합니다.
임무 세부정보 | 완료하는 데 필요한 시간 | |
---|---|---|
사명 | SSH 연결 및 포트 매핑을 완료하고 실행합니다.hello_world.py | 10 분 |
선택적 작업 1 | 개발 머신에서 기본 Linux 명령을 완료합니다. | 10 분 |
선택적 작업 2 | VSCODE를 사용하여 개발 머신에 원격으로 연결하고 Conda 환경을 만듭니다. | 10 분 |
선택적 작업 3 | 생성 및 실행test.sh 문서 | 10 분 |