Обмен технологиями

Уровень 1: Базовые знания Linux.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Каталог основ Linux

Предисловие

Эта статья представляет собой заметки третьего крупномасштабного модельного тренировочного лагеря для ученых, организованного Шанхайской лабораторией искусственного интеллекта. Она предназначена только для справки отдельными людьми и ассистентами преподавателей при исправлении домашних заданий.Оригинальная ссылка на учебник
Чтобы зарегистрироваться, введите в поиске «Третий учебный модельный практический лагерь» в WeChat.
Эта заметка представляет собой заметку с личными аннотациями, измененную на основе исходного руководства.

Уровень Linux+InternStudio

😀Hello大家好,欢迎来到Большая модель ученогоПрактический лагерь. Это базовый курс, подготовленный практическим лагерем для студентов, впервые участвующих в практическом лагере, и студентов из различных отраслей, не имеющих базовых знаний о Linux. Здесь мы научим вас, как его использовать.Машина разработки InternStudioи освоить некоторые основыЗнание Linux , чтобы все не знали, с чего начать на следующих курсах. Надеюсь, это будет полезно всем. Мы подготовили для вас несколько задач уровня здесь. Когда вы выполните необходимые задачи уровня и зарегистрируетесь, вы получите награду за вычислительную мощность текущего уровня.Давайте начнем!

1. Знакомство с машиной разработки InternStudio.

InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。

Если вы хотите узнать больше о InternStudio, вы можете проверить следующие документы: InternStudio

https://studio.intern-ai.org.cn/

Сначала откройте ссылку выше, чтобы войти в InternStudio. После входа вы автоматически перейдете к интерфейсу консоли, как показано на рисунке ниже:

Вставьте сюда описание изображения

Позвольте мне рассказать вам функции страниц, соответствующих каждому серийному номеру:

  1. Здесь вы можете создатьМашина разработки, а также изменять конфигурацию машины разработки, просматривать соответствующие журналы и т. д.

Вставьте сюда описание изображения

  1. ОК здесьВизуализация Просмотр файлов и папок на компьютере разработки. Если вы создаете две машины разработки, они используют один и тот же облачный диск. (Поскольку каждая машина разработки представляет собой Docker-контейнер, к нему подключается один облачный диск хранения. Объяснения профессиональных терминов см. в разделе: Разъяснение профессиональных терминов) Здесь вы можете загружать файлы или папки, создавать файлы и просматривать скрытые файлы.

Вставьте сюда описание изображения

  1. Это новая функция машины разработки. Если вы хотите заняться проектом, вы можете подать заявку на ресурсы от помощника. Функция команды предназначена для всех участников.Общие вычислительные ресурсы,避免造成资源浪费。(毕竟烧的可都是💴啊)
  2. Это используется для настройкиSSH-ключ, о том, как его использовать, мы поговорим позже.
  3. Последнее место предназначено для редактирования вашей личной информации и проверки вашегоВычислительные ресурсыконкретное использование.

Выше приведено краткое введение в платформу InternStudio. Давайте посмотрим, как создать машину для разработки. Перейдем на домашнюю страницу и нажмем «.Создайте машину разработки

Вставьте сюда описание изображения

Здесь мы решили создатьмашина личного развития, по именитестКудаВерсия 12.2,Распределение ресурсовВыберите 10%, и продолжительность по умолчанию подойдет.

После завершения создания вМашина разработкиВ интерфейсе вы можете увидеть только что созданную машину разработки. Нажмите, чтобы войти в машину разработки.

Вставьте сюда описание изображения

После входа в машину разработки вы можете увидеть главную страницу машины разработки. Машина разработки имеет три режима на выбор:JupyterLab, Терминал и VScode

Вставьте сюда описание изображения

в:

  1. JupyterLab: интерактивная среда программирования и обучения со встроенным терминалом, который позволяет легко просматривать файлы, выполнять код и т. д.
  2. Терминал(Терминал, самый легкий): в основном используется для операций командной строки или запуска сценариев и простых программ.
  3. VSCode: VSCode, интегрированный в веб-страницу, также можно разработать удаленно через SSH-соединение в локальном VSCode. Ниже объясняется, как настроить удаленное соединение.

Вставьте сюда описание изображения

  1. Это использование ресурсов, которые будут использоваться в последующих курсах.

2. SSH и сопоставление портов

Мы представили вышеПлатформа InternStudioи как создать машину разработки. В этом разделе мы хотим понять, что именно.SSHЗачем использовать удаленное подключение, Как использовать SSHудаленное соединениеМашина разработки, что это такоеСопоставление портови как действоватьСопоставление портов

2.1 Что такое SSH?

SSHПолное название — Secure Shell, что переводится на китайский язык как безопасная оболочка.протокол сетевой безопасности реализовать безопасный доступ, передачу файлов и другие услуги с помощью механизмов шифрования и аутентификации. Протокол SSH обеспечивает безопасные сетевые услуги в незащищенной сетевой среде путем шифрования и аутентификации сетевых данных.

SSH (архитектура C/S)сервериклиентЧтобы установить безопасный канал SSH, обеим сторонам необходимо сначала установить TCP-соединение, затем согласовать номер версии и различные используемые алгоритмы и сгенерировать одно и то же.сеансовый ключ используется для последующего симметричного шифрования. После завершения аутентификации пользователя обе стороны могут установить сеанс для обмена данными.

