Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Aula 18. Linguagens Específicas de Domínio e Autoajuste
Aula 18. Linguagens Específicas de Domínio e Autoajuste
Neste vídeo, o professor Saman Amarasignhe, do departamento EECS do MIT, discute os benefícios do uso de linguagens específicas de domínio (DSLs) e do autotuning na engenharia de desempenho. Ele enfatiza a importância das DSLs, que capturam domínios específicos da área que são difíceis de descrever em linguagens de uso geral, permitindo que os programadores aproveitem o conhecimento dos especialistas do domínio para obter um melhor desempenho. Singh discute a otimização de processos de gráfico usando DSLs, incluindo particionamento de gráfico e a importância da forma do gráfico na computação. Ele apresenta o DSL Halide para processamento de imagem, que permite otimização rápida de código e portabilidade entre máquinas. Ele discute o uso de Halide em vários setores, como Google e Adobe. Por fim, ele destaca a importância de experimentar diferentes abordagens na otimização de código enquanto se concentra no paralelismo, localidade e trabalho redundante.
O vídeo também fala sobre os desafios da engenharia de desempenho e como encontrar os parâmetros ideais para que um programa seja executado com eficiência. O palestrante sugere que o auto-ajuste pode resolver esse problema pesquisando o grande espaço de parâmetros automaticamente para encontrar os valores ideais. Ele observa que a pesquisa exaustiva pode ser impraticável e as soluções baseadas em heurísticas podem não ser ideais. O autotuning, que define um espaço de valores aceitáveis e itera com base nos resultados de desempenho, pode acelerar o processo de encontrar soluções ótimas. O palestrante também discute a aplicação do autotuning na geração de agendamentos para o Try, que foi capaz de produzir agendamentos de forma mais eficiente e eficaz do que a busca exaustiva.
Aula 19. Leiserchess Codewalk
Aula 19. Leiserchess Codewalk
Neste vídeo do YouTube intitulado "19. Leiserchess Codewalk", Helen Xu explica as regras do Lesierchess, um jogo jogado por duas equipes com o objetivo de atirar no rei da equipe adversária ou acertar o seu rei. O jogo tem dois tipos de movimentos, movimentos básicos e golpes, e uma regra Ko que torna um movimento ilegal se desfizer o movimento mais recente do oponente. Xu mergulha em vários aspectos do jogo, incluindo o método de controle de tempo de Fisher, Forsythe-Edwards Notation, Cloud autotester e organização de projetos, avaliando e comparando bots usando classificações Elo, geração de movimento, avaliação estática e algoritmos de pesquisa, como alfa-beta, variação de princípio, poda de subárvore e tabelas de transposição. Ela também aborda a importância da infraestrutura de testes para otimização do programa e do arquivo eval.c, que contém heurísticas que avaliam cada quadrado do tabuleiro com base no tipo de peça e sua cor.
O palestrante também se aprofunda no aspecto de cobertura de laser do jogo, explicando o complicado sistema de gerar todos os movimentos possíveis para uma posição com base na cor do jogador usando uma declaração while-true. Eles também explicam a importância da correção no código e como testá-la, sugerindo a conversão da representação para garantir a correção antes da otimização do desempenho. O palestrante também discute a grande flexibilidade fornecida pela interface Leiserchess UCI, que permite aos usuários editar tabelas e comandos ao seu gosto, e garante aos espectadores que o código morto será limpo e quaisquer outros bugs devem ser relatados para serem corrigidos.
Aula 20. Paralelismo Especulativo e Leiserchess
20. Paralelismo especulativo e Leiserchess
Neste vídeo do YouTube intitulado "20. Paralelismo especulativo e Leiserchess", o instrutor apresenta o conceito de paralelismo especulativo, que é essencialmente adivinhar preventivamente que certas tarefas podem ser executadas em paralelo e podem resultar em código mais rápido. No entanto, o palestrante adverte que esse código não é determinístico e só deve ser usado quando necessário, além de alertar contra o uso nos casos em que um código serial melhor poderia ser usado. Uma parte significativa do vídeo gira em torno da discussão de buscas alfa-beta paralelas, que envolvem a poda da árvore do jogo para otimizar o tempo de busca, e também fala sobre diferentes estruturas de dados e heurísticas usadas no processo de avaliação de algoritmos de busca, principalmente para evitar ciclos e inatividade procurar. O vídeo também aborda os benefícios do aprofundamento iterativo e como ele leva a uma melhor ordenação de movimentos para pesquisas, além de discutir o hash Zobrist, uma técnica de otimização usada em algoritmos de pesquisa envolvendo um valor de hash exclusivo para cada posição no tabuleiro de xadrez com as mesmas peças.
Este vídeo também discute várias técnicas de otimização para mecanismos de xadrez, como tabelas de transposição, reduções de movimentos tardios e uso de bitboards para geração de movimentos. O palestrante também fala sobre o tema "paralelismo especulativo e Leiserchess", onde aconselha os programadores a avaliar se um movimento afeta o caminho do laser e ir atrás da "cobertura do laser". O palestrante sugere deixar representações antigas no código e usar programas para testar as mudanças. Eles também desenvolveram uma heurística para medir o quão perto um laser está do Rei em Leiserchess. Mais sugestões de otimização incluem encontrar uma maneira melhor de avaliar a proximidade do oponente ao laser do jogador e otimizar a classificação dos movimentos. Por fim, é discutida a importância de refatorar e testar corretamente o código.
Aula 21. Ajustando um Algoritmo TSP
Aula 21. Ajustando um Algoritmo TSP
Este vídeo do YouTube enfoca o problema do caixeiro viajante (TSP), um problema NP-difícil que existe há muitos anos. O palestrante passa por vários algoritmos e abordagens para otimizar o espaço de pesquisa e podar a pesquisa para tornar o algoritmo TSP mais rápido, como implementar um melhor algoritmo de spanning tree mínimo, habilitar a otimização do compilador e modificar o cálculo da distância para usar um algoritmo de pesquisa de tabela. A necessidade de limitar o espaço de pesquisa e pensar criativamente para otimizar a velocidade e o desempenho dos programas é enfatizada ao longo do vídeo, que fornece informações valiosas sobre como resolver o TSP e outros problemas relacionados.
Neste vídeo, o palestrante discute várias técnicas para otimizar o algoritmo TSP, como cache, avaliação preguiçosa e armazenamento de dados em uma tabela hash, enfatizando a importância dos dados empíricos sobre a intuição. Ele também compartilha sua experiência com a solução do problema TSP e a importância da engenharia de desempenho em sua profissão. O palestrante fornece informações sobre o processo de otimização de código, incluindo desenvolvimento incremental e geração recursiva, e incentiva o público a usar essas técnicas, pois são fáceis de implementar. Por fim, o palestrante expressa sua gratidão por buscar engenharia de desempenho e desenvolver algoritmos que aprimoram vários serviços do Google, bem como pelas amizades que fez ao longo de sua carreira.
Aula 22. Otimização de Grafos
Aula 22. Otimização de Grafos
O vídeo discute o conceito de gráfico, várias formas de representá-lo e técnicas de otimização para melhorar a eficiência dos algoritmos de gráfico. O palestrante explora aplicações de gráficos em relações de modelagem e encontrando o caminho mais curto ou a maneira mais barata de chegar a um destino, juntamente com formas ideais de armazenar gráficos na memória para adicionar, excluir ou escanear arestas. O vídeo também aborda a otimização do desempenho do cache em buscas de grafos usando vetores de bits, junto com a implementação do algoritmo de busca paralela em largura com somas de prefixo para filtrar valores negativos. Por fim, o palestrante fala sobre seus experimentos em um grafo aleatório com dez milhões de vértices e cem milhões de arestas, enfatizando a importância do determinismo no código para garantir confiabilidade e consistência.
O vídeo também discute várias técnicas de otimização de grafos, incluindo a implementação do operador min direito, código BFS paralelo determinístico, técnica de otimização de direção e compactação de grafos. A técnica de otimização de direção envolve uma abordagem de baixo para cima para explorar as arestas de entrada quando a fronteira é grande e foi aplicada a outros algoritmos de grafos, enquanto a compactação de grafos visa reduzir o uso de memória codificando as diferenças entre arestas consecutivas e reduzindo o número de bits usados para armazenar esses valores. Além disso, o vídeo enfatiza a importância de testar as otimizações em diferentes tipos de gráficos para determinar onde funcionam bem e onde não funcionam.
Aula 23. Alto Desempenho em Linguagens Dinâmicas
Aula 23. Alto Desempenho em Linguagens Dinâmicas
Os desafios de escrever código de desempenho crítico em linguagens de tipagem dinâmica de alto nível são discutidos neste vídeo, com foco na linguagem de programação Julia. Julia visa fornecer recursos interativos de alto nível, ao mesmo tempo em que oferece o mesmo nível de desempenho de linguagens de nível inferior, como C e Fortran. A capacidade de Julia de escrever código genérico que funciona para vários tipos, metaprogramação integrada e caminhos de código otimizados o torna mais rápido que o Python em situações como a geração de grandes matrizes vandermonde e código otimizado para polinômios específicos em funções especiais. Além disso, os caminhos de código otimizados de Julia alocam caixas muito mais rapidamente do que o Python, tornando-o uma escolha melhor para lidar com estruturas de dados dinâmicos, como matrizes. Por fim, o vídeo discute os recursos de despacho múltiplo e inferência de tipo de Julia, permitindo que diferentes versões de uma função para diferentes argumentos e tipos sejam inferidos recursivamente.
Neste vídeo também explica como funciona o polimorfismo paramétrico no Julia e como ele permite criar infinitas famílias de tipos. Ao definir um tipo parametrizado, como um tipo de ponto com parâmetros para X e Y, e definir esses parâmetros para um subtipo de real, pode-se criar todo um conjunto de tipos que podem ser "instanciados" com um determinado subtipo. Além disso, o palestrante discute os recursos e as bibliotecas de Julia para implementação de encadeamento, coleta de lixo e paralelismo de memória distribuída, bem como sua ampla variedade de suporte a Unicode para identificadores. Além disso, é enfatizada a importância de se ter variáveis com nomes próprios e descritivos, e o palestrante menciona um projeto que está explorando a fusão da tecnologia Julia com a tecnologia Silk que pode levar a novos desenvolvimentos no futuro.
Richard Feynman: As máquinas podem pensar?
Richard Feynman: As máquinas podem pensar?
No vídeo "Richard Feynman: as máquinas podem pensar?", Feynman argumenta que, embora as máquinas sejam melhores que os humanos em muitas coisas, como aritmética, resolução de problemas e processamento de grandes quantidades de dados, as máquinas nunca alcançarão pensamento e inteligência semelhantes aos humanos. As máquinas lutam para reconhecer imagens devido a complexidades como variações de luz e distância e, embora os computadores reconheçam padrões, eles não podem descobrir novas ideias e relacionamentos sozinhos. Feynman também discute a eficácia do uso de máquinas para previsão do tempo e outras tarefas complexas, citando o exemplo de um homem chamado Lumic que usou uma lista de heurísticas para vencer o campeonato naval na Califórnia. Para fazer máquinas inteligentes, Feynman sugere que os desenvolvedores evitem distorções psicológicas que evoluem sorrateiramente e, em vez disso, concentrem-se em encontrar novas maneiras de evitar o trabalho, já que as máquinas estão mostrando as fraquezas necessárias da inteligência.
De olho na IA: Ilya Sutskever
De olho na IA: Ilya Sutskever
Ilya Sutskever discute uma variedade de tópicos relacionados à IA neste vídeo. Ele compartilha seu interesse inicial em IA e aprendizado de máquina e descreve como sua colaboração com Jeff Hinton levou ao desenvolvimento da rede neural convolucional AlexNet. Sutskever também fala sobre os desafios e limitações dos modelos de linguagem, argumentando que eles fazem mais do que apenas aprender regularidades estatísticas e que representar ideias e conceitos é uma conquista importante. Ele também discute a necessidade de grandes quantidades de dados e processadores mais rápidos no treinamento de IA e sugere a possibilidade de uma forma de democracia de alta largura de banda, na qual os indivíduos inserem dados para especificar como os sistemas devem se comportar.
Matemática para Aprendizado de Máquina - Cálculo Multivariado - Especialização Online Completa
Matemática para Aprendizado de Máquina - Cálculo Multivariado - Especialização Online Completa
Parte 1
Parte 2
Parte 3
Parte 4
Série de alto-falantes ETL: Ilya Sutskever, OpenAI
Série de alto-falantes ETL: Ilya Sutskever, OpenAI
Em um vídeo do YouTube intitulado "ETL Speaker Series: Ilya Sutskever, OpenAI", Ilya Sutskever, cofundador e cientista-chefe da OpenAI, discute tópicos como grandes modelos de linguagem, a premissa por trás dos neurônios artificiais, a consciência na IA e a estrutura financeira da organizações de IA sem fins lucrativos. Sutskever enfatiza a importância do progresso técnico e de boas pesquisas para o sucesso da OpenAI e incentiva os alunos interessados em IA e empreendedorismo a explorar suas ideias únicas. Ele também prevê que as melhorias em várias camadas da pilha de aprendizado profundo e o treinamento especializado causarão um grande impacto no futuro. Por fim, os anfitriões agradecem a Sutskever por sua discussão perspicaz e o convidam para eventos futuros, ao mesmo tempo em que direcionam os espectadores ao site da Stanford e-corner para obter mais recursos sobre empreendedorismo e inovação.