Estoy construyendo una computadora para ejecutar análisis de datos e implementaciones de IA. ¿Qué tan importante es el overclocking y el hyper-threading?

De manera similar a la respuesta anterior de Quora User, mi respuesta no es una respuesta directa a su pregunta, sino que se centra en la noción de encontrar posibles cuellos de botella en sus procesos, específicamente en lo que respecta a si sus cálculos están vinculados por E / S o por el procesador Creo que la respuesta depende del objetivo de su programa.

Por ejemplo, suponga que su objetivo es entrenar una red neuronal en línea utilizando una secuencia de datos en tiempo real como entradas. Digamos también que dicha red neuronal tiene una capa de entrada, 3 capas ocultas con seis nodos cada una y una sola capa de salida. En esta situación, es probable que su programa esté vinculado a la CPU (suponiendo que la cantidad de características en sus datos sea al menos algo realista); una computadora puede leer un flujo de datos más rápido de lo que puede calcular una red neuronal de este tamaño (es decir, una red neuronal recurrente, que sería la opción más probable para esta aplicación tiene complejidad de O ((número de flujos) (número de pesos en red) ^ 2).

Como otro ejemplo, supongamos que su objetivo es calcular un clasificador relativamente simple, por ejemplo, un modelo de regresión lineal tradicional. Supongamos también que los datos en los que entrenas al clasificador son un subconjunto relativamente complejo de un conjunto de datos masivo. En este caso, estaría vinculado a E / S; una computadora puede realizar más rápidamente los cálculos necesarios para una regresión lineal que los procedimientos de consulta y almacenamiento necesarios.

Para dar un último ejemplo de una situación particularmente desagradable, supongamos que se ha decidido por un objetivo bastante ambicioso: desea entrenar un modelo forestal aleatorio utilizando los datos mencionados en el segundo ejemplo. Ahora se ha encontrado en una posición interesante: su modelo no puede ser entrenado en línea (streaming), y obtener sus entradas requiere una serie de consultas complejas de una considerable colección de datos. Esto es más un ejercicio de reflexión que los ejemplos prácticos dados anteriormente, ya que el factor de restricción de la respuesta depende de los detalles de su modelo (es decir, cuántos árboles, profundidad de cada árbol, etc.), así como de los datos en sí (qué tan grande , qué tan compleja es la consulta).

Entonces, desafortunadamente no hay una regla generalizada simple y clara para responder a su pregunta.

Debe averiguar dónde están sus cuellos de botella para el uso previsto. Con big-data, mi presentimiento es que tendrá restricciones de E / S, no del procesador.

Para operaciones limitadas por el procesador, el overclocking puede ayudar a su rendimiento al elevar su reloj de piso para la CPU y la RAM. El “turbo” que utilizan los núcleos i # solo se activa si la CPU funciona por debajo de la temperatura y el voltaje máximos. Si está saturando todos sus núcleos, el turbo no ayudará, pero elevar el reloj de piso sí puede. Sin embargo, solo ayuda cuando ha saturado la capacidad de procesamiento de sus núcleos.

Hyperthreading … He estado comparando hyperthreading durante las últimas semanas tratando de averiguar si deberíamos comprar i5s en lugar de i7s. Nuestro cuello de botella es el procesador, y aún no he encontrado ningún aumento en el rendimiento con hyperthreading. De hecho, he tenido que en realidad reduce el rendimiento en una pequeña cantidad. Esto es consistente con los resultados que otras personas parecen haber tenido en las pruebas del mundo real de la informática de un solo propósito. (disminución del rendimiento de Google for Hyperthreading)

Esta no es una respuesta directa a su pregunta, pero si tiene restricciones de entrada, como sospecho que sería el caso con una aplicación de Big Data, sugeriría una cuadrícula de múltiples máquinas pequeñas en lugar de una máquina grande, fornida y overclockeada.

No hagas overclock. Puede exprimir un poco más de velocidad, en tareas limitadas de instrucción de CPU, pero también puede obtener resultados inexactos o bloqueos aleatorios.

More Interesting

Actualmente estoy usando un portátil con batería incorporado. ¿Cómo cuido la batería para que dure más y no sea defectuosa?

Quiero acceder a mi antiguo archivo OST pero no puedo hacerlo. ¿Cómo puedo abrirlo y acceder a los datos?

Quiero hacer un dispositivo de hardware muy pequeño. ¿Cómo puedo hacer esto?

Acabo de enterarme de la tecnología de fitociencia. ¿Es realmente efectivo?

Estoy planeando construir una aplicación interactiva hadoop que se implementará en el servidor, ¿en qué tecnología debo crear la interfaz de usuario y por qué?

Tengo una idea para la compañía de tecnología. ¿Cómo empiezo?

Si estoy pensando en deshacerme del cable, ¿debería ir con Boxee, Roku o Apple TV para ver programas de TV y películas en streaming por primera vez?

Ya hice mi entrenamiento en sistemas embebidos. Ahora, ¿qué debo elegir: MATLAB o Arduino?

Soy un pensador inteligente, creativo y abstracto que puede predecir la tecnología futura, pero sin experiencia en tecnología. ¿Cómo puedo convertir esto en un trabajo real?

Soy un desarrollador de software BPM que utiliza la herramienta PEGA PRPC desde el comienzo de mi carrera, es decir, 9 años y planeo cambiar a una tecnología nueva y que no sea BPM. ¿Cuáles son las últimas tecnologías más fáciles y mejor pagadas disponibles en el mercado para aprender?

Estoy a punto de actualizar mi reproductor de DVD a un reproductor de Blu-ray Disc, ¿debería obtener la PS3?

Tengo $ 50,000 ahorrados y estoy ganando $ 130,000 al año. ¿Debo abandonar la universidad?

Soy programador y administrador de sistemas que está considerando enlistarse como Navy SEAL. ¿Hay algún rol que me permita usar mi experiencia en tecnología?

Veo muchas aplicaciones de utilidad Bluetooth Beacon y aplicaciones de desarrollador, pero ¿dónde están las aplicaciones de consumo que usan balizas? ¿Hay aplicaciones que utilizan ante todo balizas que están recibiendo tracción?

Quiero que mi carro robot Raspberry Pi rastree una bola roja. Quiero programar en Java y OpenCV. ¿Qué cosas necesito saber y cómo puedo hacerlo?