Тогда в последующей практике мы будемНастройте ключи SSH, ключ конфигурации предназначен для того, чтобы нам не приходилось вводить пароль повторно при удаленном подключении к машине разработки, а затемЗачем подключаться удаленно?

Преимущество удаленного подключения заключается в том, что если вы используете удаленный офис, вы можете удаленно подключиться к машине разработки через SSH, чтобы можно было разрабатывать локально. А если вам нужно запустить какой-то локальный код и у вас нет окружения, то удаленное подключение очень необходимо.

2.2 Как использовать SSH для удаленного подключения к машине разработки?

2.2.1 Использование пароля для удаленного подключения по SSH

Сначала воспользуемся методом ввода пароля для удаленного подключения по SSH. Далее поговорим о том, как настроить беспарольный вход.

После завершения создания машины разработки нам нужно открыть терминал PowerShell нашего компьютера и использоватьWin+R Используйте горячую клавишу, чтобы открыть окно «Выполнить», введите powerShell и откройте терминал PowerShell. (Если вы используете операционную систему Linux или Mac, следующие шаги одинаковы)

Возвращаемся на платформу разработки машины и входимМашина разработкиНайдите на странице созданную нами машину разработки и нажмитеSSH-соединение

Вставьте сюда описание изображения

Вставьте сюда описание изображения

затем скопируйтеКоманда входа, 37367 — это порт SSH, используемый машиной разработки. Обычно используется порт 22. Без этого номера порта вы не можете подключиться к SSH, и порты у всех разные, поэтому, если вы подключаетесь к машине разработки, вы не можете подключиться. , вам нужно проверить, правильный ли порт.

Вставляем скопированную команду в powershell и нажимаем Enter. Здесь нам нужно ввести пароль. Копируем пароль под командой входа и вставляем его в терминал.Обратите внимание, что после копирования пароля щелкните правой кнопкой мыши, чтобы вставить его. На некоторых компьютерах для вставки используется клавиша быстрого доступа оболочки.shift+ins, вставленный сюда пароль не будет отображаться, это нормально.

Наконец, нажмите Enter, и появится следующее содержимое, указывающее на успех:

Вставьте сюда описание изображения

Вставьте сюда описание изображения

После подключения к машине разработки мы можем использоватьhostnameЧтобы просмотреть имя машины разработки, используйтеuname -aЧтобы просмотреть информацию о ядре машины разработки, используйтеlsb_release -aЧтобы просмотреть информацию о версии машины разработки, используйтеnvidia-smiПроверьте информацию о графическом процессоре. Об этих командах мы поговорим позже. Если вы хотите выйти из удаленного подключения, введите его дважды.exitВот и все.

2.2.2 Настройка ключа SSH для удаленного подключения SSH

Но когда мы разрабатываем и учимся, вводить пароль каждый раз удаленно затруднительно. Мы можем настроить SSH-ключ, чтобы пропустить этап ввода пароля, мы можем использовать команду ssh.ssh-keygenкоманда для генерации ключа

Ключ SSH — это безопасный и удобный метод аутентификации входа в систему, используемый для аутентификации и зашифрованной связи по протоколу SSH.

ssh-keygenПоддерживает ключи аутентификации RSA и DSA.

Обычно используемые параметры включают в себя:

  • -t: укажите тип ключа, например dsa, ecdsa, ed25519, rsa.
  • -b: указать длину ключа.
  • -C: Добавить комментарии.
  • -f: укажите имя файла для сохранения ключа.
  • -i: читать незашифрованные файлы с закрытым/открытым ключом, совместимые с ssh-v2.

Здесь мы используем алгоритм RSA для генерации ключа, команда:

ssh-keygen -t rsa
  • 1

После ввода командыВходите до концаВсё, ключ здесь генерируется по умолчанию в~/.ssh/в каталоге,~Это означает домашний каталог, если это Windows, то этоC:Users{your_username} .Может использоваться в PowerShell.Get-ContentКоманда для просмотра сгенерированного ключа, который можно использовать, если это операционная система Linux.catЗаказ.

Вставьте сюда описание изображения

Вставьте сюда описание изображения

Затем мы возвращаемся на платформу машины разработки и нажимаем «Конфигурация» на главной странице.SSH-ключ, затем нажмитеДобавить открытый ключ SSH

Вставьте сюда описание изображения

Вставьте сюда описание изображения

Скопируйте только что сгенерированный ключ и вставьте его в поле открытого ключа. Имя будет автоматически распознано. Наконец, нажмите «Добавить сейчас», и настройка SSH-ключа завершена.

Вставьте сюда описание изображения

После завершения создания SSH-ключа перезапуститеТерминалПри удаленном подключении этап ввода пароля будет пропущен.

2.2.3 Использование VScode для удаленного подключения по SSH

Конечно, вы также можете использовать программное обеспечение для удаленного подключения SSH, например:Windterm、Xterminal ждать. Здесь мы используем 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Если вы хотите добавить некоторые из следующих параметров конфигурации вручную, вам необходимо изменить соответствующие части в соответствии с приведенным выше форматом.

Если *StrictHostKeyChecking noиUserKnownHostsFile* /dev/nullУдалите всплывающее окно, которое будет всплывать для проверки отпечатка пальца:

Вставьте сюда описание изображения

