OpenXLA, un proyecto open source para acelerar y simplificar el aprendizaje automático

OpenXLA

OpenXLA es un ecosistema de compilador de ML de código abierto desarrollado conjuntamente

Hace poco, las mayores empresas dedicadas al desarrollo en el campo del aprendizaje automático presentaron el proyecto OpenXLA, destinado al desarrollo conjunto de herramientas para compilar y optimizar modelos para sistemas de aprendizaje automático.

El proyecto se ha hecho cargo del desarrollo de herramientas que permitan unificar la compilación de modelos preparados en los frameworks TensorFlow, PyTorch y JAX para un entrenamiento y ejecución eficiente en diferentes GPUs y aceleradores especializados. Empresas como Google, NVIDIA, AMD, Intel, Meta, Apple, Arm, Alibaba y Amazon se sumaron al trabajo conjunto del proyecto.

El Proyecto OpenXLA proporciona un compilador de ML de última generación que puede escalar en medio de la complejidad de la infraestructura de ML. Sus pilares fundamentales son el rendimiento, la escalabilidad, la portabilidad, la flexibilidad y la extensibilidad para los usuarios. Con OpenXLA, aspiramos a aprovechar el potencial real de la IA acelerando su desarrollo y entrega.

OpenXLA permite a los desarrolladores compilar y optimizar modelos de todos los marcos de ML líderes para una capacitación y servicio eficientes en una amplia variedad de hardware. Los desarrolladores que utilicen OpenXLA verán mejoras significativas en el tiempo de capacitación, el rendimiento, la latencia de servicio y, en última instancia, el tiempo de comercialización y los costos de cómputo.

Se espera que al unir los esfuerzos de los principales equipos de investigación y representantes de la comunidad, será posible estimular el desarrollo de sistemas de aprendizaje automático y resolver el problema de la fragmentación de la infraestructura para varios marcos y equipos.

OpenXLA permite implementar soporte efectivo para varios hardware, independientemente del marco en el que se base el modelo de aprendizaje automático. Se espera que OpenXLA reduzca el tiempo de capacitación del modelo, mejore el rendimiento, reduzca la latencia, reduzca la sobrecarga informática y reduzca el tiempo de comercialización.

OpenXLA está formado por tres componentes principales, cuyo código se distribuye bajo la licencia Apache 2.0:

  1. XLA (álgebra lineal acelerada) es un compilador que le permite optimizar modelos de aprendizaje automático para una ejecución de alto rendimiento en diferentes plataformas de hardware, incluidas GPU, CPU y aceleradores especializados de varios fabricantes.
  2. StableHLO es una especificación e implementación básica de un conjunto de operaciones de alto nivel (HLO, High-Level Operations) para usar en modelos de sistemas de aprendizaje automático. Actúa como una capa entre los marcos de trabajo de aprendizaje automático y los compiladores que transforman el modelo para que se ejecute en un hardware específico. Se preparan capas para generar modelos en formato StableHLO para los frameworks PyTorch, TensorFlow y JAX. La suite MHLO se utiliza como base para StableHLO, que se amplía con soporte para serialización y control de versiones.
  3. IREE (Entorno de ejecución de representación intermedia) es un compilador y tiempo de ejecución que convierte los modelos de aprendizaje automático en una representación intermedia universal basada en el formato MLIR (Representación intermedia de varios niveles) del proyecto LLVM. De las características, se destacan la posibilidad de precompilación (antes de tiempo), soporte para control de flujo, la capacidad de usar elementos dinámicos en modelos, optimización para diferentes CPU y GPU, y baja sobrecarga.

Por la parte de las principales ventajas de OpenXLA se menciona que se ha logrado un rendimiento óptimo sin tener que profundizar en la escritura de código específico del dispositivo, ademas de proporcionar optimizaciones listas para usar, incluida la simplificación de expresiones algebraicas, asignación eficiente de memoria, programación de ejecución, teniendo en cuenta la reducción del consumo máximo de memoria y las sobrecargas.

Otra de las ventajas, es la simplificación del escalado y paralelización de los cálculos. Es suficiente que un desarrollador agregue anotaciones para un subconjunto de tensores críticos, sobre la base de los cuales el compilador puede generar automáticamente código para computación paralela.

Tambien se destaca que se proporciona la portabilidad con soporte para múltiples plataformas de hardware, como GPU AMD y NVIDIA, CPU x86 y ARM, aceleradores de ML de TPU de Google, IPU de AWS Trainium Inferentia, Graphcore y Cerebras Wafer-Scale Engine.

Soporte para conectar extensiones con la implementación de funciones adicionales, como soporte para escribir primitivas de aprendizaje automático profundo usando CUDA, HIP, SYCL, Triton y otros lenguajes para computación paralela, asi como tambien la posibilidad de ajuste manual de cuellos de botella en modelos.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

from Linux Adictos https://ift.tt/3o5ZRfy
via IFTTT

Brave y DuckDuckGo se apuntan a resultados basados en inteligencia artificial, cada uno a su manera

Brave Search remarcando una respuesta

