моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Эта статья представляет собой заметки третьего крупномасштабного модельного тренировочного лагеря для ученых, организованного Шанхайской лабораторией искусственного интеллекта. Она предназначена только для справки отдельными людьми и ассистентами преподавателей при исправлении домашних заданий.Оригинальная ссылка на учебник。
Чтобы зарегистрироваться, введите в поиске «Третий учебный модельный практический лагерь» в WeChat.
Эта заметка представляет собой заметку с личными аннотациями, измененную на основе исходного руководства.
😀Hello大家好,欢迎来到Большая модель ученогоПрактический лагерь. Это базовый курс, подготовленный практическим лагерем для студентов, впервые участвующих в практическом лагере, и студентов из различных отраслей, не имеющих базовых знаний о Linux. Здесь мы научим вас, как его использовать.Машина разработки InternStudioи освоить некоторые основыЗнание Linux , чтобы все не знали, с чего начать на следующих курсах. Надеюсь, это будет полезно всем. Мы подготовили для вас несколько задач уровня здесь. Когда вы выполните необходимые задачи уровня и зарегистрируетесь, вы получите награду за вычислительную мощность текущего уровня.Давайте начнем!
InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。
Если вы хотите узнать больше о InternStudio, вы можете проверить следующие документы: InternStudio
https://studio.intern-ai.org.cn/
Сначала откройте ссылку выше, чтобы войти в InternStudio. После входа вы автоматически перейдете к интерфейсу консоли, как показано на рисунке ниже:
Позвольте мне рассказать вам функции страниц, соответствующих каждому серийному номеру:
Выше приведено краткое введение в платформу InternStudio. Давайте посмотрим, как создать машину для разработки. Перейдем на домашнюю страницу и нажмем «.Создайте машину разработки”
Здесь мы решили создатьмашина личного развития, по именитест,КудаВерсия 12.2,Распределение ресурсовВыберите 10%, и продолжительность по умолчанию подойдет.
После завершения создания вМашина разработкиВ интерфейсе вы можете увидеть только что созданную машину разработки. Нажмите, чтобы войти в машину разработки.
После входа в машину разработки вы можете увидеть главную страницу машины разработки. Машина разработки имеет три режима на выбор:JupyterLab, Терминал и VScode
в:
Мы представили вышеПлатформа InternStudioи как создать машину разработки. В этом разделе мы хотим понять, что именно.SSH、Зачем использовать удаленное подключение, Как использовать SSHудаленное соединениеМашина разработки, что это такоеСопоставление портови как действоватьСопоставление портов。
SSHПолное название — Secure Shell, что переводится на китайский язык как безопасная оболочка.протокол сетевой безопасности реализовать безопасный доступ, передачу файлов и другие услуги с помощью механизмов шифрования и аутентификации. Протокол SSH обеспечивает безопасные сетевые услуги в незащищенной сетевой среде путем шифрования и аутентификации сетевых данных.
SSH (архитектура C/S)сервериклиентЧтобы установить безопасный канал SSH, обеим сторонам необходимо сначала установить TCP-соединение, затем согласовать номер версии и различные используемые алгоритмы и сгенерировать одно и то же.сеансовый ключ используется для последующего симметричного шифрования. После завершения аутентификации пользователя обе стороны могут установить сеанс для обмена данными.
Тогда в последующей практике мы будемНастройте ключи SSH, ключ конфигурации предназначен для того, чтобы нам не приходилось вводить пароль повторно при удаленном подключении к машине разработки, а затемЗачем подключаться удаленно??
Преимущество удаленного подключения заключается в том, что если вы используете удаленный офис, вы можете удаленно подключиться к машине разработки через 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
Вот и все.
Но когда мы разрабатываем и учимся, вводить пароль каждый раз удаленно затруднительно. Мы можем настроить SSH-ключ, чтобы пропустить этап ввода пароля, мы можем использовать команду ssh.ssh-keygenкоманда для генерации ключа
Ключ SSH — это безопасный и удобный метод аутентификации входа в систему, используемый для аутентификации и зашифрованной связи по протоколу SSH.
ssh-keygenПоддерживает ключи аутентификации RSA и DSA.
Обычно используемые параметры включают в себя:
Здесь мы используем алгоритм RSA для генерации ключа, команда:
ssh-keygen -t rsa
После ввода командыВходите до концаВсё, ключ здесь генерируется по умолчанию в~/.ssh/
в каталоге,~
Это означает домашний каталог, если это Windows, то этоC:Users{your_username}
.Может использоваться в PowerShell.Get-Content
Команда для просмотра сгенерированного ключа, который можно использовать, если это операционная система Linux.cat
Заказ.
Затем мы возвращаемся на платформу машины разработки и нажимаем «Конфигурация» на главной странице.SSH-ключ, затем нажмитеДобавить открытый ключ SSH,
Скопируйте только что сгенерированный ключ и вставьте его в поле открытого ключа. Имя будет автоматически распознано. Наконец, нажмите «Добавить сейчас», и настройка SSH-ключа завершена.
После завершения создания 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
Если вы хотите добавить некоторые из следующих параметров конфигурации вручную, вам необходимо изменить соответствующие части в соответствии с приведенным выше форматом.
Если *
StrictHostKeyChecking
no
иUserKnownHostsFile
*/dev/null
Удалите всплывающее окно, которое будет всплывать для проверки отпечатка пальца:
StrictHostKeyChecking no
Указывает, что строгая проверка ключей хоста отключена. Это означает, что при подключении к новому SSH-серверу ключ хоста сервера не будет строго проверен, что может представлять определенную угрозу безопасности.
UserKnownHostsFile /dev/null
Он устанавливает файл ключей хоста, известный пользователю, в /dev/null, что по существу игнорирует запись и использование известных ключей хоста.Однако в общей практике безопасности не рекомендуется произвольно отключать строгую проверку ключей хоста.
Затем нажмите «Подключиться» в окне подсказки, которое появляется в правом нижнем углу, чтобы удаленно подключиться к машине разработки.
После завершения удаленного подключения вы можете выбрать папку для открытия, которую также можно назвать рабочим каталогом. Вы можете выбрать папку на компьютере разработки или локальную. Папка на компьютере разработки — это то, что мы упоминали ранее.облачный диск。
Когда вы в следующий раз выполните удаленное подключение, вам не нужно будет вводить команды входа и другую информацию. Вам нужно только открыть удаленное соединение vscode, чтобы просмотреть информацию о машине разработки для первого подключения, как показано ниже.root
Это означает, что когда мы впервые подключаемся к машине разработки, мы используем/root
Список работ.
И на картинке ниже->
Указывает, что вам необходимо повторно выбрать рабочий каталог после входа на машину разработки:
И на картинке ниже->
Указывает вход в рабочий каталог, выбранный последней машиной разработки:
Рабочий каталог, выбираемый каждый раз, будет отображаться под информацией о машине разработки: (здесь есть дополнительный рабочий каталог для лагента)
Далее мы расскажем, когдаСопоставление портов。
Сопоставление портов Это сетевая технология, которая может сопоставить любой порт во внешней сети с соответствующим портом во внутренней сети для реализации связи между внутренней сетью и внешней сетью. Благодаря сопоставлению портов к службам или приложениям в интрасети можно получить доступ из внешней сети, что обеспечивает удобное взаимодействие по сети.
Так почему же нам нужно выполнять сопоставление портов при использовании машины разработки?
Потому что на последующих курсах мы будем проводить моделивеб_демо В практике развертывания во время этого процесса вы, скорее всего, столкнетесь с проблемой неполной загрузки веб-интерфейса.Это связано с тем, что при запуске web_demo в Web IDE на компьютере разработки прямой доступ к службе http/https на компьютере разработки может привести к проблемам с прокси-сервером.ресурсы пользовательского интерфейсаНе загружен полностью.
Итак, чтобы решить эту проблему, нам нужно сопоставить порты соединения с запущенным web_demo иВнешние сетевые ссылки сопоставляются с нашим локальным хостом. , мы используем доступ к локальному соединению для решения этой проблемы с прокси. Давайте попрактикуемся сейчас.
Давайте сначала поймем, как работает сопоставление портов машины разработки, на основе диаграммы:
Ниже приведены практические шаги. Сначала разберитесь, как выполнить сопоставление портов.
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Выше приведена команда сопоставления портов. Запустите эту команду на хосте, чтобы выполнить сопоставление портов. Вот блок-схема, позволяющая понять процесс сопоставления портов:
Персональный компьютер будет удаленно подключаться к единственному открытому порту 37367 машины разработки (это упоминается во время SSH, а открытый порт каждой машины разработки различен) и устанавливать параметры туннеля. Открытый порт служит транзитной станцией для пересылки трафика.
-C
: Включите сжатие, чтобы уменьшить объем передаваемых данных.-N
: Не выполняет удаленные команды, только устанавливает туннели.-g
: разрешить удаленным хостам подключаться к локально перенаправленным портам.Когда эта команда SSH выполняется на персональном компьютере, клиент SSH будет прослушивать порт 7860 локального компьютера.
Любой трафик, отправленный на локальный порт 7860, будет перенаправлен по SSH-туннелю на порт 7860 по адресу 127.0.0.1 удаленного сервера.
Это означает, что даже если этот порт машины разработки не доступен напрямую из внешней сети, мы можем безопасно получить доступ к службам на удаленном сервере через этот туннель. .
Мы все равно заходим в интерфейс машины разработки, находим нашу машину разработки и нажимаемТаможенные услуги, скопируйте первую команду,
ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
Давайте познакомим его со значением каждой части команды:
-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()
Помните после редактирования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
Это символизирует успех. (Уведомление: эта команда не возвращает никакого содержимого, что означает, что выполняется сопоставление портов, и затем вы можете увидеть веб-интерфейс пользовательского интерфейса, открыв соединение на веб-странице)
Конечно, если мы запускаем разные веб-интерфейсы, нам нужно многократно вводить команды, что очень хлопотно, и нам нужно использовать VScode.Мы подключили машину разработки удаленно через SSH, обеспечивая автоматическое сопоставление портов. Нам не нужно настраивать его вручную. Мы можем использовать сочетание клавиш «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.~
, в операционной системе Linux/
Представляет корневой каталог. В корневом каталоге находится множество каталогов и файлов, которые мы только что создали.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
Найдет файлы размером более 100 МБ в указанном каталоге и его подкаталогах.-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
Команда — потоковый редактор, в основном используемый для обработки текста. Он часто используется при обработке сложных операций с файлами. Он будет использоваться в последующих курсах.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
: подсчитайте количество совпадающих строк.Управление процессомКоманды являются важными инструментами для мониторинга системы и управления процессами. К наиболее часто используемым командам управления процессами относятся следующие:
В машине разработки также есть специальная командаnvidia-smi
, который представляет собой инструмент командной строки для интерфейса управления системой NVIDIA, используемый для мониторинга и управления устройствами NVIDIA GPU. Он обеспечивает быстрый способ просмотра такой информации, как состояние графического процессора, использование, температура, использование памяти, энергопотребление и процессы, выполняемые на графическом процессоре.
Ниже приведены примеры использования каждой команды:
ps
: Список процессов в текущей системе. Различную информацию о процессе можно отобразить с помощью различных опций, например:ps aux # 显示系统所有进程的详细信息
top
: Динамически отображать состояние процессов в системе. Он обновляет список процессов в режиме реального времени, показывая процессы с наибольшим использованием процессора и памяти.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
Сигнал принудительно убивает процесс:
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
Это приведет к принудительному завершению процесса с PID 12345 на идентификаторе графического процессора 0.
nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1
Первая команда переведет все графические процессоры в режим производительности, вторая команда нацелена только на графический процессор с идентификатором 0.
nvidia-smi --id=0 -r
Это перезапустит графический процессор с идентификатором 0.
nvidia-smi -h
Ниже приводится введение в информацию о графическом процессоре с помощью изображения:
Вот инструментTMUX
,TMUX
является терминальным мультиплексором. Это позволяет легко переключаться между несколькими терминалами, отсоединять их (это не убивает терминалы, они продолжают работать в фоновом режиме) и повторно подключать их к другим терминалам. Зачем внедрять этот инструмент?Потому что это будет сделано позже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
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 позволит избежать проблем при установке, вызванных различиями в средах компиляции на разных машинах. Более того, для тех систем, которые не имеют среды компиляции или имеют слабые возможности компиляции, формат Wheel может сделать процесс установки более плавным.
Эта часть расширенная, потому что я думаю, что эта часть очень интересна и очень практична, поэтому, если вам интересно, вы можете ее изучить.
Давайте сначала познакомимсяstudio-conda
, которая является встроенной командой машины разработки и реализуется с помощью сценария Shell. Что такое сценарий Shell?
Сценарий оболочки Текстовый файл, содержащий серию команд, расположенных в определенном порядке для автоматизации задач в среде Unix/Linux или аналогичной операционной системы.
Сценарии оболочки обычно пишутся на языке Shell. Общие языки оболочки, такие как Bash, Sh и т. д., представляют собой основные команды Linux, которые мы представили ранее и относятся к языку Shell.
Он имеет следующие важные особенности:
Что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"
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
Этот скрипт используется для проверки наличия 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 $@
один из них*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}
Разархивируйте сжатый пакет предустановленной среды, а затем создайте виртуальную среду с помощью клонирования. Однако в сценарии 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
После того, как мы завершим создание скрипта Shell, нам необходимо предоставить ему разрешения. Вы можете использовать команду:chmod +x test.sh
, затем введите./test.sh restore xtuner0.1.17
И нажмите Enter, чтобы восстановить виртуальную среду.
Однако это мало чем отличается от прямого использования. Если сравнить эту операцию с работой на машине разработки,studio-conda
Комбинировать команды будет очень удобно, но способы копирования окружения разные.Поэтому, если вы хотите это реализовать, вам нужно/share/install_conda_env.sh
Логика файла изменена.
Хорошо, это все содержимое этого уровня. Я надеюсь, что приведенное выше содержимое будет полезно всем в будущем. Если вы хотите узнать больше о Linux, вы можете прочитать мою статью в блоге, хотя я не знаю, как использовать 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 минут |