StrictHostKeyChecking no Указывает, что строгая проверка ключей хоста отключена. Это означает, что при подключении к новому SSH-серверу ключ хоста сервера не будет строго проверен, что может представлять определенную угрозу безопасности.

UserKnownHostsFile /dev/nullОн устанавливает файл ключей хоста, известный пользователю, в /dev/null, что по существу игнорирует запись и использование известных ключей хоста.

Однако в общей практике безопасности не рекомендуется произвольно отключать строгую проверку ключей хоста.

Затем нажмите «Подключиться» в окне подсказки, которое появляется в правом нижнем углу, чтобы удаленно подключиться к машине разработки.

Вставьте сюда описание изображения

Вставьте сюда описание изображения

После завершения удаленного подключения вы можете выбрать папку для открытия, которую также можно назвать рабочим каталогом. Вы можете выбрать папку на компьютере разработки или локальную. Папка на компьютере разработки — это то, что мы упоминали ранее.облачный диск

Когда вы в следующий раз выполните удаленное подключение, вам не нужно будет вводить команды входа и другую информацию. Вам нужно только открыть удаленное соединение vscode, чтобы просмотреть информацию о машине разработки для первого подключения, как показано ниже.rootЭто означает, что когда мы впервые подключаемся к машине разработки, мы используем/rootСписок работ.

Вставьте сюда описание изображения

И на картинке ниже->Указывает, что вам необходимо повторно выбрать рабочий каталог после входа на машину разработки:

Вставьте сюда описание изображения

И на картинке ниже->Указывает вход в рабочий каталог, выбранный последней машиной разработки:

Вставьте сюда описание изображения

Рабочий каталог, выбираемый каждый раз, будет отображаться под информацией о машине разработки: (здесь есть дополнительный рабочий каталог для лагента)

Вставьте сюда описание изображения

Далее мы расскажем, когдаСопоставление портов

2.3. Сопоставление портов.

2.3.1 Что такое сопоставление портов?

Сопоставление портов Это сетевая технология, которая может сопоставить любой порт во внешней сети с соответствующим портом во внутренней сети для реализации связи между внутренней сетью и внешней сетью. Благодаря сопоставлению портов к службам или приложениям в интрасети можно получить доступ из внешней сети, что обеспечивает удобное взаимодействие по сети.

Так почему же нам нужно выполнять сопоставление портов при использовании машины разработки?

Потому что на последующих курсах мы будем проводить моделивеб_демо В практике развертывания во время этого процесса вы, скорее всего, столкнетесь с проблемой неполной загрузки веб-интерфейса.Это связано с тем, что при запуске web_demo в Web IDE на компьютере разработки прямой доступ к службе http/https на компьютере разработки может привести к проблемам с прокси-сервером.ресурсы пользовательского интерфейсаНе загружен полностью.

Итак, чтобы решить эту проблему, нам нужно сопоставить порты соединения с запущенным web_demo иВнешние сетевые ссылки сопоставляются с нашим локальным хостом. , мы используем доступ к локальному соединению для решения этой проблемы с прокси. Давайте попрактикуемся сейчас.

Вставьте сюда описание изображения

Давайте сначала поймем, как работает сопоставление портов машины разработки, на основе диаграммы:

Ниже приведены практические шаги. Сначала разберитесь, как выполнить сопоставление портов.

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Выше приведена команда сопоставления портов. Запустите эту команду на хосте, чтобы выполнить сопоставление портов. Вот блок-схема, позволяющая понять процесс сопоставления портов:

Вставьте сюда описание изображения

Персональный компьютер будет удаленно подключаться к единственному открытому порту 37367 машины разработки (это упоминается во время SSH, а открытый порт каждой машины разработки различен) и устанавливать параметры туннеля. Открытый порт служит транзитной станцией для пересылки трафика.

  • -C: Включите сжатие, чтобы уменьшить объем передаваемых данных.
  • -N: Не выполняет удаленные команды, только устанавливает туннели.
  • -g: разрешить удаленным хостам подключаться к локально перенаправленным портам.

Когда эта команда SSH выполняется на персональном компьютере, клиент SSH будет прослушивать порт 7860 локального компьютера.

Любой трафик, отправленный на локальный порт 7860, будет перенаправлен по SSH-туннелю на порт 7860 по адресу 127.0.0.1 удаленного сервера.

Это означает, что даже если этот порт машины разработки не доступен напрямую из внешней сети, мы можем безопасно получить доступ к службам на удаленном сервере через этот туннель. .

2.3.2 Как выполнить сопоставление портов?
2.3.2.1 Использование команды ssh для сопоставления портов

Мы все равно заходим в интерфейс машины разработки, находим нашу машину разработки и нажимаемТаможенные услуги, скопируйте первую команду,
Вставьте сюда описание изображения

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Давайте познакомим его со значением каждой части команды:

  • -p 37367: указывает порт для SSH-подключения 37367, о котором упоминалось ранее.
  • [email protected]: Указывает на использование root Идентификация пользователя подключается к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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

Помните после редактирования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
  • 1

Вставьте сюда описание изображения

Это символизирует успех. (Уведомление: эта команда не возвращает никакого содержимого, что означает, что выполняется сопоставление портов, и затем вы можете увидеть веб-интерфейс пользовательского интерфейса, открыв соединение на веб-странице)

Вставьте сюда описание изображения

2.3.2.2 Использование vscode для сопоставления портов