Nadie quiere quedarse atrás. Bueno, parece que Apple, de quien no tenemos ninguna noticia al respecto, pero Google, Microsoft, Brave, DuckDuckGo… Todos se están moviendo para implementar de alguna manera la inteligencia artificial a sus servicios. El más rápido fue Microsoft, quien invirtió 10.000M$ en ChatGPT y ya ofrece sus respuestas en Bing, siempre y cuando se use en Windows y Edge. Google ya ha dicho que lanzará su propio chatbot, y DuckDuckGo y Brave también ha anunciado algo recientemente.

Si va a ser suficiente o no es algo que descubriremos con el tiempo, y a mí me da que el tímido movimiento de Brave sabrá a poco. Sí es útil, pero puede que insuficiente. Anunciado a principios de marzo, ya podemos probar lo que ellos llaman Summarizer, una herramienta de inteligencia artificial para resultados relevantes resumidos. Según explican, cuando preguntemos algo en la caja de búsqueda de Brave Search, lo que veremos será lo mismo que antes, con una diferencia: en negrita se mostrará la respuesta, tal y como vemos en la captura de cabecera.

Summarizer de Brave, DuckAssist de DuckDuckGo

Por otra parte, DuckDuckGo ha presentado DuckAssist, una nueva función que genera respuestas con lenguaje natural a las preguntas que le hagamos. Está en fase beta, y disponible, en teoría, en las aplicaciones de DuckDuckGo y sus extensiones, pero a mí aún no me ha aparecido ni en el ordenador ni el móvil. Si la respuesta está en la Wikipedia, DuckAssist aparecerá y usará su AI para responder con un resumen. Es gratis, privado y no se requiere inicio de sesión.

Son un par de acercamientos a lo que parece que está cambiando la manera en la que vemos y consumimos Internet, pero creo que son muy tímidos si tenemos en cuenta qué ofrece la opción más popular. Unas negritas, que sinceramente he tenido que fijarme bien y leer la información oficial para notar el cambio, o información de la Wikipedia (y alguna otra fuente), que en ocasiones no es precisa en absoluto, no me parecen nada especialmente innovador, pero algo es algo. Y veremos qué es lo siguiente.

Más información en los artículos originales sobre Summarizer y DuckAssist.

from Linux Adictos https://ift.tt/TcZWodn
via IFTTT

Hay una gran cantidad de aplicaciones web convertidas en apps para Linux, y eso no está mal (del todo)

Aplicaciones web de whatsapp en Flathub

En los últimos días, Flathub ha dado varios pasos importantes para convertirse en una de las mejores opciones para instalar aplicaciones para los usuarios de Linux. Se van a desmarcar de GNOME y van a convertirse en un proyecto propio, y todos estos cambios se verán reflejados también en cómo nos presentan las cosas. Por ejemplo, el icono será diferente, y ya están preparando una web que actualmente está en fase beta. Fue cuando estuve dándome un paseo por la futura versión cuando me di cuenta de que había una «gran» (véanse las comillas) cantidad de aplicaciones web convertidas en aplicaciones de escritorio.

¿Por qué hay tantas aplicaciones web hechas aplicaciones para Linux? La verdad es que no tengo una respuesta segura, pero la captura de cabecera puede ayudarnos a hacernos una idea: hay software que sencillamente no está para Linux, pero sí podemos acceder al servicio web. WhatsApp es el mejor ejemplo para entender esto: lo que no se entiende es por qué no hay app nativa para Linux, pero sí vemos que hay hasta 5 versiones distintas en Flathub, a lo que se le suman Franz y Tangram, que son aplicaciones para gestionar varias aplicaciones web. ¿Y que ofrecen? Pues las cuatro de verde son básicamente el mismo WhatsApp web que ofrece WhatsApp Inc., mientras que Youp es lo mismo, pero con un modo a pantalla completa real, no parcial.

Las aplicaciones web de escritorio separan el contenido

En Snapcraft también encontramos software así. Me parece recordar que antes había una aplicación «de escritorio» de Microsoft Office, que era realidad era la versión web hecha app. Sigue existiendo Apple Music, y son eso, la misma web pero hecha aplicación de escritorio. ¿Tiene todo esto sentido? En mi opinión, sí y no.

Hay muchos usuarios que no quieren usar paquetes flatpak ni snap, que es en el formato en el que aparecen muchas de estas aplicaciones, por lo que usar un paquete de este tipo sólo para una aplicación que se puede ejecutar en el navegador no parece tener mucho sentido. Pero sí lo tiene. Aunque el navegador que usemos por defecto nos permita instalar las aplicaciones o crear accesos directos que se ejecuten independientemente del navegador, lo que están haciendo en realidad es abrir una ventana nueva sin campo de URL ni pestañas, pero es el mismo navegador.

Hemos puesto como uno de los ejemplos una aplicación para escuchar música. Si nos creamos un acceso directo de Chrome/Brave/Vivaldi y silenciamos la «aplicación» de música de turno, también nos silenciará el resto de ventanas y pestañas del navegador que nos ha instalado la app. Es probable que no sea esto lo que queremos, y en donde cobra un poco de sentido tener aplicaciones de escritorio hechas a partir de una página web, usen Electron o cualquier otra tecnología.

Además, si usamos WhatsApp web, las notificaciones nativas de un escritorio Linux no siempre saben dónde llevarnos cuando les hacemos clic. En ocasiones ni siquiera se ve el logotipo del servicio, mostrándonos el logotipo del navegador. Eso sí, el nombre de la pestaña sí lo suelen mostrar, y el mensaje recibido también.

