aprendizaje profundidad cómo interactuar con la elegancia del servidor? (Actualización a largo plazo)

0. Preámbulo historia

Si alguien le pide pequeña velada: "Poco Xi, si la inteligencia artificial de los puestos de trabajo desapareció durante la noche, lo que tendría que hacer para cambiar de trabajo?"

La respuesta: "Por supuesto que Linux es hacer la operación y mantenimiento ah 23333"

Xi tienen un pequeño servidor de GPU es responsable de su propia, ella puede hacer pequeña la noche un montón de problemas Ahora, esto es muy duro para dar al público una pequeña aprensivos criar a. Aquí está a usted para enseñar a sus madres y los padres del bebé servidor sobre la crianza de experiencia, hacen de ella una pronta crecer en una tranquilidad de servidor de aprendizaje profundo.

La siguiente pequeña noche se introducirá a su vez:

  1. Recomendaciones del sistema operativo
  2. -Ssh libre densa Inicio rápido de sesión
  3. penetración de la red (inter-red de servidores de acceso)
  4. transferencia de archivos y sincronización en tiempo real
  5. gestión del medio ambiente multi-desarrollador
  6. gestión multi-tarea (ajuste de parámetros en paralelo)
  7. el modo de programación del sueño (parámetros de tono de serie)
  8. Sobre Jupyer Notebook
  9. tarea única para ocupar el modo GPU
  10. Otro operativo del área de número de suscripción Comentarios Dios

v2-4a6341db78434a225a8bd4d843980b43_b.jpg

1. Recomendaciones del sistema operativo

Si utiliza principalmente tensorflow como su marco de aprendizaje profundo, se recomienda instalar una pequeña velada 16.04 Server Edition. Tenga en cuenta que la versión del servidor! ¿Por qué? Debido a que no son compatibles con una gran cantidad de gráficos de alta versión del controlador con la versión de escritorio de la interfaz gráfica, que resulta en el aterrizaje circulación propensos a problemas, para resolver un problema de aterrizaje circular es extremadamente problemático, haciendo crujir en una pequeña noche se encontraba en el interior con el portátil durante más de una semana, pesado instalado más de 10 sistemas, probado una variedad de métodos en el hogar y en el extranjero, finalmente renunció a ╮ (╯ ▽ ╰) ╭

Así que esta vez la noche pequeña directamente a la versión del servidor instalado el servidor de ubuntu16.04! Tenga en cuenta que la versión del servidor hay una interfaz gráfica, familiar a la cáscara no quiere sentar las bases de los zapatos para niños tan pronto como sea posible oh. Efectivamente, toda la unidad siguiente manera instalados en el servidor versión de descarga CUDA, 0errors, 0warnings

v2-08b8ae53edc55f09378f9e5a1e499bfe_b.jpg

Debido a la pequeña noche en la escuela secundaria realmente me gusta el bombardeo de la familia de software nacional balde bombardeo de ventanas, lo que lleva a repetir una y otra vez

        while True:
    系统变乱
    系统变卡
    重装系统
      