Конечно, если мы запускаем разные веб-интерфейсы, нам нужно многократно вводить команды, что очень хлопотно, и нам нужно использовать VScode.Мы подключили машину разработки удаленно через SSH, обеспечивая автоматическое сопоставление портов. Нам не нужно настраивать его вручную. Мы можем использовать сочетание клавиш «Ctrl+Shift+~».Разбудить терминал, параметры порта можно найти в правой части терминала:

Вставьте сюда описание изображения

Здесь вы можете просмотреть информацию о сопоставлении портов. Если вам нужно изменить порт, вы можете изменить номер порта в столбце порта.

3. Основные команды Linux

В этой части я познакомлю вас с некоторыми аспектами Linux.Основные операции и использовать некоторые инструменты. Чтобы каждый мог решить эту проблему самостоятельно, когда у него возникнут проблемы. Если у вас возникнут какие-либо проблемы, вы также можете оставить комментарий здесь, и я отвечу вам вовремя.

потому что мы используемМашина разработкиредко используемыйуправление полномочиями , поэтому мы не будем его вводить. (Все следующие операции выполняются в терминале VScode)

3.1 Управление файлами

В Linux общие операции управления файлами включают в себя:

  • Создать файл:можешь использовать touch команда создает пустой файл.
  • Создать каталог:использовать mkdir Заказ.
  • Переключение каталогов:использоватьcdЗаказ.
  • Показать каталог:использоватьpwdЗаказ.
  • Просмотр содержимого файла: Если используется cat Непосредственно отображать все содержимое файла,more иless Можно посмотреть страницами.
  • Редактировать файл:нравиться vi илиvim Подождите редактора.
  • Копировать файлы:использовать cp Заказ.
  • Создать ссылку на файл:использоватьlnЗаказ.
  • Переместить файлы:проходить mv Заказ.
  • Удалить файлы:использовать rm Заказ.
  • удалить каталогrmdir(Удалить можно только пустые каталоги) или rm -r(Непустые каталоги можно удалить).
  • Найти файлы:Можешь использовать find Заказ.
  • Просмотр сведений о файле или каталоге:использоватьlsкоманда, например, использование ls -lПросмотр подробной информации о файлах в каталоге.
  • Обрабатывать файлы: Для сложных файловых операций вы можете использоватьsedЗаказ.

Вот несколько команд, которые мы будем использовать в курсе:

3.1.1 трогать

Мы можем использовать сенсорное управление для быстрого создания файлов, поэтому нам не нужно нажимать вручную, чтобы создать их.Например, мы хотим создатьdemo.pyдокумент:

3.1.2 mkdir

Таким же образом, если вы хотите создать файл с именемtestКаталог:

Вставьте сюда описание изображения

3.1.3 CD

Эта команда будет наиболее часто используемой командой. Прежде чем использовать ее, вам необходимо объяснить структуру каталогов студентам, не имеющим навыков работы с компьютером, и нарисовать понятную всем картинку:

Вставьте сюда описание изображения

Сейчас мы используемrootкаталог, который также является домашним каталогом пользователя root.~, в операционной системе Linux/Представляет корневой каталог. В корневом каталоге находится множество каталогов и файлов, которые мы только что создали.rootкаталог, среди которого.Представляет текущий каталог,.. Представлен родительский каталог.Если бы я вошёл сейчасtestкаталог, а затем вернитесь вrootКаталог, мы можем сделать это:

3.1.4 пвд

мы можем использоватьpwdКоманда для просмотра текущего каталога: это позволяет нам легче определить, в каком каталоге мы сейчас находимся.

Вставьте сюда описание изображения

3.1.5 кот

catКоманда может просматривать содержимое файла, и можно использовать другие команды.--helpКоманда для просмотра:

  • -a, --show-all эквивалентно -vET
  • -b, –number-non пустое количество непустых выходных строк, переопределяет -n
  • -e, эквивалент -vE
  • -E, --show -end отображает $ в конце каждой строки
  • -n, --number номер всех выходных строк
  • -s, --crick-blank подавляет повторяющиеся пустые строки вывода
  • -t эквивалентно -vT
  • -t, --show-tabs отображает символы табуляции как ^I
  • -v, --show при непечатании использует ^ и M-нотацию, за исключением LFD и TAB
3.1.6 ви или вим

Мы можем использовать его, когда нам нужно редактировать файлы.viилиvimКоманда, когда вы входите в редактирование файла, есть три режима:

Вставьте сюда описание изображения

Войдите в режим редактирования, чтобы использоватьi, удобство vim в том, что в терминале можно вносить простые изменения в файлы.

3.1.7 cp и ln (курсив)

**cp**Эта команда будет часто использоваться в следующих курсах. Она используется для копирования файла или каталога в другой каталог.

  • Скопируйте файлы:cp 源文件 目标文件
  • Скопировать каталог:cp -r 源目录 目标目录

Но если мы хотим использовать модель, эта операция займет много дискового пространства, поэтому мы обычно используемln команда, это то же самое, что и ярлык Windows. В Linux есть два типа ссылок:жесткая ссылка(жесткая ссылка) смягкая ссылка (символическая ссылка), жесткая ссылка означает, что файл может иметь несколько имен, а мягкая ссылка создает специальный файл, содержимое которого указывает на местоположение другого файла. Жесткие ссылки существуют в одной файловой системе, но мягкие ссылки могут охватывать разные файловые системы.

