はてなキーワード: CACHEとは
Programming proficiency necessitates a comprehensive understanding of multifaceted concepts, paradigms, and philosophies that underpin the art and science of software development. The Unix philosophy, with its emphasis on modularity, simplicity, and composability, serves as a foundational ethos for elegant code design. This philosophy advocates for creating small, focused programs that excel at singular tasks, facilitating the construction of complex systems through the judicious composition of these atomic units.
Proficient programmers must possess an encyclopedic knowledge of algorithms and data structures, enabling them to architect solutions with optimal time and space complexity. This encompasses a deep understanding of sorting algorithms (e.g., quicksort, mergesort), searching techniques (binary search, depth-first search), and advanced data structures (red-black trees, B-trees, Fibonacci heaps) The ability to analyze algorithmic efficiency using Big O notation is paramount for creating scalable solutions.
OOP principles—encapsulation, inheritance, and polymorphism—form the bedrock of modern software architecture. Mastery of design patterns (e.g., Singleton, Factory, Observer) and SOLID principles is crucial for creating maintainable and extensible codebases.
The FP paradigm, with its emphasis on immutability and pure functions, offers a powerful approach to managing complexity and facilitating parallel execution. Proficiency in higher-order functions, currying, and monads is essential for leveraging FP's full potential.
Expertise in language-specific advanced features, such as C++'s template metaprogramming or Python's metaclasses, allows for the creation of highly generic and reusable code. Understanding compiler theory and the ability to write domain-specific languages (DSLs) further expands a programmer's capabilities.
In an era of multi-core processors and distributed systems, mastery of concurrent programming models (e.g., actor model, communicating sequential processes) and parallel algorithms is indispensable. This includes proficiency in lock-free data structures, memory models, and synchronization primitives.
A deep understanding of computer architecture, operating systems, and memory management enables the creation of highly optimized, low-level code. This encompasses knowledge of cache coherence protocols, CPU pipeline optimization, and assembly language programming.
In an increasingly interconnected world, a thorough grasp of cryptographic principles, secure coding practices, and common attack vectors (e.g., buffer overflows, SQL injection) is crucial for developing robust and secure systems.
Proficiency in distributed version control systems (e.g., Git) and collaborative development practices (code reviews, continuous integration) is essential for effective team-based software development.
Advanced testing methodologies, including property-based testing, fuzzing, and formal verification techniques, are indispensable for ensuring software reliability and correctness.
In conclusion, the pantheon of programming knowledge extends far beyond mere syntax mastery. It encompasses a rich tapestry of theoretical concepts, practical skills, and philosophical approaches that, when harmoniously integrated, enable the creation of elegant, efficient, and robust software systems. The relentless pursuit of this multifaceted expertise is the hallmark of a truly accomplished programmer.
AIが盛り上がって数年経つが、個人が買えるような価格帯で、良いAI向けのハードが出てこない。
RTX 3090のVRAM24GBを大事に使っているが、そもそもVRAMに入らないモデルの方が多い。
複数のAIを立ち上げるなんてのは、VRAM容量が溢れるので、そもそも動かせない。
動けばNVIDIAの Nsight Systemsなどで遅い所などを探せるが、そこまでいかない。
複数のSSDを仮想メモリにするというのも、RTX 3090のNVLink BridgeでVRAMだけ拡張するなんてのも世の中に出てこない。
Appleもそろそろ出してくるかと思っていたが、M4は普通の順当進化だった。
M2 Ultraはチップtoチップを接続し2.5TB/sを謳ったが、同じチップを繋げたのでいらない機能が倍になっただけだった。
M4 Ultraで、片側のチップをGPU or NPU+帯域の広いGDDR or HBMになればいいが、あまり期待が出来ない。
GPU or NPUのコアが増えたとしても、L2/L3キャッシュの容量が少なすぎる、増やしても距離が遠ければ性能も出ないので、
AppleもAMDのように3D V-CacheでSRAMを積み、Hybrid Bondingで上下の帯域を確保してくれないだろうか
IBMはTelum IIとSpyreを出してきたがエンタープライズ向けなのでパス
Groq社がLLM用LPU、HyperAccel社がLLM用ASICを出して来たが、
Groqは1枚のPCIeカードでは全くメモリ容量が足りず役に立たなそうで、HyperAccelはサーバー前提でこちらも個人から手が出しにくい。
FPGA+HBMが載ったPCIeカードは個人向けには販売できるような価格でもなければ、そもそも販売すらされない。
ジム・ケラー率いるTenstorrentも1枚のPCIeだとメモリが足りないし、Ethernetでなんとかやりくりしようとしているが帯域に引っ張られそうに見える。
NextSilicon社がMaverick-2というIntelligent Compute Accelerator (ICA)というのも出してきたが、HPC向けで個人利用からは遠い。
中国も良いのが出てきていない。
Biren、Fuzhou Rockchip、VeriSilicon、Moore Threads、LinJoWing、Loongson、JingJia Micro、Cambricon、Vastai Technologies、Xiangdixian Computing、Enflame Technology、MetaX、Zhaoxin、Lingjiu Microelectronics、
DengLin Technology、Iluvatar CoreX、Innosilicon、Horizon Robotics、Black Sesame Technologies
docker build コマンドに --pull オプションを指定することで、ベースイメージがローカルにあっても最新バージョンをリモートリポジトリから強制的に取得します。
サンキューchatgpt
docker build --no-cache を使用すると、Dockerはキャッシュを一切使用せず、すべてのステップを再実行します。ただし、ベースイメージに関しては少し異なる動作をします。
docker build --no-cache を使用しても、ベースイメージ(FROM で指定されたイメージ)は一度ローカルにダウンロードされていれば再度ダウンロードしません。
ベースイメージがローカルに存在しない場合は、インターネットからダウンロードされます。
ローカルにすでにある場合は、--no-cache でもそのまま利用されるので、ベースイメージを毎回ダウンロードしているわけではありません。
UbuntuベースのPythonイメージは通常1GB程度になることが多いですが、軽量なイメージ(例えばbookwormやslimタグ)を使用すると、サイズを大幅に削減することができます。
bookworm(Debian 12ベース)は、一般的にパッケージが少ないため、通常の ubuntu イメージよりも軽量です。
例えば、python:3.11-slim-bookworm のようなイメージはかなり小さく抑えられており、数百MBに収まることがあります。
まとめ
docker build --no-cache でも、ベースイメージがローカルにある場合は再ダウンロードされません。
別の人からもあったそうです
二十歳頃から精神科に通って20年弱経つ。時々不安に襲われ、電車でパニックを起こすことがあるので、ヘルプマークを駅でもらった。過呼吸が起きる。そもそも他の人より体力もなく、仕事帰りはフラフラだ。席を譲ってくれるものかとカバンにヘルプマークをつけている。優先席で立つ。
まあ、誰も譲ってはくれないんだな。見た目が人と違うわけではない。40前後、杖もついてない。特別に太っても痩せてもいない。見た目はそりゃ普通だ。パニック起こさない限りは、くたびれたサラリーマン。ただの疲れた人は立っとけ、と。
老いも若いも譲ってくれない。車内で喧嘩が起きて、過呼吸が起きても気にも止めてもらえない。ちらっと見て無視。スマホに戻る。または眠る。構わずに談笑する。ただの人扱いなんだ。
何度もリュックについているヘルプマークをもぎ取られそうになった。改札に向かって歩いていたら、リュックを引っ張るオッサンがいた。振り向いたら恨めしそうにこちらを見ていた。
不眠のひどい顔をしていたときに、何度か譲ってもらったこともあった。同じくらい疲れてた人。きちんとお礼を言って分かれた。何だか申し訳なかった。眠る少しの時間を奪ってしまって。
人の優しさに絶望したいなら、何日間かつけてみることをお勧めする。もう私はつけていない。期待をすると裏切られる。かったるい。
ただの人として、パニックに怯えながら、片道40分、電車に乗る。座っていたらヘルプマークの人や、マタニティマークの人に席を譲る。
2024-03-17
早く来い…俺の高みへ…