Por supuesto, por lo que la tentación de una tercera edad de la universidad, el éxito de Mac en boxes, del mundo entero la limpieza, mientras que la línea de comandos (Mac y Linux se basan en el estándar POSIX, línea de comandos / sintaxis del shell altura similar) de caer fuera de control. . . (Parecido al caso? Ejem, pequeña noche es decir, ya que en los últimos años tenía pequeñas ventanas de contacto, por lo que los trucos mencionados en este documento pueden ser compatibilidad con las ventanas ligeramente peor. Pero una vez dicho esto, hacer todos los días el aprendizaje profundo, ¿cómo podría llevado a cabo en las ventanas ah Hey, no se molestan en saber pytorch una versión de windows del Pozo. (ganchos puestos --->


2. densa libre de Inicio rápido de sesión ssh

Telnet es la mayor, por supuesto, amigos convenientes ssh. Víspera de una clave para ver una pequeña señal en!

v2-5a8dcc4426155e8acf047a1de2ebeb21_b.jpg

La primera línea es una pequeña noche amarillo nombre de usuario, nombre del equipo, el directorio actual. Xi es un pequeño conjunto de comandos sshdlnlp, golpear en el comando directamente al servidor! Por supuesto, este método es realmente muy deshonesto ╮ (¯ ▽ ¯ "") ╭ más razonable que está escrito en el archivo de configuración de ssh.

Sin embargo, para lograr este proceso deshonesto muy simple, de dos pasos:

En primer lugar, los comandos de script de conexión escritos en bash comienzan extremo de su PC. sistema de Mac es ~ / .bash_profile , sistema Linux es ~ / .bashrc . Por ejemplo, el servidor de nombres de usuario dlnlp, IP es 102.10.60.23, a continuación, poner la frase escrita en el comando de inicio de sesión:

        alias sshdlnlp="ssh [email protected]"  
      
Gracias a la sección de comentarios @ karajan1001 suplemento más potente método científico: la información del servidor en el lado del PC del archivo de configuración de ssh, el archivo de configuración se encuentra en ~ / .ssh / config , tales como el servidor de nombres de usuario dlnlp, IP es 102.10.60.23 , a continuación, poner en la frase de escritura:
Host dlnlp
[a la ficha] dlnlp el usuario
[a la ficha] 102.10.60.23 nombre de host
[a la ficha] el puerto 22
(Host dlnlp está detrás de ese nombre para usted, usted puede también utilizar el nombre más corto )
para que pueda ssh dlnlp puede conectarse rápidamente, prestar atención a la mitad de la Geha vacía. Pero también scp más conveniente.

Por supuesto, el comando de inicio de sesión llamada sshdlnlp, también se puede cambiar a la otra. No se olvide de guardar source ~ / .bash_profile o source ~ / .bashrc se activan a los scripts de inicio oh.

Entonces, después de que el primer paso, sólo tiene que tocar la contraseña para acceder a ella. Pero el cáncer perezoso a lo profundo de cómo se puede tolerar que golpee la contraseña tan problemático cosa también! (Tachado, como debe ser capaz de tolerar pequeñas contraseña hada golpe este tipo de cosas hace) pero no podemos sacrificar la seguridad del servidor, cómo hacerlo? La prueba de la infraestructura de red de computadora de la universidad es el momento de ~

También es muy sencilla, puesto que su clave pública ssh ssh del lado de la PC de la lista de confianza del servidor de escritura pueden ser amigos. Primera generación de claves RSA con `comando ssh-keygen` (generar una clave privada y una clave pública), se puede introducir todo el camino, pero nota:

v2-4caf762d4648f366adcb23dc05fdad94_b.jpg

No se habían generado antes de que los estudiantes aquí en la elección de n, que ninguna generación de estudiantes de todo el camino a través de la siguiente ~

A continuación, vaya ~ / .ssh / carpeta para enviar la clave pública a una carpeta de archivos en el servidor:

v2-505040d0a11a5d5ba45af596377e5e91_b.jpg

A continuación, vaya al servidor, el lado del PC de su clave pública lista de confianza ssh lanzado:

        cat id_rsa.pub >> ~/.ssh/authorized_keys
      

Bien - lo consigue, vuelve a sus registros de PC que darle una oportunidad, no está siquiera tiene que introducir una contraseña guardarlo.

3. penetración de la red (inter-red del servidor de acceso)

Pero la atención Oh, si el servidor está en la LAN, entonces su PC al salir del servidor de LAN, por supuesto, no va a encontrar a sus amigos. GPU servidor que desea utilizar en el hogar? Muy simple, pequeña noche para enseñarle cada minuto dentro de la red a través de!

Después de penetrar la red interna, la pequeña noche trató varios programas todavía se sienten cáscaras de cacahuete también la más estable y la más amigable-novato. Tan sólo hay que penetrar en la red interna dentro de la red IP del servidor y número de puerto 22 (es decir, el número de puerto SSH) se asigna a un número de puerto fuera del IP de la red. Este proceso es muy sencillo de utilizar cáscaras de maní, una gran cantidad de tutoriales en línea, pequeña noche de amigos no largo aliento. Entonces tenemos que hacer es esta IP de la red externa y el número de puerto también está empaquetado como un comando, tales como cáscaras de cacahuete asignados a nuestra IP de la red externa es 103.44.145.240, puerto es 12560, entonces sólo tiene que escribir esta cáscara cliente para iniciar script:

        alias sshdlnlp_remote="ssh -p 12560 [email protected]"
(别忘用source刷新启动脚本)
      

Después de lo cual se puede acceder a su servidor con los amigos en todo el mundo un solo comando GPU.

---- ---- actualización 10.19

Renunciar a cáscara de maní, y cambio a una más estable y libre de código abierto FRP , por supuesto, esto requiere que tenga un servidor de red externa antes, se recomienda la nube Ali (estudiantes $ 10 por mes). En el servidor de red externa con FRP tomar un proxy inverso super fácil, tonto puede aprender, ir de FRP mirada github en ello - a favor de la prueba funciona mejor que la cáscara de maní al menos un millar de veces, y muy estable.

4. Transferencia de archivos y sincronización

Para una transferencia de archivos de una sola vez, en este sentido, por supuesto, el más fácil de usar comando scp o dirigir, las carpetas y los archivos se pueden transferir fácilmente.

Pero hacemos un aprendizaje profundo y, a continuación, un área grande para cambiar el código del lado del servidor, a continuación, no es conveniente peso pesado depuración, después de todo, sin interfaz gráfica en el servidor, la mayoría de la gente todavía se siente incómodo con vim, entonces no se puede utilizar en el lado del PC de editar hermosa modificar el código, modificar los resultados de la sincronización en tiempo real al servidor de tareas pendientes? Por supuesto que sí! Aquí pequeña noche de sincronización de archivos recomendado artefacto syncthing .

El resto es tonto amigos de configuración. Recuerde que para cambiar la frecuencia de actualización de carpetas Oh (por defecto es de 60 segundos, podemos cambiar un poco más corto, como tres segundos), por lo que nuestro cliente con un editor de texto hermoso, cambios en tiempo real en el código será capaz de sincronizar con el servidor en el lado del servidor sólo tiene que ser responsable de ejecutar ligeramente.

5. múltiples gerencia entorno de desarrollo

Por desgracia, si el servidor no es la GPU con una persona, a continuación, cuando la gente (especialmente mezclado con muchas palabras blanca) es a menudo el servidor por defecto para obtener el entorno de falta de pitón, como alguien con python2, alguien python3, alguien tensorflow1 0.3, como alguien con un 0,12 ... que lleva a todos los programas que se ejecutan colapso total.

Así es el estudio en profundidad de gestión en el entorno de desarrollo del lado del servidor se hace imprescindible, donde anaconda obtener directamente! Todo el mundo para establecer y administrar su propio entorno de desarrollo, incluyendo la versión de Python, versión de las distintas bibliotecas, etc., sin molestar a los demás. Y cuando la publicación del proyecto, sino también para facilitar el entorno de la exportación directa de documentos de requisitos, para evitar que su propio puño y letra a los amigos.

6. Una gestión multi-tarea (parámetro de ajuste paralelo)

Si más de una GPU en su servidor, o su misión consumir más recursos de la GPU, por lo que los parámetros del modelo de formación paralelas se ajustan en gran medida mejorar la eficiencia del desarrollo! Aquí pequeños programas de la tarde comúnmente dadas bajo varios escenarios:

1, además de la formación, como entonces tenemos que hacer otras cosas en el servidor (por ejemplo, sino también el violín sobre lo que la serpiente), entonces podemos estar directamente relacionado con el fondo misión de entrenamiento. De ello se desprende.

En Linux, el comando seguido por el y símbolo puede mandar en el fondo, con el fin de ser capaz de ver el registro de entrenamiento, entonces también tenemos que redirigir la salida (de lo contrario se imprimirá para interferir con el funcionamiento normal de la pantalla), así que por ejemplo, sintonizamos batchsize este parámetro puede ser:

        dlnlp@ubuntu:~$ python train.py --batchsize=16 > log_batch16.txt &
      

Por supuesto, a continuación, cuelgue batchsize otros tamaños, tales como:

        dlnlp@ubuntu:~$ python train.py --batchsize=16 > log_batch16.txt &
dlnlp@ubuntu:~$ python train.py --batchsize=64 > log_batch64.txt &
dlnlp@ubuntu:~$ python train.py --batchsize=128 > log_batch128.txt &
      

Por puestos de trabajo pueden ver las tareas de fondo de salud (que se ejecuta, se detuvo, etc.) de comandos, por bg [número de tarea] permite que el comando para continuar el fondo dejó de correr, por fg [número de tarea] permite al fondo a la tarea de primer plano. Para la tarea se ha realizado en primer plano, puedes Ctrl + Z sea echado en el fondo (parada cuando el entonces lanzar el fondo con BG permite correr hacia arriba).

Gracias a usuario A Bad caramelo número de suscripción micro-canal de micro-canales en el mensaje de fondo que recuerdan el método anterior se perderán en el fondo después de que las concluido el proceso de desconexión ssh, y por lo tanto:

Si no queremos causar desconexión ssh después de la terminación de la misión de entrenamiento, tenemos que añadir delante del comando nohup. Tales como:

        dlnlp@ubuntu:~$ nohup python train.py --batchsize=16 > log_batch16.txt &
      

2, si estamos especialmente ansiosos no sólo para colgar una gran cantidad de misión de entrenamiento en paralelo, y tienen el seguimiento del progreso de su entrenamiento en tiempo real, a continuación, utilizar la pantalla de comandos, esto es equivalente al comando le permite abrir varias ventanas al mismo tiempo (al igual que el escritorio en la que, puede abrir muchas aplicaciones de muchas ventanas), y se puede cambiar fácilmente entre múltiples ventanas, este método no es el mismo que el de desconexión ssh y misión de entrenamiento de parada.

Las operaciones específicas pueden ser directamente en el Linux pantalla de hombre para ver los comandos de la pantalla de ayuda de documentos. zapatos fobia Inglés pueden ser vistos en el presente documento por referencia [1].

7. Programación modo de suspensión (parámetros de tono de serie)

En la mayoría de los casos no tienen tanta abundancia de GPU se puede utilizar, por lo general sólo se unía a una tarea, pero tenemos la pesada tarea de ajuste de parámetros, cómo hacerlo?

Aún cuestión muy simple, en primer lugar, instale el pitón del fuego esta herramienta.

Puede ser muy fácilmente su programa de pitón en un programa de línea de comandos, y puede ser fácilmente envasados ​​que desea afinar los parámetros de la forma de parámetros de línea de comandos.

Luego, escribe un ajuste de parámetros shell script, debe ajustar los parámetros de todos los escritos en ella! Por ejemplo, así:

v2-65c4751a21d99fc1f642d3446414bf3b_b.jpg

(Por supuesto, no se olvide el código serán capacitados escribió un documento de síntesis)

A continuación, puede colgar este script de amigos - ir a dormir por la noche cada uno se encuentran a encontrar los parámetros óptimos, super feliz de tener madera de allí.

8. Sobre portátil jupyter

cuaderno jupyter este pequeño artefacto tarde escribió en la historia del artículo, es un peso pesado en el asistente artefacto! O simplemente ser dicho artefacto aprendizaje profundo! Aún insustituible agudo en el lado del servidor, sólo los siguientes trucos.

jupyter portátil 1, el servidor está habilitado

v2-e777f00637e4c3fa6ce06cc1a710416a_b.jpg

A continuación, copie la última línea de ese token = xxx , esta señal es la contraseña para el acceso remoto! También tenga en cuenta el número de puerto de las últimas pantallas de la línea 8888 (porque si al mismo tiempo abierta de varias palabras en el servidor, el número de puerto 8888 no es necesariamente oh), y luego a la PC para hacer una asignación de puerto! Es decir, a través del túnel ssh al número de puerto del servidor de 8888 asignada a la (fin PC) local de un puerto (tal como 1234):

        ssh -L 1234:localhost:8888 [email protected]
      

(Esta operación también se puede utilizar para tensorboard servidor de monitorización a distancia)

A continuación, se puede en el lado del PC del navegador

        http://localhost:1234
      

jupyter portátil sobre el acceso directo a los amigos del servidor - por supuesto, le permitirá introducir una contraseña para el acceso, el token escribió antes de esa fecha se introduce oh.

2, vamos portátil jupyer con anaconda integración entorno de desarrollo.

Por defecto jupyter portátil se está ejecutando en el entorno por defecto, si desea que se ejecute en nuestro propio entorno con ananconda creado, para entrar en el medio ambiente, y luego instalar nb_conda la biblioteca:

        conda install nb_conda
      

La próxima vez que jupyter portátil abierta podrá optar por ejecutar el código en nuestros amigos del medio ambiente.

9. La ocupación completa del modo de tarea única

A veces, nuestra formación es muy importante y urgente tarea, y definitivamente no por otros abarrotado colapso, o que a sabiendas abordar todos los recursos de la GPU, por lo que entonces podamos. . . emmm explicar con antelación, tiempo innecesario de no utilizar oh:

El uso de Linux en el periodo previo de un comando, que puede garantizar el mismo comando ejecutar simultáneamente hasta a. Por ejemplo, ejecute uno xxx pitón será sólo se permite ejecutar un programa pitón más tarde este programa pitón pitón antes de que el programa es terminado (un error de ejecución se produce retorno) no se ejecutan. Así podemos escribir .bashrc:

        alias python='run-one python'
      

(Oh, no se olvide de activar la fuente)

entonces

v2-5c6c877a01a7cde6e398854b921253c9_b.jpg

Mira, será la primera de un pitón vinculado al fondo, detrás de la pitón no los está completamente implementada. A menos que antes del final de una serpiente pitón. (Para que otros socios pequeños pueden pensar que sus problemas con el programa, y ​​luego EMMM en la confusión sin fin)

referencias

[1] corrieron operación de aprendizaje profundo en el código utilizado servidor Linux (ssh, pantalla, tensorboard, jupyter portátil)

Suscribirse a los comentarios maravillosos No.

v2-4043bf04209a2e535f8fecc3b3e44dec_b.jpg

v2-3f66b93fb45e90f4cdfc417acb404973_b.jpg

Publicado 33 artículos originales · ganado elogios 0 · Vistas 3289

Supongo que te gusta

Origin blog.csdn.net/xixiaoyaoww/article/details/104553491
Recomendado
Clasificación