Поэтому мы обычно используем мягкие соединения. Общие методы использования следующие:

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

Параметры следующие:

  • -s: создание мягких ссылок (символических ссылок) также наиболее часто используется;
  • -f: принудительное выполнение, перезапись существующих целевых файлов;
  • -i: интерактивный режим, если файл существует, пользователю будет предложено перезаписать его;
  • -n: рассматривать символические ссылки как общие каталоги;
  • -v: Отобразить подробную обработку.
3.1.8 МВ и РМ

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

3.1.9 находить

findКоманда представляет собой мощный инструмент поиска файлов в системе Linux. Она может находить файлы или каталоги, соответствующие условиям, в указанном каталоге и его подкаталогах и выполнять соответствующие операции.

Ниже приводитсяfindНекоторые распространенные варианты использования команды:

  1. Найти по имени файла:использовать-name возможность поиска файлов по имени файла. Например,find /path/to/directory -name "file.txt"будет искать указанный каталог и его подкаталоги с именемfile.txtдокумент.
  2. Найти по типу файла:использовать-type возможность поиска файлов по типу файла. Например,find /path/to/directory -type fБудут найдены все обычные файлы в указанном каталоге и его подкаталогах.
  3. Найти по размеру файла:использовать-size возможность поиска файлов по размеру файла. Например,find /path/to/directory -size +100MНайдет файлы размером более 100 МБ в указанном каталоге и его подкаталогах.
  4. Поиск по времени модификации:использовать-mtime-atimeили-ctime Опции находят файлы по времени их изменения, времени доступа или времени изменения статуса. Например,find /path/to/directory -mtime -7Найдет файлы в указанном каталоге и его подкаталогах, которые были изменены в течение 7 дней.
  5. Найти по правам доступа к файлу:использовать-perm возможность поиска файлов на основе прав доступа к файлам. Например,find /path/to/directory -perm 755Найдёт файлы с разрешением 755 в указанном каталоге и его подкаталогах.
  6. Поиск по пользователю или группе:использовать-userили-group Опции поиска файлов по их владельцу или группе. Например,find /path/to/directory -user usernameБудет искать указанный каталог и его подкаталоги, принадлежащие пользователю.usernameдокумент.
  7. выполнять операции:использовать-exec Опции могут выполнять соответствующие операции над найденными файлами. Например,find /path/to/directory -name "*.txt" -exec rm {} ;удалит все найденные, заканчивающиеся на.txtфайл в конце.
3.1.10 лс

lsЭту команду можно использовать для вывода списка содержимого каталога, а такжеподробности

Обычно используемые параметры и методы использования следующие:

  • -a: Отображение всех файлов и каталогов, включая скрытые файлы (кроме.файл или каталог, который начинается с .).
  • -l: отображает подробную информацию в длинном формате, включая права доступа к файлу, владельца, размер, время изменения и т. д.
  • -h-lИспользуется в сочетании для отображения размера файла в удобочитаемой форме (например,KMGждать).
  • -R: Рекурсивно перечислять содержимое подкаталогов.
  • -t : Отображение в порядке времени изменения файла. ,

Вставьте сюда описание изображения

3.1.11 сед

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».
  • Пример:

Вставьте сюда описание изображения

используется в примереechoкоманда, это то же самое, что и в PythonprintТо же самое, используется для печати содержимого, здесь используется символ вертикальной черты.>Распечатайте InternLM в файл. Часто используемые символы вертикальной черты включают в себя.<и|, например, мы можем использоватьgrepКоманда для просмотра установленных включений в PythonosПолевой пакет:

Вставьте сюда описание изображения

grep Это мощный инструмент текстового поиска. Обычно используемые параметры следующие:

  • -i: Поиск независимо от регистра.
  • -v: инвертирует совпадение, т.е. отображает несовпадающие строки.
  • -n: Отображение номера строки.
  • -c: подсчитайте количество совпадающих строк.

3.2 Управление процессами

Управление процессомКоманды являются важными инструментами для мониторинга системы и управления процессами. К наиболее часто используемым командам управления процессами относятся следующие:

  • пс: просмотр запущенных процессов
  • вершина:Динамическое отображение запущенных процессов
  • pstree: просмотр запущенных процессов в виде дерева.
  • пгреп: используется для поиска процессов
  • хороший:Изменить приоритет процесса
  • рабочие места: Отображение информации, связанной с процессом.
  • бг и фг: Переместить процесс в фоновый режим.
  • убийство: убить процесс

В машине разработки также есть специальная командаnvidia-smi , который представляет собой инструмент командной строки для интерфейса управления системой NVIDIA, используемый для мониторинга и управления устройствами NVIDIA GPU. Он обеспечивает быстрый способ просмотра такой информации, как состояние графического процессора, использование, температура, использование памяти, энергопотребление и процессы, выполняемые на графическом процессоре.