Si es posible, mejor aplicaciones reales

Ahora bien, si es posible, siempre es mejor que creen aplicaciones reales. Entre los ejemplos que podemos mencionar estaba Apple Music Electron, y esa aplicación evolucionó hasta convertirse en Cider, un ejemplo de cosas bien hechas. Sus desarrolladores y colaboradores, que son muchos, crearon una app de Apple Music que supera por mucho al iTunes que actualmente sigue siendo la opción oficial para Windows. Y lo mejor es que también funciona en Linux, lo que demuestra de que en ocasiones, cuando hay una API disponible, se puede hacer mucho y muy bien.

Lo malo es algo bien sabido, y es que a los usuarios de Linux no se nos cuida tanto como a los de Windows, y casos como el de Cider no hay muchos. Lo bueno es que hay mucho software de código abierto que nos permite hacer de todo, o casi, porque si pudiéramos hacer de todo no habría tantos proyectos en los que se llevan aplicaciones web al escritorio de Linux. Mientras sea para ofrecer alternativas, y no abandonen el proyecto, bienvenidas sean.

from Linux Adictos https://ift.tt/ZWRtnFA
via IFTTT

Cómo instalar LAMP (Apache, MySQL, PHP) y phpMyAdmin en Manjaro; válido para base Arch

phpMyAdmin en Manjaro

Hay muchas cosas en Linux que son más fáciles que en Windows, pero también es cierto que mucha información se encuentra antes para Windows. Cosas como trabajar con PHP o acceder a un servidor FTP desde el mismo gestor de archivos son mucho mejor en Linux, y por ese motivo suelo moverme mejor en los sistemas con el núcleo del pingüino. Lo malo es que lo que vale para una distribución no siempre vale para otra, e instalar phpMyAdmin y todo LAMP en Manjaro y otras distros basadas en Arch no es igual que hacerlo en las derivadas en Debian.

Pero también es cierto que todo (o casi todo) lo que se puede hacer en una distribución Linux se puede hacer en otra, y lo único que es necesario es saber otro camino que nos lleve a la misma Roma. Conseguir tener LAMP en Manjaro no es difícil, y aquí vamos a enseñar el camino más sencillo, que lo es, aunque no lo parezca por el número total de pasos. Antes explicaremos qué significan las siglas: Linux, Apache, MySQL y PHP. Los pasos a seguir serían los que tenéis a continuación:

Instalando y configurando LAMP

  1. Antes de nada, ante instalaciones como esta merece la pena hacer una sincronización completa de los servidores y actualizar todos los paquetes disponibles. Eso lo conseguimos con el comando
sudo pacman -Syyu
  1. Con todo actualizado, y reiniciado si se pidiera o viéramos que se ha actualizado algo importante, seguimos. En muchos comandos vamos a necesitar privilegios, por lo que nos identificamos como root con:
sudo su
  1. Lo primero a instalar será la A, es decir, Apache:
pacman -S apache
  1. Ahora empezamos con la edición del archivo httpd.conf. Aquí vamos a usar nano, y los atajos que usaremos son Ctrl+W para buscar, para pegar es Ctrl+Shift+V (porque estamos en el terminal), Ctr+O para guardar, Enter para confirmar cambios y Ctrl+X para salir. No está de más pulsar luego la flecha hacia arriba, volver a introducir el último comando y comprobar que hemos guardado los cambios. Lo primero será entrar en la edición del archivo:
nano /etc/httpd/conf/httpd.conf
  1. Buscamos lo siguiente y lo comentamos, si no lo está ya:
# LoadModule unique_id_module modules/mod_unique_id.so
  1. Buscamos ServerName y ponemos lo que sea necesario, descomentando la línea si no lo está. Para conexiones locales:
ServerName localhost
  1. Guardamos y cerramos.
  2. Iniciamos el servicio web:
systemctl enable --now httpd
  1. comprobamos que está activo:
systemctl status httpd
  1. Hacemos una prueba, no necesaria paro recomendada, pues nos dirá que vamos por el buen camino, metiendo un archivo con nombre index.html en /srv/http, para lo que necesitaremos permisos. Por ejemplo, con este contenido: <h1>Hola, LinuxAdictos</h1>

Creando prueba HTML

  1. Ahora instalamos la M, es decir, MariaDB, que es el motor que usa Manjaro y otras distros basadas en Arch para gestionar las bases de datos MySQL.
pacman -S mariadb
  1. Inicializamos el directorio de MariaDB antes de iniciar el servicio.
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  1. Cuando finalice, activamos el servicio:
systemctl enable --now mariadb
  1. Comprobamos que se ha iniciado. Tiene que poner que está activo y no mostrar ningún error.
systemctl status mariadb
  1. Es recomendable ponerle seguridad a nuestra instalación de bases de datos con un script que se ha diseñado para ello. Hay que leer lo que nos pone, pero aquí van unas sugerencias:
    1. Se inicia con «mariadb-secure-installation» sin las comillas.
    2. La contraseña debe estar vacía si la iniciamos por primera vez. Si ya hemos hecho pruebas y tiene otra contraseña, tenemos que saber cuál es o restablecerla.
    3. Cuando nos pida si cambiar a la autenticación unix_socket, decimos que no.
    4. Cambiar la contraseña, sí.
    5. La introducimos dos veces, una para configurarla y otra para confirmar.
    6. Eliminar usuarios anónimos, sí.
    7. Deshabilitar el inicio de sesión remoto, de entrada, sí. Esto se puede cambiar más adelante, pero puede ser peligroso y hay que gestionar las conexiones con un cortafuegos.
    8. Sí a eliminar base de datos de prueba. O no, si se quiere eliminar más tarde. Esa base de datos sirve como ejemplo para ver algunas cosas.
    9. Recargar privilegios, sí.
  2. Instalamos ahora la P, es decir PHP:
pacman -S php php-apache
  1. Entramos en el módulo PHP de Apache:
nano /etc/httpd/conf/httpd.conf
  1. Buscamos LoadModule y dejamos esto así:
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  1. Al final del archivo, añadimos:
LoadModule php_module modules/libphp.so
AddHandler php-script .php
Include conf/extra/php_module.conf
  1. Comprobamos la configuración con esto, y debe decirnos «Ok»:
apachectl configtest
  1. Reiniciamos el servicio con:
apachectl restart
  1. Hacemos otra prueba, esta vez del PHP. En la misma carpeta que antes, /srv/http, creamos el archivo info.php, y dentro ponemos este texto:
<?php phpinfo(); ?>;

Prueba de php

Configuración de phpMyAdmin

  1. Instalamos phpMyAdmin:
pacman -S phpmyadmin
  1. creamos o editamos el archivo phpmariadb.ini:
nano /etc/php/conf.d/phpmariadb.ini
  1. Pegamos esto:
extension=bz2
extension=iconv
extension=mysqli
extension=pdo_mysql
  1. Verificamos que el archivo .ini se ha cargado (mostrará las rutas):
php --ini
  1. Iniciamos la configuración de Apache:
nano /etc/httpd/conf/extra/phpmyadmin.conf
  1. y pegamos esto:
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">;
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
  1. Abrimos el archivo la configuración de Apache:
nano /etc/httpd/conf/httpd.conf
  1. Al final añadimos lo siguiente, y la configuración final quedará como en la captura:
Include conf/extra/phpmyadmin.conf

Configuración final de phpMyAdmin

  1. guardamos y comprobamos la configuración (debe decir que no hay errores de sintaxis):
apachectl configtest
  1. Reiniciamos apache:
apachectl restart
  1. Abrimos el archivo de configuración de phpMyAdmin:
nano /etc/webapps/phpmyadmin/config.inc.php
  1. Este paso podemos hacerlo manualmente, pero merece la pena hacerlo así. En otro terminal, generamos un numero hexadecimal aleatorio:
openssl rand -hex 16
  1. Copiamos lo que nos haya dado en la línea donde pone blowfish_secret, entre las comillas. Debe quedar así (cambiando lo que hay entre comillas por el número hexadecimal del paso anterior:
$cfg['blowfish_secret'] = 'valorhexadecimancreadoenelpasoanterior';
  1. Debajo de esa línea, añadimos la carpeta termporal:
$cfg['TempDir'] = '/tmp';
  1. Guardamos y salimos. Ahora ya sólo queda entrar en este caso, localhost/phpmyadmin

Si preferimos otra opción diferente a phpMyAdmin, una de las mejores para Linux es DBeaver. Si uno se acostumbra, hay cosas que funcionan mejor, por ejemplo, crear las relaciones.

Y así es cómo se puede tener phpMyAdmin y LAMP en distros con base Arch. Si hay algo diferente, debería ser alguna ruta, pero para la mayor parte de lo explicado aquí debería valer.

from Linux Adictos https://ift.tt/jBKAq9J
via IFTTT

chatgpt-cli: la famosa AI también se mete en nuestros terminales

ChatGPT en el terminal con chatgpt-cli

ChatGPT está en todas partes, por lo menos en muchos artículos de noticias tecnológicas. En los últimos pudimos ver a Microsoft sacando pecho por su vinculación con OpenAI, hasta el punto de llegar a llamar «tonta» a su asistente virtual, Cortana, junto con el resto, como Siri o Google Assistant. La creación más innovadora de los últimos años está disponible en todo tipo de aplicaciones y extensiones que incluso aparecen en Visual Studio Code, y también existe chatgpt-cli para acceder al chat directamente desde el terminal.

Si merece la pena usar chatgpt-cli o no ya debe ser decisión de cada uno, pero puede venir bien en según qué escenarios. Por ejemplo, en el mencionado Visual Studio Code es habitual tener abajo un terminal, o más bien una salida con distintos tipos de información, entre las que está el terminal. Si usamos chatgpt-cli, no sacrificaremos nada de pantalla que no estemos sacrificando en un uso normal, y su uso aquí puede ser interesante. Lo malo es cómo hay que lanzarlo, y mientras escribo esto me doy cuenta de que no he censurado la clave, por lo que me dispongo a revocarla.

ChatGPT en el terminal, posible gracias a chatgpt-cli

Si se va a usar mucho, creo que es recomendable crearse un script, o que cada uno lo haga como mejor le parezca, pero antes que nada hay que escribir:

export API_KEY=aquívalaapikeyquetehayadadoenlaweboficial chatgpt

La clave tenemos que sacarla de platform.openai.com/account/api-keys, y hay que estar registrado para poder conseguirla. Una vez escrito lo anterior, sustituyendo lógicamente el valor que hay detrás del igual, ya podemos escribir en el terminal «chatgpt» sin las comillas y veremos un prompt que en un principio llama un poco la atención. En el momento de escribir este artículo salen letras chinas, aunque en la página de GitHub del proyecto ya se ha entregado el cambio necesario para que aparezca algo en inglés.

Su uso es el mismo que el que haríamos en la página web, pero desde el terminal. En el ejemplo yo le he pedido que escriba un texto para saludar a nuestros lectores, y eso ha hecho. La única limitación que le he encontrado en el rato en el que he estado jugando con él ha sido el diseño, que siendo una herramienta de línea de comandos no hay ningún margen, pero esto suele ser así en en muchas herramientas tipo CLI.

Para instalarlo, en su página de GitHub dicen que escribamos:

go get -u -x github.com/kkdai/chatgpt

En sistemas basados en Arch Linux se puede descargar desde AUR. Si buscabas una manera más linuxera de hablar con ChatGPT, aquí la tienes.

from Linux Adictos https://ift.tt/uhAG7o3
via IFTTT

Google tenía razón con su código rojo: Bing supera los 100M de usuarios al día tras integrar ChatGPT

chatgpt-bing

Microsoft quiere poner a temblar a Google implementando chatgpt en bing

Durante las últimas semanas, y lo que le queda, se está hablando mucho sobre ChatGPT. La mayoría de los artículos son para elogiarlo, aunque también hay otros para intentar bajar un poco el hype, pero está en boca de todos. Quien no lo ha mencionado nunca (que yo sepa) directamente ha sido Google, pero sí se rumorea que internamente habían activado el código rojo. Por lo que parece, no exageraban, ya que la gente ha empezado a usar Bing y Edge más que nunca.

Lo de Edge no extraña tanto. En realidad, es un Chrome con personalizaciones de Microsoft que se integra mejor en el sistema operativo. Lo de Bing sí sorprende un poco más, y es que la compañía dice que ya han superado los 100M de usuarios activos al día. Esa cantidad puede parecer irrisoria si tenemos en cuenta que Google es usado por prácticamente todos los que tienen acceso a un navegador web, pero es que el aumento llega desde un uso muy bajo.

¿Despegará por fin Bing?

Nos complace anunciar que, tras varios años de progreso constante, y con el impulso de los más de un millón de nuevos usuarios de la vista previa de Bing, hemos superado los 100 millones de usuarios activos diarios de Bing. Se trata de una cifra sorprendentemente notable, aunque somos plenamente conscientes de que seguimos siendo una pequeña empresa con una cuota de un solo dígito. Dicho esto, ¡qué bien sienta estar en el baile!

El salto aún parece mayor cuando se conoce un detalle: actualmente, los usuarios de iOS/iPadOS, Android, macOS, Linux y cualquier otro sistema operativo estamos aún en una lista de espera. Para adelantarnos en la cola, tenemos que usar Microsoft Edge en un Windows con la configuración recomendada por el sistema operativo, que básicamente es tener Edge como navegador por defecto. Por lo tanto, esa cifra sólo puede aumentar en las próximas semanas, cuando los usuarios de equipos con otras configuraciones puedan acceder al servicio.

Y todo esto ha pasado en sólo un mes. De todos los nuevos usuarios, el 30% son completamente nuevos en Bing, y el número de búsquedas también está aumentando. Por si esto fuera poco, también están viendo como el nuevo Bing se está usando más en teléfonos móviles.

Ahora queda por ver qué hace Google. Está trabajando en su propio chatbot, y es difícil imaginar una web en la que las búsquedas no estén dominadas o en posesión de Google, pero todo es posible. Y como no se den prisa, el código rojo pasará a ser un Defcon X.

Más información.

from Linux Adictos https://ift.tt/5xGKwOS
via IFTTT

Proponen la implementación de un controlador GPU escrito en Rust, para las Apple AGX G13 y G14

Linux Apple Rust

Este es un controlador bastante completo para las GPU de las series Apple AGX G13 y G14.
El controlador de hoy es compatible con los SoC

Se dio a conocer hace poco la noticia de que se ha propuesto una implementación preliminar del controlador drm-asahi para las GPU de las series Apple AGX G13 y G14 utilizadas en los chips Apple M1 y M2 en la lista de correo de desarrolladores del kernel de Linux.

El controlador está escrito en Rust y, además, incluye un conjunto de enlaces universales sobre el subsistema DRM (Direct Rendering Manager) que se puede usar para desarrollar otros controladores de gráficos en Rust.

El conjunto de parches publicado hasta ahora se ha propuesto solo para su discusión por parte de los desarrolladores principales (RFC), pero puede aceptarse en el equipo principal después de que se complete la revisión y se eliminen las deficiencias identificadas.

Esta es mi primera versión de las abstracciones de Rust para el DRM subsistema. Incluye las propias abstracciones, algunas menores cambios de requisitos previos en el lado C, así como el controlador de GPU drm-asahi (para referencia sobre cómo se usan las abstracciones, pero no necesariamente destinados a aterrizar juntos).

Estos parches se aplican en la parte superior del árbol en [1], que se basa en 6.3-rc1 con una gran cantidad de compromisos de abstracción/soporte de Rust agregados en arriba. La mayoría de estos no son requisitos previos para las abstracciones de DRM. ellos mismos, sino sólo del conductor.

Desde diciembre, el controlador se incluye en el paquete con el kernel para la distribución de Asahi Linux y ha sido probado por los usuarios de este proyecto.

El controlador se puede utilizar en distribuciones de Linux para organizar el entorno gráfico en dispositivos Apple con SoC M1, M1 Pro, M1 Max, M1 Ultra y M2. Al desarrollar el controlador, se intentó no solo aumentar la seguridad al minimizar los errores al trabajar con la memoria en el código ejecutado en el lado de la CPU, sino también proteger parcialmente contra los problemas que surgen al interactuar con el firmware.

En particular, el controlador proporciona ciertos enlaces para estructuras de memoria compartida no seguras con cadenas complejas de punteros utilizados en el firmware para interactuar con el controlador. El controlador propuesto se usa junto con el controlador asahi Mesa, que brinda compatibilidad con OpenGL en el espacio del usuario y pasa las pruebas de compatibilidad con OpenGL ES 2 y está casi listo para admitir OpenGL ES 3.0.

Al mismo tiempo, el controlador que funciona a nivel de kernel se desarrolla inicialmente teniendo en cuenta el soporte futuro para la API de Vulkan, y la interfaz de programación para interactuar con el espacio del usuario se diseña teniendo en cuenta la UAPI proporcionada por el nuevo controlador Intel Xe.

Sobre los problemas conocidos se mencionan los siguientes:

  • La integración de Rust existente actualmente no permite construir abstracciones como módulos, por lo que las abstracciones de Rust solo están disponibles para los componentes DRM integrados.
  • DRM se basa en gran medida en el patrón de “subclases” para objetos de controlador, y esto no se corresponde bien con Rust.
  • Actualmente, solo se implementa lo necesario para el controlador (más una pequeña cantidad de
    extras obvios donde tiene sentido una mejor integridad de la API).
  • drm::mm termina requiriendo un mutex incorporado en la abstracción, en su lugar
    de delegar eso al usuario con las reglas habituales de mutabilidad de Rust.
    Esto se debe a que los nodos se pueden descartar en cualquier momento y esas operaciones
    necesita estar sincronizado.
  • En el lado de Mesa, actualmente se cuenta con el controlador Gallium que en su mayoría ya está aguas arriba (faltan los bits UAPI en su mayoría) y
    pasa las pruebas dEQP GLES2/EGL, con la mayor parte de GLES3.0 pasando en
    Ramas upstream de trabajo en curso. Esta es una ingeniería inversa controlador comunitario, por lo que se menciona que aún queda mucho por hacer en este aspecto.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

from Linux Adictos https://ift.tt/dZt5XiO
via IFTTT

Detectaron 2 vulnerabilidades en TPM 2.0 que permiten el acceso a datos 

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace poco se dio a conocer la noticia de que han identificado dos vulnerabilidades (ya catalogadas bajo CVE-2023-1017, CVE-2023-1018) en el código con la implementación de referencia de la especificación TPM 2.0 (Trusted Platform Module).

Los fallos detectados son destacables, ya que estos llevan a escribir o leer datos fuera de los límites del búfer asignado. Un ataque a implementaciones de criptoprocesadores que utilicen código vulnerable podría resultar en la extracción o sobrescritura de información almacenada en el lado del chip, como claves criptográficas.

Un atacante que tenga acceso a una interfaz de comando TPM puede enviar comandos creados con fines malintencionados al módulo y desencadenar estas vulnerabilidades. Esto permite el acceso de solo lectura a datos confidenciales o la sobrescritura de datos normalmente protegidos que solo están disponibles para el TPM (por ejemplo, claves criptográficas).

Se menciona que un atacante puede usar la capacidad de sobrescribir datos en el firmware de TPM para organizar la ejecución de su código en el contexto de TPM, que, por ejemplo, puede usarse para implementar backdoors que funcionan en el lado de TPM y no se detectan desde el Sistema operativo.

Para quienes desconocen de TPM (Trusted Platform Module), deben saber que esta es una solución basada en hardware que proporciona funciones criptográficas seguras a los sistemas operativos de las computadoras modernas, haciéndolo resistente a la manipulación.

Un atacante local autenticado podría enviar comandos malintencionados a un TPM vulnerable que permita el acceso a datos confidenciales. En algunos casos, el atacante también puede sobrescribir datos protegidos en el firmware de TPM. Esto puede provocar un bloqueo o la ejecución de código arbitrario dentro del TPM. Debido a que la carga útil del atacante se ejecuta dentro del TPM, es posible que otros componentes del dispositivo de destino no la detecten.

A medida que la computación en la nube y la virtualización se han vuelto más populares en los últimos años, las implementaciones de TPM basadas en software también han ganado popularidad. El TPM se puede implementar en forma de TPM discreto, integrado o de firmware en su forma de hardware. Los TPM virtuales existen en forma de hipervisor o en una implementación de TPM puramente basada en software, por ejemplo, swtpm.

Sobre las vulnerabilidades detectadas, se menciona que estas son causadas por una verificación de tamaño incorrecto de los parámetros de la función CryptParameterDecryption(), que permite escribir o leer dos bytes fuera del búfer pasado a la función ExecuteCommand() y que contiene el comando TPM2.0. Según la implementación del firmware, la sobrescritura de dos bytes puede corromper tanto la memoria no utilizada como los datos o punteros en la pila.

La vulnerabilidad se aprovecha mediante el envío de comandos especialmente diseñados al módulo TPM (el atacante debe tener acceso a la interfaz TPM).

Actualmente, los problemas ya fueron solucionados mediante el envió de las versiones de actualización de la especificación TPM 2.0 publicada en enero (1.59 Errata 1.4, 1.38 Errata 1.13, 1.16 Errata 1.6).

Por otra parte, tambien se informa que la biblioteca de código abierto libtpms, que se utiliza para emular mediante programación los módulos TPM e integrar la compatibilidad con TPM en los hipervisores, también se ve afectada por la vulnerabilidad. Aunque tambien es importante mencionar que la vulnerabilidad se corrigió en el lanzamiento de libtpms 0.9.6, por lo que para aquellos que estén en una versión anterior, se recomienda que actualizan a la nueva versión lo antes posible.

Sobre la solución a estos fallos, TCG (Trusted Computing Group) ha publicado una actualización de su Errata para la especificación de la biblioteca TPM2.0 con instrucciones para abordar estas vulnerabilidades. Para garantizar la seguridad de sus sistemas, los usuarios deben aplicar las actualizaciones proporcionadas por los fabricantes de hardware y software a través de su cadena de suministro lo antes posible.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

from Linux Adictos https://ift.tt/P2SFIT9
via IFTTT

Chrome 111 llega con capacidad de abrir contenido HTML en modo imagen en imagen y mas

chrome

El navegador Chrome se diferencia de Chromium en el uso de los logotipos de Google

Google dio a conocer recientemente el lanzamiento de la nueva versión de su navegador web Google Chrome 111, en la cual se han realizado diversos cambios y mejoras internos. Además de las innovaciones y la corrección de errores, se han corregido 40 vulnerabilidades en la nueva versión.

Como parte del programa de pago de recompensas en efectivo por el descubrimiento de vulnerabilidades para la versión actual, Google pagó 24 premios por un monto de 92 mil dólares estadounidenses (un premio de $15 000 y $4000, dos premios de $10 000 y $700, tres premios de $5,000, $2,000 y $1,000, cinco premios de $3,000).

Principales novedades de Chrome 111

En esta nueva versión que se presenta de Chrome 111, se actualizaron los elementos de la interfaz relacionados con la iniciativa Privacy Sandbox para permitir que se definan y utilicen categorías de intereses de los usuarios en lugar de rastrear cookies para resaltar grupos de usuarios con intereses similares sin identificar a usuarios individuales. La nueva versión agrega un nuevo cuadro de diálogo que informa a los usuarios sobre las funciones de Privacy Sandbox y redirige a la página de configuración, donde puede configurar la información enviada a las redes publicitarias.

Otro de los cambios que se destaca de la nueva versión de Chrome 111, es que en Linux y Android, las operaciones de resolución de nombres en DNS se trasladan de un proceso de red aislado a un proceso de navegador no aislado, ya que cuando se trabaja con un sistema de resolución, es imposible implementar algunas restricciones de sandbox que se aplican a otros servicios de red.

Ademas de ello, tambien podremos encontrar que se agregó una API de imagen en imagen de documento experimental (prueba de origen) para abrir contenido HTML arbitrario en modo de imagen en imagen, no solo video. A diferencia de abrir una ventana a través de una llamada a window.open(), las ventanas creadas a través de la nueva API siempre se muestran encima de otras ventanas, no permanecen después de que se cierra la ventana original, no admiten la navegación y no pueden determinar explícitamente la posición.

El uso de la API del controlador de pagos, que simplifica la integración con los sistemas de pago existentes, ahora requiere una definición explícita de la fuente de los datos descargados mediante la especificación de los dominios a los que se envían las solicitudes en el parámetro CSP connect-src (Content-Security-Policy).

Se agregó compatibilidad para que los usuarios inicien sesión automáticamente en los servicios de identidad de Microsoft (Azure AD SSO) utilizando la información de la cuenta de Microsoft Windows, ademas de que el mecanismo de actualización de Chrome en Windows y macOS gestiona las actualizaciones de las últimas 12 versiones del navegador.

De los demás cambios que se destacan:

  • Se ha propuesto un nuevo cuadro de diálogo con información sobre cómo habilitar la capacidad de sincronizar configuraciones, historial, marcadores, bases de datos de autocompletado y otros datos entre navegadores.
  • Proporcionó la capacidad de aumentar o disminuir el tamaño de ArrayBuffer, así como aumentar el tamaño de SharedArrayBuffer.
  • WebRTC implementa soporte para extensiones SVC (Scalable Video Coding) para adaptar un flujo de video al ancho de banda del cliente y transmitir varios flujos de video de diferente calidad en un solo flujo.
  • Las acciones «diapositiva anterior» y «diapositiva siguiente» se agregaron a la API de sesión de medios para organizar la navegación entre las diapositivas anterior y siguiente.
  • Se agregó una nueva sintaxis para las pseudoclases «:nth-child(an + b)» y «:nth-last-child()» para permitir obtener un selector para filtrar previamente los elementos secundarios antes de realizar la selección principal «An+B «.
    Se han realizado mejoras en las herramientas para desarrolladores web.
  • Se ha agregado compatibilidad con la especificación CSS Color Level 4 y sus nuevos espacios de color y paletas al panel Estilos.
  • La compatibilidad con nuevos espacios de color y la capacidad de convertir entre diferentes formatos de color se ha agregado a la herramienta para determinar el color de píxeles arbitrarios («cuentagotas»).
  • El depurador de JavaScript tiene un panel de control de punto de interrupción rediseñado.

¿Como instalar Google Chrome 111 en Linux?

Si estás interesado en poder instalar esta nueva versión de este navegador web y aún no lo tienes instalado, puedes visitar la siguiente publicación en donde te enseñamos a como poder instalarlo en algunas distribuciones de Linux.

El enlace es este. 

from Linux Adictos https://ift.tt/CyopIB2
via IFTTT

Clonezilla Live 3.0.3 llega con Linux 6.1, mejoras y mas

clonezilla

Clonezilla es un software libre de recuperación

Se presenta el lanzamiento de la distribución Linux Clonezilla Live 3.0.3, diseñada para la clonación rápida de discos (solo se copian los bloques usados). La nueva versión incluye importantes mejoras de las cuales se destacan las del mecanismo LUKS, asi como tambien la actualización del mecanismo initramfs, actualizaciones y más.

Para quienes desconocen de esta distribución, deben saber que se basa en Debian GNU/Linux y en su trabajo utiliza el código de proyectos como DRBL, Partition Image, ntfsclone, partclone, udpcast.

Es arrancable desde CD/DVD, USB Flash y red (PXE). LVM2 y FS soportados ext2, ext3, ext4, reiserfs, reiser4, xfs, jfs, btrfs, f2fs, nilfs2, FAT12, FAT16, FAT32, NTFS, HFS +, UFS, minix, VMFS3 y VMFS5 (VMWare ESX).

En Clonezilla existe un modo de clonación masiva a través de la red, que incluye la transmisión de tráfico en modo multidifusión, que permite clonar simultáneamente el disco de origen en un gran número de máquinas cliente, además de que es posible tanto clonar de un disco a otro como crear copias de seguridad guardando una imagen de disco en un archivo. Es posible la clonación a nivel de discos completos o particiones individuales.

Hay un modo de clonación masiva en modo de multidifusión, que le permite clonar simultáneamente el disco de origen en un gran número de máquinas cliente.

Principales novedades de Clonezilla Live 3.0.3

Esta nueva versión que se presenta de Clonezilla Live 3.0.3, llega sincronizada con la base del paquete Debian Sid a partir del 12 de febrero, junto con la cual podremos encontrar que se suministra con el kernel de Linux actualizado a la rama 6.1 (había un kernel 6.0).

Por la parte de los cambios que se implementan en esta nueva versión, podremos encontrar que el menú de recuperación muestra la opción «-j2», deshabilitada por defecto, ademas de que el menú Guardar muestra la partición de intercambio, que ahora se puede guardar como particiones de datos normales. Hay dos modos de guardado disponibles: guardar solo los metadatos (UUID/etiqueta de partición) y crear un volcado completo con la utilidad dd.

Otro de los cambios que se destaca de esta nueva versión de Clonezilla Live 3.0.3, es el soporte mejorado para configuraciones con múltiples dispositivos encriptados LUKS.

Tambien se destaca que el kit de herramientas Partclone se movió a la versión 0.3.23, que actualizó el código para admitir btrfs y setterm aplicó la opción «–powersave off» para evitar que la consola se quede en blanco.

Por otra parte, tambien podremos encontrar que se agregó el soporte para la utilidad mkinitcpio al mecanismo de actualización de initramfs, gracias al cual fue posible resolver los problemas con la restauración de Arch y Manjaro Linux.

De los demas cambios que se destacan de esta nueva versión de Clonezilla Live 3.0.3

  • Se incluye una nueva utilidad ocs-live-ver para mostrar la versión de Clonezilla Live.
    La utilidad ocs-bttrack ha sido reemplazada por opentracker, ya que Python 2 ha quedado obsoleto de Debian Sid.
    La utilidad de prueba de memoria Memtest86+ se ha actualizado a la versión 6.00.
  • Se soluciono el problema con Live-config que no se parcheó debido a que se lanzó un upstream más nuevo.
  • Se solucionó un problema sobre la conversión de imágenes a formato BT.
  • Solucion al problema en los dispositivos LUKS en crypttab de initramfs que pueden ser más de 1

 

Finalmente si quieres conocer más al respecto sobre este lanzamiento, puedes consultar los detalles del anuncio en el siguiente enlace.

Descargar Clonezilla Live 3.0.3

Si estás interesado en poder descargar la nueva versión de Clonezilla para poder probarla o realizar de manera inmediata tus respaldos. Basta con que te dirijas a la página web oficial del proyecto y en la sección de descargas encontraremos el enlace para descargar el sistema, o si lo prefieres te dejo el enlace aquí.

El tamaño de la imagen iso de distribución es de 334 MB (i686, amd64).

En cuanto a la cantidad de requisitos para la ejecución de Clonezilla es mínimo, dado que el sistema no cuenta con una interfaz gráfica, por lo que solo está limitada al uso mediante terminal.

from Linux Adictos https://ift.tt/Ff6dR2V
via IFTTT