Ниже приведены примеры использования каждой команды:

  • ps : Список процессов в текущей системе. Различную информацию о процессе можно отобразить с помощью различных опций, например:
    • ps aux  # 显示系统所有进程的详细信息
      
      • 1
  • top : Динамически отображать состояние процессов в системе. Он обновляет список процессов в режиме реального времени, показывая процессы с наибольшим использованием процессора и памяти.
    • top  # 启动top命令,动态显示进程信息
      
      • 1
  • pstree: отображает запущенные в данный момент процессы и их родительско-дочерние отношения в виде древовидной диаграммы.
    • pstree  # 显示进程树
      
      • 1
  • pgrep : Найдите процессы, соответствующие критериям. Вы можете искать процессы по имени процесса, пользователю и другим условиям.
    • pgrep -u username  # 查找特定用户的所有进程
      
      • 1
  • nice: изменить приоритет процесса.nice Чем меньше значение, тем выше приоритет процесса.
    • nice -n 10 long-running-command  # 以较低优先级运行一个长时间运行的命令
      
      • 1
  • jobs: отображает список заданий в текущем сеансе терминала, включая процессы, работающие в фоновом режиме.
    • jobs  # 列出当前会话的后台作业
      
      • 1
  • bg иfgbg Переведите приостановленный процесс в фоновый режим,fg Верните фоновый процесс на передний план.
    • bg  # 将最近一个挂起的作业放到后台运行
      fg  # 将后台作业调到前台运行
      
      • 1
      • 2
  • kill: отправить сигнал указанному процессу, обычно используемый для его завершения.
    • kill PID  # 杀死指定的进程ID
      
      • 1
    • Уведомление,kill Команда отправляется по умолчаниюSIGTERM Сигнал, который можно использовать, если процесс не отвечает.-9использоватьSIGKILL Сигнал принудительно убивает процесс:

    • kill -9 PID  # 强制杀死进程    
      
      • 1

SIGTERM Сигнал (завершение сигнала) — это стандартный сигнал, используемый в Unix и Unix-подобных операционных системах для запроса завершения процесса. Этот сигнал обычно отправляется, когда система или пользователь хотят корректно завершить процесс.иSIGKILLСигналы разные,SIGTERM Сигналы могут перехватываться и обрабатываться процессом, что позволяет процессу очиститься перед завершением. (из Интернета)

Ниже приводится nvidia-smi Некоторые основные команды использования команд:

  • Отображение сводной информации о состоянии графического процессора:
    • nvidia-smi
      
      • 1
  • Отображение подробной информации о состоянии графического процессора:
    • nvidia-smi -l 1
      
      • 1
    • Эта команда будет обновлять информацию о состоянии каждую 1 секунду.

  • Отобразить историю использования графического процессора:
    • nvidia-smi -h
      
      • 1
  • Перечислите все графические процессоры и отобразите их PID и имена процессов:
    • nvidia-smi pmon
      
      • 1
  • Принудительно завершить указанный процесс графического процессора:
    • nvidia-smi --id=0 --ex_pid=12345
      
      • 1
    • Это приведет к принудительному завершению процесса с PID 12345 на идентификаторе графического процессора 0.

  • Установите режим производительности графического процессора:
    • nvidia-smi -pm 1
      nvidia-smi -i 0 -pm 1
      
      • 1
      • 2
    • Первая команда переведет все графические процессоры в режим производительности, вторая команда нацелена только на графический процессор с идентификатором 0.

  • Перезапустите графический процессор:
    • nvidia-smi --id=0 -r
      
      • 1
    • Это перезапустит графический процессор с идентификатором 0.

  • Показать справочную информацию:
    • nvidia-smi -h
      
      • 1

Ниже приводится введение в информацию о графическом процессоре с помощью изображения:

Вставьте сюда описание изображения

3.3 Использование инструмента

Вот инструментTMUXTMUX является терминальным мультиплексором. Это позволяет легко переключаться между несколькими терминалами, отсоединять их (это не убивает терминалы, они продолжают работать в фоновом режиме) и повторно подключать их к другим терминалам. Зачем внедрять этот инструмент?Потому что это будет сделано позжеXtunerПри доработке модели потребуется много времени.TmuxЭто может решить ситуацию, когда программа завершается и прерывается. Вот как ее установить и использовать.

Поскольку машина разработки использует операционную систему Ubuntu, вы можете использоватьlsb_release -a Команда для просмотра информации о системе Ubuntu:

Вставьте сюда описание изображения

а затем использоватьapt install tmuxКоманда для установки tmux. Вы можете использовать ее после завершения установки.tmuxВы можете использовать tmux с помощью команды. Если вы хотите выйти из tmux, вы можете использовать «.Ctrl+d"быстрая клавиша.

На компьютере разработки постоянно сохраняются только файлы по пути /root. Программное обеспечение, установленное по другим путям, будет сброшено после перезапуска.

Конкретные методы использования можно посмотреть по адресу:

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

4. Введение в Conda и Shell (дополнительно)

Conda — это система управления пакетами и средой с открытым исходным кодом, работающая в Windows, macOS и Linux. Он быстро устанавливает, запускает и обновляет пакеты программного обеспечения и их зависимости. Используя Conda, вы можете легко создавать, сохранять, загружать и переключать различные среды на своем локальном компьютере.

Уже установлено на машине разработкиconda, мы можем использовать его напрямую, а также есть встроенный в машину разработкиcondaЗаказstudio-conda, мы представим нижеcondaОсновное использование иstudio-condaКак использовать и внедрятьstudio-condaКак это достигается.

Мы представим его в следующих частях:

  1. настройки конды
  2. управление средой Конда
  3. Конда и Пип
  4. Studio-conda используется с Shell (расширение)

4.1 настройки конды

мы можем использовать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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Но мы обычно используемpipУстановка пакета, мы представим его позжеpipиcondaразница.

Если мы хотим просмотреть информацию о конфигурации conda, мы можем использоватьconda config --showкоманда, если это настройка по умолчанию для машины разработки, она вернет: (часть информации)

Вставьте сюда описание изображения

Эти конфигурации находятся вCondaКонфигурация среды повлияет на методы и результаты установки пакета программного обеспечения, обновлений, управления средой и других операций.

4.2 управление средой conda

Эта частьconda中非常重要的一部分,掌握了这一部分大家就可以将开发环境玩转到飞起了😀。

4.2.1 Создайте виртуальную среду

мы можем использоватьconda create -n name python``=3.10 Создайте виртуальную среду. Это означает, что будет создана виртуальная среда с версией Python 3.10 и именем.После создания вы можете.condaв каталогеenvsНашел в каталоге.

Вставьте сюда описание изображения

Если версия Python не указана, виртуальная среда на основе последней версии Python будет создана автоматически. В то же время мы можем установить необходимые пакеты при создании виртуальной среды:conda create -n name numpy matplotlib python=3.10(Но я не рекомендую вам использовать его таким образом)

Общие параметры создания виртуальной среды следующие:

  • -n или --name: укажите имя создаваемой среды.
  • -c или --channel: укажите дополнительные каналы пакета.
  • --clone: ​​клонировать существующую среду для создания новой среды.
  • -p или --prefix: укажите путь установки среды (не по умолчанию).
4.2.2 Проверьте, какие виртуальные среды существуют

Если мы хотим увидеть, какие виртуальные среды у нас есть, мы можем использовать следующую команду:

conda env list
conda info -e
conda info --envs
  • 1
  • 2
  • 3

Вставьте сюда описание изображения

При этом мы также можем увидеть каталог, в котором находится среда.

4.2.3 Активация и выход из виртуальной среды

После того, как мы создадим виртуальную среду, мы можем использоватьconda activate name команда активации виртуальной среды, как проверить успешность переключения?Это легко, просто посмотри(base)Станет ли оно именем созданной виртуальной среды.

Вставьте сюда описание изображения

Если вы хотите выйти из виртуальной среды, вы можете использовать:

conda activate
conda deactivate
  • 1
  • 2

Обе команды вернутсяbaseокружающая среда, потому чтоbaseЭто основная среда конды. Если внимательно понаблюдать,baseКаталог среды находится на более высоком уровне, чем другие каталоги виртуальной среды.

4.2.4 Удаление и экспорт виртуальной среды

Если вы хотите удалить виртуальную среду, вы можете использоватьconda remove --name name --all, если вы удаляете только один или несколько пакетов в виртуальной среде, вы можете использоватьconda remove --name name package_name

Экспорт виртуальной среды очень необходим для конкретной среды, поскольку зависимости некоторых программных пакетов очень сложны, и воссоздать и настроить ее самостоятельно будет затруднительно. Если мы экспортируем настроенную среду, мы сможем восстановить ее в следующий раз. и вы также можете поделиться конфигурацией с другими.

#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f  myenv.yml
  • 1
  • 2
  • 3
  • 4

Например, мы будемxtuner0.1.17Виртуальная среда экспортируется, и информация о конфигурации следующая:

Вставьте сюда описание изображения

К ним относятсяимя средыРасположение онлайн-репозитория пакетов виртуальной среды.иЗависимости виртуальной среды . Позже мы будем использовать расширенные методы использования для быстрого восстановления виртуальной среды.

4.3 конда и пип

В этой части мы познакомим вас с некоторымиcondaиpipНекоторые различия:

  1. conda может управлять пакетами, не относящимися к Python, а pip может управлять только пакетами Python.
  2. conda можно использовать для создания виртуальной среды, но pip не может и должен полагаться на такие пакеты, как virtualenv.
  3. Пакет, установленный conda, скомпилированбинарный файл, зависимые пакеты будут автоматически установлены во время установки файлов пакетов; пакеты, установленные с помощью pip;колесо или исходный код, в процессе установки не будут поддерживаться другие зависимости, кроме языка Python.
  4. Пакеты, установленные conda, будут загружены в каталог, соответствующий текущей виртуальной среде, и их можно будет загрузить один раз и установить несколько раз. pip загружается непосредственно в соответствующую среду.

Колесо Это формат установочного пакета Python.

Это предварительно скомпилированный двоичный формат распространения, аналогичный скомпилированным двоичным файлам в conda.

К основным преимуществам формата Wheel можно отнести:

  1. Быстрая установка: поскольку он был предварительно скомпилирован, нет необходимости проходить процесс компиляции, например, установку исходного кода во время установки, что экономит время.
  2. Согласованность. Обеспечивает согласованность результатов установки в различных системах и средах.

Например, если вы хотите установить большую библиотеку Python, использование формата Wheel позволит избежать проблем при установке, вызванных различиями в средах компиляции на разных машинах. Более того, для тех систем, которые не имеют среды компиляции или имеют слабые возможности компиляции, формат Wheel может сделать процесс установки более плавным.

4.4 Использование Studio-conda и Shell (расширение)

Эта часть расширенная, потому что я думаю, что эта часть очень интересна и очень практична, поэтому, если вам интересно, вы можете ее изучить.

Давайте сначала познакомимсяstudio-conda , которая является встроенной командой машины разработки и реализуется с помощью сценария Shell. Что такое сценарий Shell?

Сценарий оболочки Текстовый файл, содержащий серию команд, расположенных в определенном порядке для автоматизации задач в среде Unix/Linux или аналогичной операционной системы.

Сценарии оболочки обычно пишутся на языке Shell. Общие языки оболочки, такие как Bash, Sh и т. д., представляют собой основные команды Linux, которые мы представили ранее и относятся к языку Shell.

Он имеет следующие важные особенности:

  1. автоматизация : Ряд повторяющихся сложных операций можно записать в виде сценария, а затем просто запустить сценарий, чтобы автоматизировать эти операции, экономя время и уменьшая количество ошибок. Например, скрипт, который каждый день регулярно создает резервные копии важных файлов.
  2. Управление системой : используется для управления конфигурацией системы, разрешениями пользователей, контролем процессов и т. д. Например, скрипт, создающий нового пользователя и устанавливающий ему права.
  3. Пакетная обработка : Возможность одновременной обработки нескольких файлов или данных. Например, скрипт, преобразующий пакет файлов изображений из одного формата в другой.
  4. контроль над процессом: например, условное суждение (if-else), цикл (for, while) и т. д., позволяющий сценариям выполнять различные операции в зависимости от различных ситуаций.

Чтоstudio-condaЭто часть автоматизации. Файл конфигурации среды bash пользователя root на нашей машине разработки..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"
  • 1
  • 2
  • 3
  • 4
  • 5

exportиспользуется для установки переменных среды.aliasэто копирование файла sh в переменную. Это можно выполнить в терминале как команду Our.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Этот скрипт используется для проверки наличия vgpu-smi команда, если она есть, она будет запущенаvgpu-smi для отображения информации о состоянии виртуального графического процессора (vGPU, если он отсутствует, он будет запущен);nvidia-smi для отображения информации о состоянии графического процессора NVIDIA. Как показано ниже:

Вставьте сюда описание изображения

nvidia-smi это инструмент для мониторинга и управления физическими устройствами NVIDIA GPU, а такжеvgpu-smi Предназначен для мониторинга и управления ресурсами графического процессора, виртуализированными с помощью технологии NVIDIA vGPU.

мы рассматриваем/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 $@
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

один из них*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}
  • 1
  • 2
  • 3

Разархивируйте сжатый пакет предустановленной среды, а затем создайте виртуальную среду с помощью клонирования. Однако в сценарии Shell также задается некоторая логика, но это всего лишь суждение. Если вы знакомы с каким-либо языком программирования, вы должны это уметь. понять это. Если вы не можете этого понять, это тоже не большая проблема.

Итак, как нам добавить нашу собственную созданную среду вstudio-condaА что насчет середины?

Первый шаг — создать новую среду conda в /share/conda_envs.

conda создать -p /share/conda_envs/xxx python=3.1x

Второй шаг — скопировать файлы из /root/.conda/pkgs на локальном компьютере в /share/pkgs, повторно сжать и заменить их (этот шаг предназначен для хранения больших общедоступных пакетов во время процесса создания conda, чтобы избежать повторных загрузок).

cp -r -n /root/.conda/pkgs/* /share/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 команда для восстановления виртуальной среды.Напишем простой Shell-скрипт для реализации этой операции: Создаём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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

После того, как мы завершим создание скрипта Shell, нам необходимо предоставить ему разрешения. Вы можете использовать команду:chmod +x test.sh , затем введите./test.sh restore xtuner0.1.17И нажмите Enter, чтобы восстановить виртуальную среду.

Вставьте сюда описание изображения

Однако это мало чем отличается от прямого использования. Если сравнить эту операцию с работой на машине разработки,studio-conda Комбинировать команды будет очень удобно, но способы копирования окружения разные.Поэтому, если вы хотите это реализовать, вам нужно/share/install_conda_env.shЛогика файла изменена.

Хорошо, это все содержимое этого уровня. Я надеюсь, что приведенное выше содержимое будет полезно всем в будущем. Если вы хотите узнать больше о Linux, вы можете прочитать мою статью в блоге, хотя я не знаю, как использовать Linux. , нам будет полезно изучить большие модели, но если вы хорошо изучите Linux, ваше изучение больших моделей пройдет очень гладко. Наконец, не забудьте пройти уровни, которые мы установили ранее!

Ссылка на блог:линукс

Общая проблема

1. Среда машины разработки InternStudio сломана. Как инициализировать среду машины разработки?

Выполняйте осторожно! ! ! !Все данные будут потеряны. Это доступно только на платформе InternStudio. Не делайте этого на своем компьютере.

  • Первый шаг — подключить локальный терминал к машине разработки через ssh (для работы необходимо подключиться через ssh, а не через Интернет!!!)
  • Выполнение второго шага rm -rf /root, ждать придется около 10 минут
  • Третий шаг — перезагрузить компьютер разработки. Система сбросит файл конфигурации по пути /root.
  • четвертый шаг ln -s /share /root/share

Миссия уровня

Чтобы пройти миссию уровня, вам необходимо сделать скриншоты по ключевым шагам:

детали миссииВремя, необходимое для завершения
МиссияЗавершите подключение SSH и сопоставление портов и запустите.hello_world.py10 минут
Дополнительное задание 1Выполните основные команды Linux на компьютере разработки.10 минут
Дополнительное задание 2Используйте VSCODE для удаленного подключения к машине разработки и создания среды conda.10 минут
Дополнительное задание 3Создать и запуститьtest.shдокумент10 минут